「Xamarin.MacでNSTextViewのスマートクォートを無効化する」の版間の差分
imported>Administrator (ページの作成:「 == 概要 == NSTextViewのスマートクォートを無効化したい。 == 解決策:OSレベルで止める == スマートクォートはMac OS Xに標準搭...」) |
imported>Administrator 細 (Administrator がページ「Xamarin.Mac/NSTextViewでスマートクォートを無効化する」を「Xamarin.MacでNSTextViewのスマートクォートを無効化する」に移動しました) |
||
(2人の利用者による、間の6版が非表示) | |||
3行目: | 3行目: | ||
NSTextViewのスマートクォートを無効化したい。 | NSTextViewのスマートクォートを無効化したい。 | ||
− | == | + | [[Xamarin.Mac]]で開発している社内アプリの設定画面に、アプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。 |
− | スマートクォートは[[Mac OS X]] | + | |
+ | たとえば以下のようなAppleScriptのダブルクォート部分がダメになる。 | ||
+ | <source lang="applescript"> | ||
+ | tell application "Safari" | ||
+ | activate | ||
+ | end tell | ||
+ | </source> | ||
+ | |||
+ | == 解決策:OSレベルで無効化する == | ||
+ | スマートクォートは[[Mac OS X]]に標準搭載されているビッグなお世話なゴミ機能であり、[[OS]]レベルで根本から止めるのであれば以下の手順になる。 | ||
* システム環境設定 | * システム環境設定 | ||
* キーボード | * キーボード | ||
13行目: | 22行目: | ||
== 解決策:NSTextView単位で無効化する == | == 解決策:NSTextView単位で無効化する == | ||
− | [[ | + | OSレベルでの解決方法が確実なのだろうが今から社内にある500台くらいの[[Mac]]に設定して回るとか正気の沙汰とは思えないので自動アップデートを搭載したアプリ単位で解決したい。 |
− | + | 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を設定してみた | ||
− | + | _nsTextView.AutomaticDashSubstitutionEnabled = false; | |
− | + | _nsTextView.AutomaticDataDetectionEnabled = false; | |
− | + | _nsTextView.AutomaticLinkDetectionEnabled = false; | |
− | + | _nsTextView.AutomaticQuoteSubstitutionEnabled = false; | |
− | + | _nsTextView.AutomaticSpellingCorrectionEnabled = false; | |
− | + | _nsTextView.AutomaticTextReplacementEnabled = false; | |
− | + | _nsTextView.EnabledTextCheckingTypes = 0; | |
} | } | ||
} | } |
2019年5月22日 (水) 05:11時点における最新版
目次
概要編集
NSTextViewのスマートクォートを無効化したい。
Xamarin.Macで開発している社内アプリの設定画面に、アプリ起動時に実行するAppleScriptを入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう不具合が発生した。
たとえば以下のようなAppleScriptのダブルクォート部分がダメになる。
tell application "Safari"
activate
end tell
解決策:OSレベルで無効化する編集
スマートクォートはMac OS Xに標準搭載されているビッグなお世話なゴミ機能であり、OSレベルで根本から止めるのであれば以下の手順になる。
- システム環境設定
- キーボード
- ユーザ辞書
- スマート引用符とスマートダッシュを使用 (このチェックをはずす)
これにより全ての文字入力でビッグなお世話なスマートクォートが動かなくなって幸せになれる。
解決策:NSTextView単位で無効化する編集
OSレベルでの解決方法が確実なのだろうが今から社内にある500台くらいのMacに設定して回るとか正気の沙汰とは思えないので自動アップデートを搭載したアプリ単位で解決したい。
XIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォート関連の設定があったわけだが、なぜかこのチェックを付けても外しても無効化できない。古いMac OS Xでは動くようだが最近のやつはダメなようだ。
上記と似たようなことをプログラムから叩いてやると最近のMac OS X (Yosemite)でも無効化できた。なぜかは知らん。たぶんこの方法はMonoMacでも行けると思うが試してはいない。
public partial class PreferenceWindowController : MonoMac.AppKit.NSWindowController
{
public override void WindowDidLoad()
{
base.WindowDidLoad();
// disable Smart Quotes
// よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
_nsTextView.AutomaticDashSubstitutionEnabled = false;
_nsTextView.AutomaticDataDetectionEnabled = false;
_nsTextView.AutomaticLinkDetectionEnabled = false;
_nsTextView.AutomaticQuoteSubstitutionEnabled = false;
_nsTextView.AutomaticSpellingCorrectionEnabled = false;
_nsTextView.AutomaticTextReplacementEnabled = false;
_nsTextView.EnabledTextCheckingTypes = 0;
}
}