[mew-dist 18892] アドレス補完 + 大文字小文字 + 補完バッファ

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 9月 12日 (水) 19:13:27 JST


draft の To: などで、補完するときに、補完バッファを表示しますが、
そっちのバッファで、マウスやリターンしたときの不具合の話です。
ちなみに mew-complete-address-ignore-case => t なときね。

例えば、shi は shirai, shibata の候補が出る環境で、

To: shi^t

とすると、補完バッファに shirai や shibata が表示され、shirai を
クリックすると、

To: shirai

と補完が完成しますが、ちょっと間違って、

To: Shi^t
    ~ <= 大文字

と書いたとき、補完バッファの shirai をクリックすると、

To: Shishirai

となってしまいます。う〜〜〜ん、悲しい。


以下の様に、Mew の関数を思いっ切り単純化した

(defun hoge ()
  (interactive)
  (let ((alist '(("shirai0" "shirai0")
		 ("Shirai1" "Shirai1")))
	(completion-ignore-case t))
    (with-output-to-temp-buffer "*tmp*"
      (display-completion-list
       (all-completions "Shi" alist)))))

を定義しておいて、

shi
Shi

の各行の後ろで M-x hoge とやって、いろいろ実験してみればわかると
思います。


で、あきらめ切れずに調べたところ simple.el の
choose-completion-delete-max-match() をみると、ちゃんと
completion-ignore-case を見ています。でなんでかな?と思ったら、

(defun hoge2 ()
  (interactive)
  (let ((alist '(("shirai0" "shirai0")
		 ("Shirai1" "Shirai1"))))
    (setq completion-ignore-case t)
    (with-output-to-temp-buffer "*tmp*"
      (display-completion-list
       (all-completions "Shi" alist)))))

のように completion-ignore-case を global に拘束すると思った通り
に動作しました(良く考えれば当然の結果ですが)。

しかし、実際はどうやって拘束すると素敵かは考え付いていません。
minibuffer で buffer local にすると、Mew 以外で困るような気がす
るし。

## というのを mew-ldap の実験をしていて気付いてしまいました。
## 要求仕様は、大体固まったような気もする > 後藤さん

-- 
白井秀行@けど、すちゃらかな話をする気分にはなれないなぁ。



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