2005年7月18日の日記の1番目の記事へのコメント
■uim.elとleim
表さんからleimへの対応のリクエスト(?)がありました.なるほど,マイナーモードだけだと他のIMとの共存が面倒な場合があるのね.内部実装にばかり頭が行っていて,運用面でどうかという発想が欠けてました.というか,機能そのものに対する希望が出たのは初めてな予感.
まあ,そんなわけで,今度はまじめに対応を検討してみました.なるほど,上からどう見えるかが重要だから,内側に関してはleimが活性化したらマイナーモードをONにして,不活性化したらOFFにするだけ十分なのか.問題は,上にどう見せるかですね.
(おそらく)通常,IMをleimに対応させる場合,register-input-methodなる関数を呼んでやる必要があります.この関数,1個目の引数に「japanese-anthy」とか「japanese-prime」みたいなIMの名前を取り,2個目の引数に対応する言語(?)を取って,呼ぶと各言語に対してIMが関連づけられるみたいな感じになります.で,ここで(;´-`).。oO(そういえばUimは何語のIMなんだ?) という問題が.
おんなじUimでも名前を変えて「Japanese」には「japanese-uim」,「Korean」には「korean-uim」,「Chinese-GB」には・・・みたいにやろうか,それともせっかく多言語対応なんだから「multilingual-uim」という名前で各種言語に登録した方がいいのか(後でわかったけど言語間で名前がかぶっちゃいけないのでこれは実は使えない)・・・とかぼやいてたらtkngさんから「japanese-anthy-uimみたいな感じで複数のIMとして登録しては?」との提案が・・・Σ(゜д゜lll)
つまり,同じUimでも,後ろでうごいてるエンジンによって名前を「japanese-anthy-uim」とか「japanese-skk-uim」とか切替えるという感じです.なるほど,その手があったかーという感じであり,何かせっかくUimなのにもったいねーなという感じでもあるのですが,上から見る分にはこれが一番わかりやすそうなので,これで実装してみることにしました.
まあ,そんなんで,ひとまず対応できました.他言語のIMに切替える場合は,(set-language-environment 'Chinese-GB)とやって言語を切替えて,(set-input-method "chinese-gb-py-uim")とかやってUimの下のIMを切替えるみたいな感じになりました.「japanese-anthy-uim」な感じの部分は,いったんuim-agentを呼んで,使えるIMの全リストをごっそり持ってきて,そのうちEmacsが対応している言語についてのみ登録するみたいな具合でやってます.leimの初期化の段階でuim-agentとお話をしなければならないので,結局最初からuim.el本体を読み込む必要があり,全然スマートじゃなかったりします.autoloadとか使ってみたいもんですが・・・.
・・・あ,0.0.3ですが,もうちっとお待ちを・・・.
[コメントを書く]
2005年7月18日の日記の1番目の記事へのコメント
[コメントを書く]