メインメニューを開く

差分

Xamarin.MacでNSTextViewのスマートクォートを無効化する

477 バイト追加, 2019年5月22日 (水) 05:11
NSTextViewのスマートクォートを無効化したい。
[[Xamarin.Mac]]で開発している社内アプリの設定画面に、アプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。 たとえば以下のようなAppleScriptのダブルクォート部分がダメになる。<source lang="applescript">tell application "Safari" activateend tell</source> == 解決策:OSレベルで止める 解決策:OSレベルで無効化する ==スマートクォートは[[Mac OS X]]に標準搭載されているビッグなお世話なゴミ機能であり、OSレベルで根本から止めるのであれば以下の手順になる。に標準搭載されているビッグなお世話なゴミ機能であり、[[OS]]レベルで根本から止めるのであれば以下の手順になる。
* システム環境設定
* キーボード
== 解決策:NSTextView単位で無効化する ==
OSレベルでの解決方法が確実なのだろうが今から社内にある500台くらいの[[Xamarin.Mac]]で開発している社内アプリの設定画面にアプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったのだが、スマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。に設定して回るとか正気の沙汰とは思えないので自動アップデートを搭載したアプリ単位で解決したい。
XIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォートがあったわけだが、なぜかこのチェックを付けても外しても無効化できない。古いXIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォート関連の設定があったわけだが、なぜかこのチェックを付けても外しても無効化できない。古い[[Mac OS X]]では動くようだが最近のやつはダメなようだ。
上記と似たようなことを[[プログラム]]から叩いてやると最近の[[Mac OS X]] ([[Yosemite]])でも無効化できた。なぜかは知らん。たぶんこの方法は[[MonoMac]]でも行けると思うが試してはいない。
// disable Smart Quotes
// よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
_startupScript_nsTextView.AutomaticDashSubstitutionEnabled = false; _startupScript_nsTextView.AutomaticDataDetectionEnabled = false; _startupScript_nsTextView.AutomaticLinkDetectionEnabled = false; _startupScript_nsTextView.AutomaticQuoteSubstitutionEnabled = false; _startupScript_nsTextView.AutomaticSpellingCorrectionEnabled = false; _startupScript_nsTextView.AutomaticTextReplacementEnabled = false; _startupScript_nsTextView.EnabledTextCheckingTypes = 0;
}
}
匿名利用者