以前の記事で、Windows/msys2の環境で Emacs25 を使えるようにした。
その時に日本語入力(IME)のON/OFF時にカーソルの色を変更するように設定したつもりだったが、うまく動作していなかったようで、今回動くようにしたので備忘録を残す。
尚、参考[1.]の情報が参考になった。
1)入力メソッドを IME に設定
初期設定では default-input-method は “japanese” に設定されているので “W32-IME” に変更する。これを設定することにより、入力メソッドとして IME が使われるようになり、C-\
(初期設定で toggle-input-medhod コマンドが割当てられている)を押して IME の on/off が切り替わる。
(setq default-input-method "W32-IME")
2)IMEのon/off時にカーソル色を変更するフック登録
IMEのonになったときとoffになった時に呼ばれるフックを登録しカーソル色を変更。
(add-hook 'w32-ime-on-hook '(lambda () (set-cursor-color "coral3")))
(add-hook 'w32-ime-off-hook '(lambda () (set-cursor-color "orchid")))
3) [kanji] キーイベントの有効化
当初、上記1)2)の設定はしていたが、これだけでは動かないようで、下記設定を追加。
(global-set-key [kanji] 'toggle-input-method)
初期設定では [kanji] には ignore が割り当てられているので変更する。これを設定しなくても「半角/全角」キーを押せば IME の on/off は当然切り替わるが、これを設定により、「半角/全角」キーを押して IME の状態を切り替えたときに、上記のフックが呼ばれるようなる。
又 [kanji] キーイベントは「半角/全角」キーを押したときだけでなく、マウスで IME の状態を切り替えたときなどにも発生し、そのときにもフックが呼ばれる。
初期設定のまとめ
下記を初期設定に追加。
尚、私はinit-loaderを利用しており、~/.emacs.d/inits/windows-01_ime.el
ファイルを作成。
;;
;; Windows IME設定
;;
(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[--]")
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(w32-ime-initialize)
;; 日本語入力時にカーソルの色を変える設定 (色は適宜変えてください)
(global-set-key [kanji] 'toggle-input-method)
(add-hook 'w32-ime-on-hook '(lambda () (set-cursor-color "coral3")))
(add-hook 'w32-ime-off-hook '(lambda () (set-cursor-color "orchid")))
;; 以下はお好みで設定してください
;; 全てバッファ内で日本語入力中に特定のコマンドを実行した際の日本語入力無効化処理です
;; ミニバッファに移動した際は最初に日本語入力が無効な状態にする
(add-hook 'minibuffer-setup-hook 'deactivate-input-method)
;; isearch に移行した際に日本語入力を無効にする
(add-hook 'isearch-mode-hook '(lambda ()
(deactivate-input-method)
(setq w32-ime-composition-window (minibuffer-window))))
(add-hook 'isearch-mode-end-hook '(lambda () (setq w32-ime-composition-window nil)))
;; helm 使用中に日本語入力を無効にする
(advice-add 'helm :around '(lambda (orig-fun &rest args)
(let ((select-window-functions nil)
(w32-ime-composition-window (minibuffer-window)))
(deactivate-input-method)
(apply orig-fun args))))
尚、上記を含む設定ファイル一式を、下記記事で紹介しているようにGitHubに公開している。
参照記事
- 【Windows/msys2】Emacs 25.1を使う
- 【Windows/msys2】Emacs 25.2にバージョンアップ&ビルド
- 【Emacs 25】初期設定ファイルをGitHubに公開
- 【Emacs 25】macOS, Windows, Ubuntuで共通なエディター環境を構築(まとめ)
コメント