2007年5月26日土曜日

Emacsでruby-electric-modeが有効になっていると、日本語変換キーが効かなくなる

ruby-electric.el は構文を自動補完してくれるもの。例えば if と入力してスペースを打つと、自動的に end を入力してくれる。あるととても便利なのだけれど、日本語を入力して変換しようとすると、変換キーがruby-electric.elに奪われているみたいで、変換できない。
しかたないので、日本語入力時にはruby-electric-modeを切って、日本語入力OFFで再び有効になるようにちょこちょこ修正。elispをよくわかっていないまま。もっとスマートな方法はないものか・・・
(defun ime-onoff ()
"IME ON/OFF トグル動作する。ruby-electric-mode が変換キーを
奪ってしまうので、日本語入力時は無効にする。"
(interactive)
(if ruby-electric-mode
(progn
(ruby-electric-mode nil)
(toggle-input-method))
(if (string= major-mode "ruby-mode")
(progn
(ruby-electric-mode t)
(toggle-input-method))
(toggle-input-method))))
と書いて、~/.emacsに貼り付け。
キー割り当てを
(global-set-key [zenkaku-hankaku] 'ime-onoff)
として完成。とりあえず、望みどうりに動いているのでよしとするw

ちなみにruby-electric.elを使って実際にどう動くかはこちらに動画が公開されている。

0 件のコメント: