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

アーカイブの一覧に戻る

TOKUNAGA Hiroyuki tkng****@xem*****
2005年 2月 25日 (金) 05:09:15 JST


On Wed, 23 Feb 2005 21:02:08 +0900 (JST)
Kenichi Handa <handa****@m17n*****> wrote:

> 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 が使えるようになるようです。

 r717で修正しました。

> (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") を返します。

 remap_lang_nameは"Japanese"から"ja"を取得しているので、msymbo_get
(msymbol ("ja"), Mlanguage)では代用にはならなさそうです。
 よく考えたら今のuimにはISO 639のテーブルが入ってるので、それを使えばよ
さそうですね。


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

 im->languageがMtとはどういう意味でしょうか?uimの場合にはそもそもim-
languageがMtの場合に関する処理というのは特に入っていないようです。


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

 m17nlib.scmのm17nlib-press-key-handlerが非常に怪しいです。しかし、そろ
そろ0.4.6をリリースしたいので、とりあえず後回しにします。
 このように0.4シリーズにはまだだいぶ積み残しがあるので、0.6.0までのつな
ぎとして、0.4.6以降もリリースしようかと考え始めました。

# たぶん0.4.7はリリースします。


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

 r718で修正しました。

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

 えーと、すいません、忘れました。また今度調べておきます。


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

 ベンチマークを取った訳ではないですが、例えば50個の候補があったとして、
41〜50個目の候補を取得しようと思った場合、候補のキャッシュをしないと
mplist_nextが (41 + 50)/2*10回で450回ほど呼ばれる事になるので、キャッ
シュした方が早いように思えます。(キャッシュ領域を確保するのに最初に50回
malloc呼ぶ方が重いかも知れませんけど…。)
 もしかして、n番目のplistの値を直接取得するAPIとかあった
りしますか?


-- 
徳永拓之
tkng****@xem*****
http://kodou.net/



Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る