Etsushi Kato
ek.ka****@gmail*****
2005年 12月 20日 (火) 23:44:49 JST
こんばんは。 On Tue, Dec 20, 2005 at 07:50:37PM +0900, Masanari Yamamoto <h0131****@ice*****> wrote: > anthy-use-with-vi?を#tにしていると、gvimでundoがおかしくなるという問題 > があります。 > > vimのソースを読むと、xim_has_preeditingがTRUEのときundoするといけない > ようです。xim_has_preeditingがFALSEになる条件は、preedit_endが一回、ま > たは、プリエディットの長さが0の状態でpreedit_changedが二回発生すること > です。 > > r2658でESCを押したときにもim-update-preeditを呼んで、preedit_changedを > 発生させるようにしました。 > r2658の変更なしでも、preedit_endを発生させるようにすれば解決できます。 なるほど。解説ありがとうございます。こちらでも vim のコードみてみ ましたが、よく理解できました。 では、r2658 については uim-skk と同様に、必要な場合のみ、preedit update させるようにして、普通の commit-raw では、preedit update しないようにして変更してもいいでしょうか? なるべく無駄は省きたい と思います。 > さらに、key snooperを使わずにkeypressを処理するようにすれば、gvimから > IMを制御できるようになります。(多分) > > key snooperはgtk-im-uim.cの中にもよくないと書いてありますが、key > snooperを使わないといけない理由がなにかあるのでしょうか? これについては、田畑さんの仰るとおりで、キーボードーショーット カットのからみで snooper を使わざるをえない、ということだと理解 しています。詳しい経緯は当事者でないのでよく知りませんけど。 snooper ではなく、toplevel の widget に keypress をバインドしても いいのですが、結果は同じです。 あと以前ヤマケンさんとした comtext reset の議論にも絡んでいて、 snooper を使っていると、本来 widget が意図している挙動 (reset) を 捉えることができないという問題があるようです。 -- Etsushi Kato ek.ka****@gmail*****