Programming

Emacsの日本語入力を設定する ― Setting up Japanese input for Emacs

World Administrator
2023年7月22日
3 分で読めます
Photo by Thom Milkovic / Unsplash

最近のEmacsはそのままでもWindowsのIMEを使えるようになったが、とても使いづらい。

  1. 日本語を入力する(IMEをON)
  2. しばらく書いたので保存したい(IMEをOFF)
  3. また執筆に戻る(IMEを再びON)

これでは、煩雑でしょうがない。そこでtr-imeの出番である。

GitHub - trueroad/tr-emacs-ime-module: Emulator of GNU Emacs IME patch for Windows (tr-ime)
Emulator of GNU Emacs IME patch for Windows (tr-ime) - GitHub - trueroad/tr-emacs-ime-module: Emulator of GNU Emacs IME patch for Windows (tr-ime)

tr-ime in GitHub

MELPA
The largest and most up-to-date repository of Emacs packages.

tr-ime in MELPA

このパッケージを一言で言えばEmacsの入力システムIM(Input Method)とWindowsの入力システムIME(Input Method Editor)を同期してくれるものだ。

このパッケージを使うことで例えば以下のようなことが実現できる。

tr-imeを使用すればPrefix keyを併用した入力は自動的にIMEをOFFにした状態に、そしてコマンドが終わったらまたIMEをONに戻してくれる。つまり

  1. 日本語を入力する(IMEをON)
  2. しばらく書いたので保存したい(そのままC-x C-s)
  3. また執筆に戻る

といったことができる。

また、EmacsではIMEのインライン表示がまだうまくいっていない。絵文字が豆腐になるのはまだ我慢できるが、Emacsのフォント・フォントサイズを変更した場合その差は耐えられなくなってくる。

tr-imeを使えばIMEのフォントを設定することができる。また、IMEのON/OFF表示までしてくれる。

導入

  1. init.elを開く
  2. Emacsで以下のコマンドを打つM-x leaf-convert-insert-templete tr-ime
  3. Emacsを閉じ、次のコマンドを打つ
$ cd ~/.emacs.d
$ emacs --batch -f batch-byte-compile init.el
  1. Emacsをを開き、init.elに次のコードを貼り付ける。
(tr-ime-advanced-install)
(setq default-input-method "W32-IME")
(w32-ime-initialize)

備考

基本的に標準設定で問題ないが、私の場合は後変換と文脈変換は使わないので余計な負荷軽減のために無効化している。

;; IME
(leaf tr-ime
  :doc "Emulator of IME patch for Windows"
  :req "emacs-27.1" "w32-ime-0.0.1"
  :tag "emacs>=27.1"
  :url "https://github.com/trueroad/tr-emacs-ime-module"
  :added "2023-07-22"
  :emacs>= 27.1
  :ensure t
  :after w32-ime)

;; tr-ime 設定
(tr-ime-advanced-install 'no-confirm)
(setq default-input-method "W32-IME")
(w32-ime-initialize)
;; 後変換の無効化
(custom-set-variables '(tr-ime-reconversion-p nil))
;; 文脈参照の無効化
(custom-set-variables '(tr-ime-documentfeed-p nil))
;; Disable Prefix
;;(custom-set-variables '(tr-ime-prefix-key-p nil))
;; IME フォント
(modify-all-frames-parameters '((ime-font . "UD Digi Kyokasho N-R-14")))

また、私は記号の配列が合理的という理由でUS配列のキーボードを最近は使っている。それでもJIS配列のように変換・無変換を使ったトグルではないIMEのON/OFFを実現している。やっていることはなんてことはなく、ATOKで日本語入力のONにC-hを、OFFにC-uを割り当てている。

hとuに割り当てているのは私がDvorak配列を使っているからである。QWERTY配列の人はそれぞれJとFに割り当てるなどをおすすめする。

問題はこのキー設定では高確率でEmacsのHot keyと競合する。そのため、私はC-hC-uをEmacsのHot keyから明示的に外している。

つまり最終的な私の設定は以下の通りである。

;; IME
(leaf tr-ime
  :doc "Emulator of IME patch for Windows"
  :req "emacs-27.1" "w32-ime-0.0.1"
  :tag "emacs>=27.1"
  :url "https://github.com/trueroad/tr-emacs-ime-module"
  :added "2023-07-22"
  :emacs>= 27.1
  :ensure t
  :after w32-ime)

;; tr-ime 設定
(tr-ime-advanced-install 'no-confirm)
(setq default-input-method "W32-IME")
(w32-ime-initialize)
;; 後変換の無効化
(custom-set-variables '(tr-ime-reconversion-p nil))
;; 文脈参照の無効化
(custom-set-variables '(tr-ime-documentfeed-p nil))
;; Disable Prefix
;;(custom-set-variables '(tr-ime-prefix-key-p nil))
;; IME フォント
(modify-all-frames-parameters '((ime-font . "UD Digi Kyokasho N-R-14")))

;; unbind key
(global-unset-key "\C-u")
(global-unset-key "\C-h")

フォントがかわいらしいのはちょっとした遊び心である。