[Mew-dist 05204] Re: local-map

Mito mit at example.com
1998年 6月 29日 (月) 18:04:17 JST


※ "山" こと kazu at example.com さんの
   『[Mew-dist 05198] local-map』より

山> おそらく SKK でも同様だと思いますが、かんなではフェンスモードに入ると
山> local-map を書き換えて、もう一度入力されたキーに束縛されている関数(多
山> くの場合は新しい local-map にマッチした関数)を呼び出します。

SKK 10.38 しかないので、他のバージョンは知りませんが、SKK で
は、特になにもせずに日本語入力がちゃんとできました。

SKK では use-local-map は使わずに、minor-mode-map-alist を使っ
ているせいだと思いますが、text property まわりに関して、よく
わかっていませんので、別な理由かも知れません。

山> というわけで、property の local-map を設定していると、かんなが設定した 
山> local-map が無視されます。試しに canna.el で local-map の設定と同時に
山> property の local-map を nil にするコードを書くとうまくいきました。

ということでしたので、原因がわかれば、どなたかが canna をちゃ
んと直してくれるだろうと思っていたのですが、どなたからも反応
がないようなので調べてみました。

use-local-map している所で overriding-terminal-local-map 変
数も設定するととりあえずは日本語入力できましたが、こんなもん
でいいのでしょうか?
詳しい方に添削していただきたいので、添付させていただきます。

山> (解決案2) Mew を昔に戻す。

W3 なんかも text property の local-map を使っているはずです
ので、戻す必要はないと思うのですが...。
-- 
6/29 17:58頃
NECソフトウェア新潟 水戸
mailto:mit at example.com \n
-------------- next part --------------
--- canna.el	1998/06/03 01:15:35	1.2
+++ canna.el	1998/06/29 08:22:18
@@ -533,7 +533,9 @@
 	 (select-window (minibuffer-window))
 	 (set-window-buffer (minibuffer-window)
 			    (get-buffer-create canna:*menu-buffer*))
-	 (use-local-map canna-minibuffer-mode-map) ))
+	 (use-local-map canna-minibuffer-mode-map)
+         (setq overriding-terminal-local-map canna-minibuffer-mode-map)
+         ))
   )
 
 (defun canna:minibuffer-input (str len revpos revlen nfixed)
@@ -570,6 +572,7 @@
 		     (get-buffer-create canna:*menu-buffer*))
 
   (use-local-map canna-minibuffer-mode-map)
+  (setq overriding-terminal-local-map canna-minibuffer-mode-map)
 
 ;  (canna:yomi-attr-off (point-min) (point-max) )
 ;  (canna:henkan-attr-off (point-min) (point-max) )
@@ -597,6 +600,7 @@
       (progn
 	(setq canna:*cursor-was-in-minibuffer* nil)
 	(use-local-map canna:*minibuffer-local-map-backup*)
+        (setq overriding-terminal-local-map nil)
 
 	;; ミニバッファウィンドウのバッファを元に戻す。
 	(set-window-buffer (minibuffer-window) canna:*saved-minibuffer*)
@@ -621,6 +625,7 @@
 kana-to-kanji translation, even if you are in the minibuffer."
   (interactive "p")
   (use-local-map canna:*minibuffer-local-map-backup*)
+  (setq overriding-terminal-local-map nil)
   (set-window-buffer (minibuffer-window) canna:*saved-minibuffer*)
   (select-window canna:*previous-window*)
   (canna:functional-insert-command2 last-command-char arg) )
@@ -763,7 +768,9 @@
       (buffer-disable-undo (current-buffer))) ; append by knak 97.10.21
   (if (boundp 'disable-undo)
       (setq disable-undo canna:*fence-mode*))
-  (use-local-map canna-mode-map) )
+  (use-local-map canna-mode-map)
+  (setq overriding-terminal-local-map canna-mode-map)
+  )
 
 (defun canna:enter-canna-mode-and-functional-insert ()
   (canna:enter-canna-mode)
@@ -773,6 +780,7 @@
 (defun canna:quit-canna-mode ()
   (cond (canna:*fence-mode*
 	 (use-local-map canna:*local-map-backup*)
+         (setq overriding-terminal-local-map nil)
 	 (setq canna:*fence-mode* nil)
 	 (if canna:*exit-japanese-mode*
 	     (progn


Mew-dist メーリングリストの案内