[Mew-dist 05221] Re: local-map
SAKAI Kiyotaka
ksakai at example.com
1998年 6月 30日 (火) 13:52:39 JST
>> In article <19980629063322V.kazu at example.com>, Kazu Yamamoto (山本和彦) <kazu at example.com> writes:
> ヘッダで日本語が入力できない理由が分りました。
> おそらく SKK でも同様だと思いますが、かんなではフェンスモードに入ると
> local-map を書き換えて、もう一度入力されたキーに束縛されている関数(多
> くの場合は新しい local-map にマッチした関数)を呼び出します。
skk では、skk-10.x で Emacs 18 を捨てたときに minor-mode-map-alist を
使うようになりましたので、問題はなくなりました。
> というわけで、property の local-map を設定していると、かんなが設定した
> local-map が無視されます。試しに canna.el で local-map の設定と同時に
> property の local-map を nil にするコードを書くとうまくいきました。
Emacs-20.2 に付属の leim や EGG-4.0 (beta test 中) でも駄目でした。
こっちはレポートしておきます。
> 結論:property の local-map を気にせずに書かれたコードが悪い
property の local-map は、use-local-map で指定したキーマップを置き換え
るようになっていますので、Canna が use-local-map した後から Mew が
use-local-map してキーを置き換えているとみなすと、このこと自体が問題と
は言い切れないと思います。
skk の ML でも過去に use-local-map を使う是非について議論があったので、
メールを読み直してみたところ、
・use-local-map は major mode で使用する目的で設定されたので、本来は、
FEP がキーを奪い取る目的で使用するべきものではなかった。
・しかし、Emacs 18 の頃は他に手段がなかったため、use-local-map を使う
インプリメントを採ったのは仕方がなかった。
・Emacs 19 以降ではちゃんとした機能が用意されたので、
minor-mode-map-alist か overring-local-map を使うのが正しい。
ということが分かりました。
ですので、結論は「majar mode でもないのに local map を使うのが悪い」が
正しいと思います。
> (解決案1) property の local-map を気にせずに書かれたコードをすべて直し
> てまわる。
> (解決案2) Mew を昔に戻す。
(解決案3) use-local-map を使った書かれたコードを minor-mode-map-alist
か overring-local-map を使って書き直してまわる。
が根本的な解決方法だと思います。
あと、overring-local-map は変数が 1つしかないため、すでに
overring-local-map が設定されているときに overring-local-map を設定し
直すとどうなるかなどの問題について考えなくてはいけないので、インプリメ
ントは minor-mode-map-alist を使うよりは少し面倒になるかと思います。
--
酒井 清隆 (E-mail: ksakai at example.com)
Mew-dist メーリングリストの案内