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

スポンサーリンク
728×90 ビッグバナー

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

前の記事で、macOSでのEmacsについて書いたが、今回はWindows環境でのEmacs環境構築についてのメモを備忘録として残す。 尚、...
以前の記事で、Emacs 25.1をビルドして使う記事を紹介したが、2017/4/21にEmacs 25.2が公開された。そこで、msys2...

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の初期設定ファイル(~/.emacs.d/)をGitHub(下記URL)に公開しました。macO...

参照記事

macOS, Windows(msys2), Ubuntu-serverで共通操作性のエディターを目指して、「Emacs 25」環境を構築し...

参考

  1. gnupack 版 Emacs で IME の on/off に合わせてカーソルの色を変える方法
  2. GitHub – chuntaro/NTEmacs64: Windows 版 Emacs (通称 NTEmacs) の 64bit 版
スポンサーリンク
レシポンシブ広告
レシポンシブ広告

シェアする

フォローする