「Xamarin.MacでNSTextViewのスマートクォートを無効化する」の版間の差分

imported>Administrator
ページの作成:「 == 概要 == NSTextViewのスマートクォートを無効化したい。 == 解決策:OSレベルで止める == スマートクォートはMac OS Xに標準搭...」
 
imported>Administrator
 
(2人の利用者による、間の6版が非表示)
3行目: 3行目:
NSTextViewのスマートクォートを無効化したい。
NSTextViewのスマートクォートを無効化したい。


== 解決策:OSレベルで止める ==
[[Xamarin.Mac]]で開発している社内アプリの設定画面に、アプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。
スマートクォートは[[Mac OS X]]に標準搭載されているビッグなお世話なゴミ機能であり、OSレベルで根本から止めるのであれば以下の手順になる。
 
たとえば以下のようなAppleScriptのダブルクォート部分がダメになる。
<source lang="applescript">
tell application "Safari"
    activate
end tell
</source>
 
== 解決策:OSレベルで無効化する ==
スマートクォートは[[Mac OS X]]に標準搭載されているビッグなお世話なゴミ機能であり、[[OS]]レベルで根本から止めるのであれば以下の手順になる。
* システム環境設定
* システム環境設定
* キーボード
* キーボード
13行目: 22行目:


== 解決策:NSTextView単位で無効化する ==
== 解決策:NSTextView単位で無効化する ==
[[Xamarin.Mac]]で開発している社内アプリの設定画面にアプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったのだが、スマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。
OSレベルでの解決方法が確実なのだろうが今から社内にある500台くらいの[[Mac]]に設定して回るとか正気の沙汰とは思えないので自動アップデートを搭載したアプリ単位で解決したい。


XIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォートがあったわけだが、なぜかこのチェックを付けても外しても無効化できない。古い[[Mac OS X]]では動くようだが最近のやつはダメなようだ。
XIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォート関連の設定があったわけだが、なぜかこのチェックを付けても外しても無効化できない。古い[[Mac OS X]]では動くようだが最近のやつはダメなようだ。


上記と似たようなことを[[プログラム]]から叩いてやると最近の[[Mac OS X]] ([[Yosemite]])でも無効化できた。なぜかは知らん。たぶんこの方法は[[MonoMac]]でも行けると思うが試してはいない。
上記と似たようなことを[[プログラム]]から叩いてやると最近の[[Mac OS X]] ([[Yosemite]])でも無効化できた。なぜかは知らん。たぶんこの方法は[[MonoMac]]でも行けると思うが試してはいない。
27行目: 36行目:
             // disable Smart Quotes  
             // disable Smart Quotes  
             // よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
             // よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
             _startupScript.AutomaticDashSubstitutionEnabled = false;
             _nsTextView.AutomaticDashSubstitutionEnabled = false;
             _startupScript.AutomaticDataDetectionEnabled = false;
             _nsTextView.AutomaticDataDetectionEnabled = false;
             _startupScript.AutomaticLinkDetectionEnabled = false;
             _nsTextView.AutomaticLinkDetectionEnabled = false;
             _startupScript.AutomaticQuoteSubstitutionEnabled = false;
             _nsTextView.AutomaticQuoteSubstitutionEnabled = false;
             _startupScript.AutomaticSpellingCorrectionEnabled = false;
             _nsTextView.AutomaticSpellingCorrectionEnabled = false;
             _startupScript.AutomaticTextReplacementEnabled = false;
             _nsTextView.AutomaticTextReplacementEnabled = false;
             _startupScript.EnabledTextCheckingTypes = 0;
             _nsTextView.EnabledTextCheckingTypes = 0;
         }
         }
     }
     }