[mew-dist 29258] 補完での completions-first-difference の活用

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2010年 7月 6日 (火) 16:33:53 JST


白井です。

Emacs22 以降でコマンドとかの補完入力を動かすと、次に入力すると良
い文字が(デフォルトで)bold(*1) になりますが、Mew の補完は独自に
やっているので、face がつきません。

標準的な Emacs のインタフェースと合わせておいた方が良いと思って
調べたところ、

(defun mew-complete-window-show (all)
  (unless (mew-ainfo-get-win-cfg)
    (mew-ainfo-set-win-cfg (current-window-configuration)))
  (if (and (get-buffer-window mew-buffer-completions)
	   (equal mew-complete-candidates all))
      (let ((win (get-buffer-window mew-buffer-completions)))
	(with-current-buffer mew-buffer-completions
	  (if (pos-visible-in-window-p (point-max) win)
	      (set-window-start win 1)
	    (scroll-other-window))))
    (setq mew-complete-candidates all)
    (with-output-to-temp-buffer mew-buffer-completions
      (when mew-inherit-complete-folder
	(make-local-variable 'choose-completion-string-functions)
	(add-hook 'choose-completion-string-functions
		  'mew-complete-insert-folder-function))
      (display-completion-list all (try-completion "" all)))))

の最後の行の変更だけで問題なく動作しました。ただし、Emacs21 の
display-completion-list() の引数は一つだけなので、

    (condition-case nil
	(display-completion-list all (try-completion "" all))
      (error
       (display-completion-list all)))

とかしないとだめかも、です。

(*1) completions-first-difference face というらしい

-- 
白井秀行 (mailto:shirai at example.com)


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