[Anthy-dev 1881] Re: uim-rev585 の動作確認

Back to archive index

Kenichi Handa handa****@m17n*****
2005年 2月 23日 (水) 21:02:08 JST


In article <20050****@xem*****>, TOKUNAGA Hiroyuki <tkng****@xem*****> writes:
>>  > あと、latin-post/latin-preなどが使えない問題もr649で修正しておきまし
>>  > た。
>>  
>>  こちらは私の環境では正常に動きません。
>>  割り付け表を見ながら試用しましたが、
>>  http://www.m17n.org/m17n-lib/m17n-docs/latn-post.png
>>  http://www.m17n.org/m17n-lib/m17n-docs/latn-pre.png
>>  d/ (post) や /a (pre) と入力しても変換されません。

>  すいません、実際に特殊な文字が入力できるかまでは確認してませんでした。
> チェックしてみたのですが、明らかにlibuimの仕様の問題ではありませんね。
>  というわけで、m17nlib.scmのどこかがおかしいのだと思いますが、どこら辺
> が悪いのか、よくわかりませんでした。予想以上に難しそうなので、とりあえず
> 修正は後回しにしてbeta1をリリースしたいと思います。

0.4.6beta2/uim//m17nlib.c をちらっと見てみたのですが、少なく
とも以下の修正が必要です(Copyright AISTのコードを UIM に入
れられるのかどうか分からないので、あえてパッチは送りません
が)。

(1) find_im_by_name は im_array[i].lang が NULL の時は
sprintf (buf, "%s", im_array[i].name) をしないと、
get_input_method_name () の処理と整合性が取れません。この修
正で少なくとも latin-post/pre が使えるようになるようです。

(2) remap_lang_name () は自前でテーブルを持っていますが、
m17n-lib が新たな XX-kbd.mim とかを追加した場合、テーブルに
"XX" が登録していないと NULL を返すので、 xx-kdb.mim とか
yy-kbd.mim とかが全部 m17n-kbd という名前に縮退してしまいま
す。 msymbol_get (im->language, Mlanguage) を使う方が良いと
思います。例えば msymbo_get (msymbol ("ja"), Mlanguage) は
msymbol ("Japanese") を返します。

それから im->language が Mt の場合は最初から言語指定なしとし
て処理して結構です。

以上の変更で latn-post/pre が起動できるようになります。ただ、
動作がどうもおかしく、たとえば "a'" と打つと a-grave が
preedit として表示されますが、続いて "f" とうつと a-grave は
commit されますが、 "f" が無視されるようです。これはまだ原因
がわかりません。

その他、気になるコードは、

(3) register_callbacks () がなんども呼ばれていますが、uim が
使っているのは m17n-lib の internal input method のみですの
で、 minput_driver->callback_list に各 callback 関数を一度だ
け mplist_put で設定すれば大丈夫です。

(4) commit () 中に
/* To avoid a bug of m17n-lib */
  ic->candidate_to   = 0;
というコードがあるのですが、これはどうゆうバグでしょうか?

(5) ic_array[id].old/new_candidates があるんですが、
ic->candidat_list の plist をそのまま毎回使った方が速いと思
うのですが。

−− 半田@AIST
      handa****@m17n*****




Anthy-dev メーリングリストの案内
Back to archive index