[Anthy-dev 573] Re: uim: プリエディット属性追加の提案

Back to archive index

YamaKen yamak****@bp*****
2004年 2月 19日 (木) 08:59:19 JST


ヤマケンです。

このメールの後半は名前に関する議論になっているので、そちらにも反
応お願いします。

At Sat, 07 Feb 2004 00:12:14 +0900,
yamak****@bp***** wrote:
> 
> At Fri, 06 Feb 2004 22:31:47 +0900 (JST),
> yusuk****@cheru***** wrote:
> > > uimのプリエディット属性に文節セパレータを追加する事を提案します。
> > > 反対意見が無いようであれば実装してみます。
> > これ自体は賛成です。変更を行う際に思うところを書いておきます。

gtk-im-uimとanthy, cannaで利用できるようにしてみました。
IMKit-uimも手元の版で対応しています。

.uimに以下のような設定を追加すると有効になります。

(define anthy-show-segment-separator? #t)
;(define anthy-segment-separator "/")  ;区切り文字を変更する場合

Pangoの仕様をよく理解していないので改善の余地があるのかもしれま
せんが、表示されている様子は正直ビミョーな感じです。以下のような
点がまずいのですが、これはPangoを正しく利用すれば解決できるので
しょうか?

・他のプリエディット文字列とはセパレータの色を変えているが、セパ
  レータのアンダーラインの色まで同時に変わってしまう

・セパレータと前後の文節の間でアンダーラインが途切れてしまう

> > *UPeAttr*という名前を変更する。
> >  なんとなく意味不明なので、他の定数と同時に変えてしまいたいです。
> 
> 実は私もこの名前にはなかなか馴染めませんでした。これ以上分かりや
> すくするには結局フルネームにするのがいいんじゃないでしょうか。そ
> んなに頻繁に出てくる名前でもないので。
> 
> enum UPreeditAttr {
>   UPreeditAttr_None = 0,
>   UPreeditAttr_UnderLine = 1,
>   UPreeditAttr_Reverse = 2,
>   UPreeditAttr_Cursor = 4,
>   UPreeditAttr_Separator = 8,
> };

上記のように変えてみようと思うんですが、意見はないでしょうか。ま
ずい場合は「何となく馴染めない」といった程度の理由でも構わないの
で止めて下さい。

代案としては、いっそ "e" を取ってしまって UPAttr_UnderLine とい
うのもアリだと思います。今の UPeAttr よりは馴染みやすいと思うの
で。

> その他の定数というと以下のUKeyとUKeyModifierですが、modifierの方
> の定数がUKey_Shiftのような名前になっているのはUKeyと区別がつかな
> いのでまずいと思います。
> 
> enum UKey {
>   ...
>   UKey_Shift_key,
.>   UKey_Control_key,
>   UKey_Alt_key,
>   UKey_Meta_key,
>   UKey_Other = 1000
> };
>   
> enum UKeyModifier {
>   UKey_Shift = 1,
>   UKey_Control = 2,
>   UKey_Alt = 4,
>   UKey_Meta = 8,
>   UKey_Pseudo0 = 16,
>   UKey_Pseudo1 = 32,
> };
> 
> 以下のような変更でどうでしょうか。UMod_というプリフィクスは単体
> では分かりずらいですが、UMod_Controlのようにキーの名前と合わされ
> ばほとんど誤解される事もないと思います。
> 
> enum UKeyModifier {
>   UMod_Shift = 1,
>   UMod_Control = 2,
>   UMod_Alt = 4,
>   UMod_Meta = 8,
>   UMod_Pseudo0 = 16,
>   UMod_Pseudo1 = 32,
> };

こちらはAPI利用者に明確な悪影響があるので、0.3.0のAPI変更を機に
直しておくべきだと思います。UKey_Shift_keyとUKey_Shiftという名前
は激しく紛らわしいので。

特に止められない限り明日あたりに変えてしまおうと思います。

> この変更に各ブリッジが追従できたら、enum UKeyの方で定義されてい
> るUKey_Shift_key等を本来の自然な名前であるUKey_Shiftに直せばよい
> と思います。

これは UKey_Shift という名前の意味するものが UKeyModifier から 
UKey に変わってしまうという危険な変更なので、0.3.0では見送った方
がいいような気がしてきました。0.3.0では UKey_Shift_key と 
UMod_Shift のような名前を使うという事でどうでしょうか。
UKey_Shift という名前が全てのlibuim利用コードから消えた時点で必
要に応じて再度リネームすれば安全だと思います。


名前に関する話が出たついでですが、以下の begin_cb と end_cb はそ
れぞれ activate_cb と deactivate_cb に変更してよいんですよね? 今
現在この周辺のコードがいじられていなければ呼び出し側を含めて全部
変えてしまおうと思いますので、まずければ言ってください。

int uim_set_candidate_selector_cb(
      uim_context uc,
      void (*begin_cb)(void *ptr, int nr, int display_limit),
      void (*select_cb)(void *ptr, int index),
      void (*shift_page_cb)(void *ptr, int direction),
      void (*end_cb)(void *ptr));

-------------------------------
ヤマケン yamak****@bp*****



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