Mac OS X 上でのEmacsには、Mac OS X導入当初から「Carbon Emacs パッケージ」を愛用させていただいていました。
しかしCarbon Emacsの開発が2010年で終了したこと、また活用しているEmacs lispライブラリがEmacs 23をベースとし始めたことからEmacs 23へ移行することにしました。Mac OS X利用者にとって、Emacs 23はCocoaベースとなった点が大きな特徴です。
Emacs 23の環境構築には、「紹介マニア」さんの「Emacs23 (Cocoa Emacs) 入門から中毒まで」が大変参考になります。
この記事でも紹介されていますが、EmacsでMac OS XのIMEを利用する場合、IMEパッチを適用すると便利です。このパッチを適用することで、Emacs lispからIMEを制御できるようになります。「Carbon Emacsパッケージ」でも、このパッチは適用されていました。
このIMEパッチには、現在利用している環境の言語状況を調べて、制御対象とするIMEを決定するためのコードが含まれています。多くの場合、このコードは有益に動作するでしょう。
しかし、私は「英語環境でOSのインストールを行い、普段の利用も英語環境のまま。但し特定のアプリケーションだけは日本語環境で利用する」という特殊な運用を行なっているため、上記コードでは日本語IMEを制御対象にすることが出来ませんでした。
そこで、System PreferencesのLanguage &TextにあるLanguageタブで設定した言語を参照し、制御対象のIME決定するパッチを作成しました。このパッチはhttps://gist.github.com/1250669から取得可能です。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/macim.m b/src/macim.m | |
index d4444db..515cf25 100644 | |
--- a/src/macim.m | |
+++ b/src/macim.m | |
@@ -100,7 +100,14 @@ DEFUN ("mac-toggle-input-source", Fmac_toggle_input_source, | |
} | |
else | |
{ | |
- NSString *locale = [[NSLocale currentLocale] localeIdentifier]; | |
+ NSString *locale; | |
+ NSArray *languages = [NSLocale preferredLanguages]; | |
+ if (languages != nil) { | |
+ locale = [languages objectAtIndex:0]; | |
+ } else { | |
+ locale = [[NSLocale currentLocale] | |
+ objectForKey:NSLocaleLanguageCode]; | |
+ } | |
is = TISCopyInputSourceForLanguage(locale); | |
} | |
if (is) TISSelectInputSource(is); |
このパッチはemacs-inline.patch の r573を当てた環境へ適用してください。本パッチはMacemacsjp-usersへも送らせて頂きました。
パッチを適用することで、Englishでインストールされた(正確にはSystemの環境がen_USに設定された)環境であっても、Languageを「日本語」へ設定することで、日本語IMEを使えるようになります。
System、LangugaeともにEnglishに設定したまま、特定アプリケーションの言語設定だけを変更したい場合には、Language Switcherの利用が便利です。しかし残念ながら、このアプリケーションはEmacs 23へは適用できませんでした。
もしSystem、LanguageともEnglishに保ったまま、Emacs23から日本語IMEを制御させたい場合、defaultコマンドでEmacsの言語環境を設定するのが良いでしょう。具体的には、Termina.appなどから以下の様に設定します。
defaults write org.gnu.Emacs AppleLanguages "(ja, en)"
このdefaultコマンドで言語環境を設定する方法はThe iPhone Development Playgroundさんの「MacOSXで、Mail.appを英語環境で実行する方法」を参考にさせて頂きました。
最後に、「瀬戸亮平」さんの「[Mac] Cocoa Emacs のフォント設定について」を参考にさせて頂き、フォント設定を行うことで、無事Carbon Emacsで住み慣れた環境を構築することが出来ました。
上記、貴重なページを公開してくださった皆様へ感謝いたします。
0 件のコメント:
コメントを投稿