[Scim-imengine-dev 776] Re: 再変換機能

Back to archive index

Takuro Ashie ashie****@homa*****
2005年 11月 14日 (月) 00:46:57 JST


足永です。

On Sun, 13 Nov 2005 23:46:26 +0900
Jun Mukai <mukai****@jmuk*****> wrote:

> ちょっと見てみたのですが、 scim のヘルパープラグインを活用されています
> よね。このヘルパープラグインが、「選択範囲の文字列を切り出す」という処
> 理をしているという解釈でよろしいでしょうか?

はい。
ヘルパー側でセレクションを取得し、IMEngine側でカーソル周辺文字列を取り出
してカーソル前後の文字列とマッチングを行い、選択範囲と思しき文字列をプリ
エディットに差し替えています。

ただ色々問題があって、例えば

  * 本当に両文字列が同一アプリケーション上のものだと保証できるのか?
  * Gtk+に依存している
  * でも実質Xでしか動作しないような
  * SKIMで使えない?

等々です。まあ実質的にはさほど問題とならないものがほとんどなので、妥協案
としてはそんなに悪くないかもしれません。

このヘルパーには他に、タイマー機能も持たせています。一定時間経過後にイベ
ントを発生させる機能です。現在は親指シフトの単独打鍵検出のためにのみ使用
していますが、例えばエラーメッセージ等を一定時間経過後に消す等の処理にも
使えるかもしれません。

ヘルパーには主に2種類の存在意義があると思います。

  * GUI(特定のツールキット)に依存する機能の実現
  * イベントループを必要とする機能の実現

今回、その2つの実際の利用例を示した格好になります。


> skk でも、 emacs 上では「いったん確定させた文字列(ひらがな)から再度変
> 換をかける」という小技がありますが、もしヘルパー部分だけ独立させて使い
> まわせるようになれば scim-skk 側からも利用できたりするかもしれず、非常
> に便利なのではないかと思いました。

これは色々と迷うところですね。

コード的には非常に小さいので単独のパッケージに分けるほどではないと思うの
ですが、IMEngineごとに別々に持つのも確かにばかばかしいと思います。

両機能ともSCIMに実装されているとうれしい機能ではあるのですが、このような
マイナーな要求を満たすためにフレームワークがどんどん肥大化するのは嫌な感
じです。また、もしフレームワーク側に実装しようと思うと、ヘルパーよりもフ
ロントエンドに実装した方がいいと思うのですが、そうするとただでさえ開発コ
ストが少し高めなSCIMのフロントがますます作り辛くなってしまうのが厳しいよ
うな気がしています。

ともあれ、一度Jamesさんに相談してみようかな。



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