NTEmacs IMEパッチ
Table of Contents
概要
IMEパッチとは、EmacsのIME使用に挙動の改善を行うパッチ(ソースコード変更を適用するもの)である。
Emacsは多言語対応されているのだが、Windows上でIMEを使用する場合の挙動に難がある。
EmacsのIME使用にまつわる挙動の改善を行うパッチは、Emacsのバージョンアップに追従して識者の方がメンテし続けており、これが通称「IMEパッチ」である。
IMEパッチにはいくつか派生があるが、ここでは、Emacsのソースコードに対する、IMEに関係したパッチを「IMEパッチ」と呼ぶことにする。
本サイトで採用している IMEパッチ
下記の通り、その時点で識者の方が提供されているもの、又は、自前で作成したパッチを採用している。
- 26.1
- (自前の)簡易IME対応
- (自前の)最小限IME対応1
「簡易IME対応」とは「未確定文字のインライン表示」の対応(これ)を指していて、 「最小限IME対応1」とは「未確定文字のインライン表示」+「最低限 w32-ime.el が使える」という対応(これ)を指している。
- 25.1、25.2、25.3
- (自前の)簡易IME対応
- 24.4、24.5
- (自前の)簡易IME対応
- rzl24ozi氏のIMEパッチ
- 23.2、23.3、23.4、24.2、24.3
- gnupackのIMEパッチ対応版
- 23.1
- NTEmacs JP ProjectのIMEパッチ
IMEパッチの代表的な機能
未確定文字のインライン表示
通常の日本語対応のアプリケーションでは、意識することは無いのだが、「未確定文字のインライン表示」というのは下記のような挙動のことを指している。
IMEを有効にして文字を入力したときに、(変換するしないを判断して)確定する前の文字列が、カーソル位置にそのまま表示されるのが、使いやすい。
IME状態のmodeline表示
Meadow由来の lisp/international/w32-ime.el で実現されている機能。
OSのIMEの状態表示にて代用はできる。
w32-ime-mode-line-state-indicator、w32-ime-mode-line-state-indicator-list 等の設定をしない場合
- IME無効時
- IME有効時
後述の設定をすれば、下記のような表示にすることができる
- IME無効時
- IME有効時
IME有効時のコマンド入力を可能にする
IMEの使用にあたって、Emacsとしてのコマンド入力に関しても課題がある。
例えば、IME有効の状態で、C-x 2 で split-window-below を行おうとすると、C-x まではいいのだが、2が未確定文字として入力されてしまい、コマンドとして認識されない。 いわゆるIMEパッチではこの部分の対応がされている。 (ソースは未確認)
IMEパッチの設定
Meadow由来の lisp/international/w32-ime.el を有効にし、必要な設定をする
設定例
(when (locate-library "w32-ime") (progn (w32-ime-initialize) (setq default-input-method "W32-IME") (setq-default w32-ime-mode-line-state-indicator "[--]") (setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]")) ))
IMEパッチの歴史
IMEパッチは、これまで有志の方々が公開されてきた。
技術情報
w32-ime.el
現在のIMEパッチのキモとなっているもの。
IMEパッチ解析
参考
Win32API IME関連
- IMEハッカーズ☆
- IMN_SETOPENSTATUS の定義を調べていたらここに行きついた
- 第280章 IMEの操作 その3
- おなじみ 「猫でもわかるプログラミング」。IMEの変換状態を設定する ImmSetConversionStatus関数 の解説
設定関連
- W32-IME を快適に使うための設定 (NTEmacs @ ウィキ)