2005年11月10日の日記の2番目の記事へのコメント
■uim.elとviperの続き
コメントに書きましたが,やっぱminor-mode-map-alistでviperのキーマップがuim.elのキーマップより先に来てるのが問題でした.んで,プリエディット状態に入った際にuim-modeのキーマップ差し替えるついでに,他のマイナーモードをminor-mode-overriding-map-alistに全部登録してやったら無事backspaceでプリエディット削除できるようになりましたよ.しかもdiff-modeでもちゃんと日本語入力できるようになったし.
が,この変数,XEmacsにはないんですよねー.またか(;´Д`).そこで,代わりにプリエディット開始時にuim-mode以外のキーマップを全部潰して,プリエディットが消えてキーマップを通常時のものに戻す際に復帰させるようにしてやったところ,無事XEmacsのviperでもbackspaceが効くように.
ふー,これで終わりかな.と思ったら,Emacs-22でちゃんと動かねーし_|‾|○.キーマップを見ると明らかにuim-mode以外は全部空なのに,それでもbackspaceを別の何かが拾ってます.なんだよこれー・・・とソースを追ってみたら,emulation-mode-map-alistsなんてのが怪しい.試しにこれをnilに設定したら見事に使えるようになりました.うわー,なんだよコレ.
List of keymap alists to use for emulations modes. It is intended for modes or packages using multiple minor-mode keymaps. Each element is a keymap alist just like `minor-mode-map-alist', or a symbol with a variable binding which is a keymap alist, and it is used the same way. The "active" keymaps in each alist are used before `minor-mode-map-alist' and `minor-mode-overriding-map-alist'.
うわー・・・('A`).何か便利そうだけど未来Emacsでしか使えないなら今んとこ意味ないし (;´Д`).
ちなみに,EscapeキーがXで上げたときにちゃんと効いてないのは別問題でした.通常時のマップの方に[escape]はnilと設定してやると効くようにはなりましたが,これでいいんだっけっか・・・?
まあ,ひとまず,最初のminor-mode-overriding-map-alistを使ってどうにかするパッチはこちらです.GNU Emacs-21しか使わない方はこれで大丈夫だと思われます.
2005年11月10日の日記の2番目の記事へのコメント
[コメントを書く]