【Windows/msys2】EmacsでIMEのon/off時にカーソルの色を変更する

スポンサーリンク

以前の記事で、Windows/msys2の環境で Emacs25 を使えるようにした。
その時に日本語入力(IME)のON/OFF時にカーソルの色を変更するように設定したつもりだったが、うまく動作していなかったようで、今回動くようにしたので備忘録を残す。
尚、参考[1.]の情報が参考になった。

【Windows/msys2】Emacs 25.1を使う
前の記事で、macOSでのEmacsについて書いたが、今回はWindows環境でのEmacs環境構築についてのメモを備忘録として残す。 尚、私の環境は Windows10 Pro 64bit, 日本語IMEはATOK。 IMEパッチを適用し...
【Windows/msys2】Emacs 25.2にバージョンアップ&ビルド
以前の記事で、Emacs 25.1をビルドして使う記事を紹介したが、2017/4/21にEmacs 25.2が公開された。そこで、msys2環境のEmacsを25.2にバージョンアップしたので備忘録を残す。 msys2にEmacs 25.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に公開している。

【Emacs 25-29】初期設定ファイル(~/.emacs.d/)をGitHubに公開
これまで紹介してきた、私の使ってるEmacsの初期設定ファイル「~/.emacs.d/」をGitHub(下記URL)に公開した。macOS, Windows, Linuxで共用。 Emacsの初期状態ではお世辞にも使い勝手がいいとは言えない...

参照記事

【Emacs 25-29】macOS, Windows, Ubuntuで共通なエディター環境を構築(まとめ)
macOS, Windows(msys2), Ubuntu-Server/Desktopで共通操作性のエディターを目指して、「Emacs」環境を構築してきた。 私も実際に使ってきて実用的になってきた。本サイトでも断片的に紹介してきたのをまと...

参考

  1. gnupack 版 Emacs で IME の on/off に合わせてカーソルの色を変える方法
  2. GitHub – chuntaro/NTEmacs64: Windows 版 Emacs (通称 NTEmacs) の 64bit 版

コメント

タイトルとURLをコピーしました