2008年4月8日の日記の2番目の記事へのコメント
■uim.elでWnnがおかしくなる問題
例のWnnの変換候補がおかしい問題ですが,uim-el-agent をターミナルから上げて,以下の順で打ち込んだだけで再現可能でした.
1 0 SETENC wnn EUC-JP 1 1 NEW EUC-JP 1 2 NEW EUC-JP 1 1 CHANGE wnn 1 2 CHANGE wnn 1 1 [27 32] 1 1 [97] 1 1 [32] 1 1 UNFOCUSED 1 2 FOCUSED 1 2 [27 32] 1 2 [105] 1 2 [32] 1 2 UNFOCUSED 1 1 FOCUSED 1 1 [32]
↑はEmacsでバッファを 2個作って,片方で「あ」を変換している途中で,マウスで別のバッファに切り替えて,そっちで「い」を変換して,途中でまた「あ」の方に戻った,という状態に相当しまして ([27 32] (Alt+Space) ってのは uim-wnn の日本語入力をOnにするキーに適宜読み替えて下さい),これをやると,本来最後の行を打ったところで「あ」とそれに対応する変換候補がわらわらと表示されなきゃならんのですが,なぜか「い」に対応する変換候補が表示されます.
ひとまず uim-el-agent 側で管理しているコンテキストのアドレスを確認してみたんですが,特に異常はなさそう.コールバック時に一緒に返ってくる,登録時に設定したコンテキストのポインタは正しいのですが,その時渡されるプリエディットなどの文字列が違ってました.一応,uim-wnnがベースとした(?)という uim-canna でも試してみたんですが,こちらでは問題は出ませんでした.uim-wnn固有の部分が怪しいのかな?
でも,それなら 他のブリッジとかでも再現してもよさそうなものなんですが,gtk-demo を2個起動して,同じようなことをやっても再現しないんですよねこれ.uim-el-agentがAPIの使い方間違えてるのかなぁ・・・? いや,でもそしたら Wnn 以外でも問題発生するだろうし・・・.ひょっとして単一のプロセス内で2個コンテキスト作ると駄目なのか?
というわけで,gtk-demoを1個だけ上げて,その中で HyperText と Multiple Views の両方を開いて,それぞれで「あ」と「い」を並行して変換してみたところ・・・再現したッ! というわけで,uim-wnn の中で,本来 uim のコンテキスト毎に独立していなければならない何かの変数を使い回ししちゃうような記述になっているのではないかと予想.kinput2 はそういう使われ方しなそうな気がするし・・・(続く?)
ちなみに,これまでの話とは多分関係ないんですが,気がついたらWnnで「い」を変換すると,「い」が超いっぱい出るように(笑)
2008年4月8日の日記の2番目の記事へのコメント
[コメントを書く]