Mac OS XのEmacs24で日本語入力時にカーソルの色を変える

ぼくは、「macports版のEmacsとemacs-mac patch版のEmacs」のような方法で自分のEmacs環境を構築していますが、なかなかMac OS Xの日本語入力との連携ができませんでした。

Emacs使いの方々は、OS標準のIME/FEP(JapaneseIM)なんて使っておらず、Emacs内で完結した日本語入力環境を使っている方が多数なようで、あまりリソースも見つかりませんでした。

が、

Macに最新バージョンのEmacsをインストール

を参考にちょっといじったら、とりあえずいちおう納得のいく振る舞いになったのでアップしておきます。

 (if (fboundp 'mac-input-source)
     (progn
       (defun my-mac-selected-keyboard-input-source-chage-function ()
         (let ((mac-input-source (mac-input-source)))
           (set-cursor-color
            (if (or (string-match "com.apple.inputmethod.Kotoeri.Roman" mac-input-source)
                    (string-match "com.apple.keylayout.US" mac-input-source))
                "white" "Red"))))
       ;; hook for cursor
       (add-hook 'mac-selected-keyboard-input-source-change-hook
                 'my-mac-selected-keyboard-input-source-chage-function)
       ;; timer for cursor
       (setq-default global-cursor-color-timer
                     (run-with-idle-timer
                      0.03
                      t
                      'my-mac-selected-keyboard-input-source-chage-function)))
   ;; if not mac
   (set-cursor-color "white"))

scratchバッファで

(mac-input-source)

をC-jで評価して、

com.apple.inputmethod.Kotoeri.Roman
com.apple.inputmethod.Kotoeri.japanese

みたいなんが返ってきたら使えます(それにしてもこのファイル名は、まだ「ことえり」なんですね……。関係ないけど、JapaneseIM、使いづらくってむかつく:-()。

ネタ元との違いはアイドルタイマーによる監視です。これを入れておかないと、ふっとカーソル色が英数字のモードに戻ってしまうことがあり、信用できなくなってしまうので。

ジャンル: EmacsMacことえり/JapaneseIM