環境はWindows7、gnupack_devel-9.01の"GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) of 2012-07-16 on GNUPACK"。
他の環境ではIME関連の関数が違うかも知れません。
インクリメンタル検索でもanythingでもmigemoを使うので、ミニバッファ入力時に日本語入力である必要性がなくなりました。(anythingでmigemoを使う方法は過去の記事にあります)
- ミニバッファ入力時にはIMEを必ずOFFにする
- ミニバッファから復帰時には直前にIMEがONだった場合のみONに戻す
なコードのメモ。
(defvar my-temp-ime-mode nil) (defun my-into-minibuffer-func() (setq my-temp-ime-mode (ime-get-mode)) (ime-force-off)) (defun my-quit-minibuffer-func() (if my-temp-ime-mode (ime-force-on)) (setq my-ime-temp nil)) ;; 通常のミニバッファ (add-hook 'minibuffer-setup-hook 'my-into-minibuffer-func) (add-hook 'minibuffer-exit-hook 'my-quit-minibuffer-func) ;; インクリメンタル検索 (add-hook 'isearch-mode-hook 'my-into-minibuffer-func) (add-hook 'isearch-mode-end-hook 'my-quit-minibuffer-func)
(minibuffer-setup-hookに引っ掛ける関数にエラー置いたまま再起動したらエライ目に遭うので注意。「保存時にバイトコンパイルする」設定だった場合、emacs -qで起動して編集しても.elをバイトコンパイルするか.elcを消さないと反映されません!)