2011/09/29

Cocoa Emacs 23のIME patchでPreferred Languagesを参照させる


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から取得可能です。


このパッチは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 件のコメント:

コメントを投稿