OpenBSD/uim
uimその後
http://slashdot.jp/~YamaKenZ/journal/387552 にて捕捉。
タレコんだのだれだ?私じゃないよ。
ipv6対応について
1.5.0へ取り込まれるとのこと。
ところで、getaddrinfoの無い古いシステム向けの代替関数実装ってありますでしょうか? 現状のuimは移植性に関してかなりいい加減なんですが、SigSchemeの導入を起点として非POSIXな組み込み環境等にも対応できるようなまっとうなコードにしていきたいと思っています。なので、伝統的socket APIへの汎用のwrapperが存在しない場合はHAVE_GETADDRINFOで実装を切り換えられるようなコードへの書き変えをお願いできないでしょうか?
skk.c以外でもネットワークを利用する可能性があることを勘案すると、 下手に#ifdefを加えるよりもgetaddrinfoをuimに追加した方がいいと思います。 openssh-portableの openbsd-compat/fake-rfc2553.{h,c} をコードツリーに追加し、両コード上のHAVE_*をuim/config.h.inに追加すれば、 opensshの動く処理系上での動作が保証されることになるでしょう。
一応パッチを更新しておきました:files:patch-uim_skk_c
今回のパッチは無駄な空白の削除と、接続にipv4, ipv6のどちらかを強制させるかどうかをuim-prefで設定できるようにする変更を含みます。
インジケータについて
あ、すいません。既にbridgeのインジケータをいじるという前提の話でしたね。 context-propagate-prop-list-updateの中でcontext-current-modeの結果に応じてbridge-show-input-state?をいじれば動きそうな感じです。
こうですか!?わかりません><
$ cat ~/.uim ;; -*- scheme -*- (define bridge-show-input-state? #f) (define bridge-show-input-state-time-length 0) (define context-propagate-prop-list-update (lambda (context) (let* ((widgets (context-widgets context)) (branches (map widget-compose-live-branch widgets)) (widget-config-tree (apply string-append branches))) (if (eq? (context-current-mode context) 0) (set! bridge-show-input-state? #f) (set! bridge-show-input-state? #t)) (im-update-prop-list context widget-config-tree))))
うまく動作するように見えるのですが、 直接入力へ戻るときに、インジケータが消えてくれません(しかも内容が|あ|のまま)。 たいていのソフトではフォーカスを移してやると消えますが、 firefoxに至ってはアクティブウインドウを切り替えないと消えません。
wmはfvwm, pwm, twm, mwmでこの現象が再現されました。