[Mew-dist 1221] xemacs + wnn + mew

Tetsu NISHIMOTO 西本哲 nisimoto at example.com
1997年 7月 10日 (木) 14:32:55 JST


西本@岡山大です。

xemacs + wnn + mew において日本語でメールを書いているときに次のようにす
るとエラーが発生するようです。
#試した範囲では xemacs-20.2 + wnn + {mew-1.70 or mew-1.85} で起こってい
#ます。
例えば "今日の" と書こうとして次のようにキーボードに入力していくと

キーボード              表示
k                       |k|
y                       |ky|
o                       |きょ|
u                       |きょう|
space                   |今日|
n                       今日          <--  今日+n|  となってほしい

となりミニバッファに

Wrong type argument: char-or-string-p, []

と表示されます。

以下は (setq debug-on-error t) としたときの出力です。

Signaling: (wrong-type-argument char-or-string-p [])
  insert([])
  (if (null func) (insert key) (setq this-command func) (run-hooks
(quote pre-command-hook)) (call-interactively this-command))
)
  (let* ((key ...) (command ...) (i 0) len func) (if (numberp command)
(setq len command command ... key ...)) (setq len (length key)) (if
(or ... ...) (catch ... ... ...)) (cond (... ...) (... ...) (t ...))
(if (not ...) nil (if ... ... ...) (setq func ...) (cond ... ... ...))
(if func nil (setq func ...) (if ... nil ... ...)) (if func (while
... ... ...)) (if (null func) (insert key) (setq this-command func)
(run-hooks ...) (call-interactively this-command)))
)
  (lambda nil (interactive) (let* (... ... ... len func) (if ... ...)
(setq len ...) (if ... ...) (cond ... ... ...) (if ... nil
... ... ...) (if func nil ... ...) (if func ...) (if
... ... ... ... ...)))()
  call-interactively(mew-draft-keyswitch)

mew-draft-keyswitch のエラーのようなのでソースのほうをみてチェックしてみ
ました。

(defun mew-draft-keyswitch ()
  (interactive)
  (let* ((key (this-command-keys))
         (command (lookup-key (current-global-map) key))
         (i 0) len func)
    (if (numberp command)
…略…

上の例でいうと n を入力したとき3行目の (this-command-keys) の値が 
[#<keypress-event n>] となってほしいのに [] が返ってくるのが原因のよう
です。とりあえず以下のように (this-command-keys) を
(vector last-command-event) に置き換えています。

(defun mew-draft-keyswitch ()
  (interactive)
  (let* ((key (vector last-command-event))
         (command (lookup-key (current-global-map) key))
         (i 0) len func)
    (if (numberp command)
…略…

ただこのようにすると C-cTAB が TAB としてしか認識されなくなってしまうと
いう副作用があります。

というわけでもっといい方法はないでしょうか。

-------------------------------------
    岡山大学大学院自然科学研究科
    西本  哲
    nisimoto at example.com
-------------------------------------



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