2006年1月4日の日記の2番目の記事へのコメント
■uim.el
とりあえずsvnアクセス権キタ━━━━(゜∀゜)━━━━ッ!! ひと月ですか.中の人相当多忙なんですなぁ・・・.とりあえずtrunkがcheckoutできました.(゜Д゜)ウマー.ていうか今commitしていいのかな?
そいや,DebianのMLでuim.elに関して質問が出ているようなのですが,自分DebianのMLに入ってないんでどうしよう・・・うはw,とりあえずこのキモい長文にリンク張られとる・・・.この文章は参考にしない方がよいかと・・・.翌日には仕様変わってますし(^^;;;
で,ぐだぐだ実験してみたら,たまたまわかりました.おそらく「(require 'uim)」より後に「(global-set-key "\C-h" 'delete-backward-char)」とか書いているのが直接の原因な気がします.
えーと,uim.elは基本的にあらゆるキー入力を横取りします.が,一部横取りしてしまうとまずい(uim.elがあたかもキー横取りしなかったかのようにコマンドを後から実行できない)コマンドに関しては,最初から横取りしないようにキーマップに穴を空けます.で,そういうコマンドのひとつに「help-command」があります(厳密にはこれコマンドじゃないんですが).
で,問題は穴を空けるところにありまして,実際には穴を空けるのではなく,下地をコピーして穴が空いたように見せかけてます(要するにuim.elのキーマップに,その時点でのglobal-mapとかのキーバインドをコピーしている).だもんで,uim.elのキーマップ初期化時に「help-commandが割り当てられてるキーバインド」を全部拾い出して穴を空けると,その後uim.elのキーマップを直接いじらないかぎりそのuim.elは初期化時の下地を覚えたままになります.
なので,"uim.elが初期化される時点でC-hにhelp-commandがバインドされたままの状態"だと,uim.elが「C-hはhelp-command」と覚えたままの状態となり,その後で「(global-set-key "\C-h" 'delete-backward-char)」とやってもuim.elの覚えているhelp-commandが優先されてしまい・・・というわけなんですねー.
というわけで,どう見てもuim.elの問題です.本当にありがとうございました.・・・ってどうやって直せばいいんだこれー.global-set-keyにadviceですか?やだなぁ(;´Д`).あ・・・下地をコピーせずに単に穴空けりゃいいのか?その場合,プリエディットが無いときにC-hがuimに渡せなくなるけど・・・現状よりはマシか・・・.あーでもこれXEmacsだとできないんだよなー確か.うー.
[コメントを書く]
2006年1月4日の日記の2番目の記事へのコメント
ような気も・・・
(global-set-key "\C-h" 'delete-backward-char)
が
(require 'uim)
よりも先に設定されてるんですよね...
(require 'uim-leim)
されているので、通常では
(require 'uim) ;; /etc/emacs/site-start.d/50uim-el.el
↓
(global-set-key "\C-h" 'delete-backward-char) ;; ~/.emacs
の順番になるんじゃないでしょうか?
.emacs内で最初にglobal-set-keyでC-hをつぶしても現象が発生することが
確認できました.
とおりすがりさんのおっしゃる通りで,.emacsに何も書かなくても
uim-leim が読み込まれているようです.
Debianスゴス.
そしてそこにuim-elを突っ込んでくださったomoteさんスゴス(*´Д`)
・・・んで,対処法なんですが,ひとまず.emacsに
(uim-reset-keymap)
と書いておくと,その時点でのglobal-mapを元にしてキーマップに
穴を開け直してくれるので,C-hがdelete-backward-charになって
くれます.
#何かかっこわるい方法ですが・・・
ひとまずこちらを試してみていただけますでしょうか.
おかげさまで C-h が効くようになりました!!
uim/とかscm/以下で派手にちゃぶ台ひっくり返したりしない限り大丈夫っす。
ガンガンcommitしちゃってください。
おおよかったよかった
>ヤマケンさん
>>new コミッタソ
響きにワロタw
了解です.ありがとうございます.