[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: default-input-method
- X-ml-count: 7329
- Subject: Re: default-input-method
- From: KIMURA Yasuhiro <yasu@xxxxxxxxxxx>
- Date: Sat, 08 Sep 2007 21:36:37 +0900 (JST)
- X-mailer: Mew version 5.2.51 on Emacs 22.1 / Mule 5.0 (SAKAKI)
木村です。
変数default-input-methodの値がいつの間にかリセットされてしまう件ですが、
その原因が判りました。
私がsite-lispに独自にインストールしているものの中に、
Riece(http://www.nongnu.org/riece/)というIRCのクライアントがあるのです
が、これが起動される際に
(set-language-info "Japanese" 'riece-mcat-feature 'riece-mcat-japanese) ...(*)
というふうに、set-language-infoを実行してlanguage-info-alistに独自の情
報を追加しています。
一方mule-cmds.elを見ると、set-language-infoは
set-language-info-internalという別の関数を呼び出していますが、その最後
に
.....
(if (and (featurep 'meadow)
(equal lang-env current-language-environment))
(set-language-environment lang-env))))
という部分があって、set-language-infoの第1引数の値が
current-language-environmentと等しい場合には、set-language-environment
を実行する様になっています。
というわけなので、M-x rieceを実行すると、
(*)が実行される
→ (set-language-environment "Japanese")が実行される
→ default-input-methodの値が、language-info-alistで指定されたデフォル
ト値にリセットされる。
ということになります。
対策ですが、lisp/startup.elなどを調べたところ、leim-list.elが読み込まれ
るのは起動時のみのようなので、egg/leim-list.elを変更する代わり
に、.emacsで
(set-language-environment "japanese")
(set-language-info "Japanese" 'input-method "japanese-egg-anthy")
のように、set-language-environmentしてからset-language-infoしてやれば
大丈夫のようです。
と言う訳で、「default-input-methodの値がいつの間にかリセットされてしま
う件」は一件落着なのですが、それとは別に一つ疑問点が。
Emacs 22.1のmule-cmds.elをみると、set-language-info-internalには↑の
「set-language-infoの第1引数の値がcurrent-language-environmentと等しい
場合には、set-language-environment を実行する」部分はないので、これは
Meadowで独自に追加した部分だと思いますが、Meadowでこれを行っているのは
何か理由があるのでしょうか。
---
木村 康浩