差分

ナビゲーションに移動 検索に移動

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

2,553 バイト追加, 2016年3月30日 (水) 06:36
ページの作成:「 == 概要 == NSTextViewのスマートクォートを無効化したい。 == 解決策:OSレベルで止める == スマートクォートはMac OS Xに標準搭...」

== 概要 ==
NSTextViewのスマートクォートを無効化したい。

== 解決策:OSレベルで止める ==
スマートクォートは[[Mac OS X]]に標準搭載されているビッグなお世話なゴミ機能であり、OSレベルで根本から止めるのであれば以下の手順になる。
* システム環境設定
* キーボード
* ユーザ辞書
* スマート引用符とスマートダッシュを使用 (このチェックをはずす)

これにより全ての文字入力でビッグなお世話なスマートクォートが動かなくなって幸せになれる。

== 解決策:NSTextView単位で無効化する ==
[[Xamarin.Mac]]で開発している社内アプリの設定画面にアプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったのだが、スマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。

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

上記と似たようなことを[[プログラム]]から叩いてやると最近の[[Mac OS X]] ([[Yosemite]])でも無効化できた。なぜかは知らん。たぶんこの方法は[[MonoMac]]でも行けると思うが試してはいない。
<source lang="csharp">
public partial class PreferenceWindowController : MonoMac.AppKit.NSWindowController
{
public override void WindowDidLoad()
{
base.WindowDidLoad();

// disable Smart Quotes
// よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
_startupScript.AutomaticDashSubstitutionEnabled = false;
_startupScript.AutomaticDataDetectionEnabled = false;
_startupScript.AutomaticLinkDetectionEnabled = false;
_startupScript.AutomaticQuoteSubstitutionEnabled = false;
_startupScript.AutomaticSpellingCorrectionEnabled = false;
_startupScript.AutomaticTextReplacementEnabled = false;
_startupScript.EnabledTextCheckingTypes = 0;
}
}
</source>

== 関連項目 ==
* [[Xamarin.Mac/AppleScriptを実行する]]
* [[MonoMac/AppleScriptを実行する]]

== 参考文献 ==
{{reflist}}

{{stub}}

[[category:Xamarin.Mac]]
[[category:MonoMac]]
匿名利用者

案内メニュー