2006年1月1日の日記の2番目の記事へのコメント
■uim.el
自分ところのWikiに「uim.elをONにしているとdelete-selection-modeが動かない」というのがあったんで見てみました.なるほど確かに動きません.
delete-selection-modeは,中で pre-command-hook を使っていて,コマンドが処理される前にthis-command変数を読んでコマンドの種類を確かめて,それが backward-delete-char-untabify とかだったら選択領域を消すようにするとかやってるっぽいです.で,uim.elが有効になっていると,pre-command-hookの時点ではthis-command変数が常に uim-process-input になるんで,delete-selection-modeのpre-command-hookが反応してくれません.そんなわけで,動かん,と.
動かすためには uimがキーを処理せずにEmacs側に返してきて,Emacsがキーに対応した本来のコマンドを実行する直前にごにょごにょしてやる必要がありそうです.すなわち,this-command をこれから処理するコマンドで上書きした後で, command-execute とか call-interactively とかでそれを処理する前のタイミングで pre-command-hook を run-hooks すりゃいいわけです.というわけで,これやって動くようにはなったんですが,これにより単独のキー押下で2回 pre-command-hook が呼ばれることになるので大変恐いです.どうなんでしょね.
[コメントを書く]
2006年1月1日の日記の2番目の記事へのコメント
悪い開発の見本みたいな感じだなぁ・・・