[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: w3m-message in the echo area



>>>>> In [emacs-w3m : No.08310] 土屋さん wrote:

> 表で動いているプログラムが y-or-n-p() でユーザの意向を問うている時に,
> 非同期に動いている emacs-w3m のメッセージで上書きされて質問が見えなく
> なってしまうのに困ったので,echo area にいる時も w3m-message() の出力
> をしないようにしてみました.

例えばこういう場合ですね。

(progn (call-interactively 'w3m-reload-this-page) (y-or-n-p "What? "))

> が,echo area にいるか否かを current-message() で判定しているのですが,
> これだと

>     (defun w3m-message-test ()
>       (interactive)
>       (w3m-message "A")
>       (w3m-message "B"))

> として w3m-message-test() を実行すると B が表示されないままになってし
> まいます.何か他に代替案はないでしょうか?

Elisp マニュアルには minibuffer と echo area の衝突を Emacs がど
う回避しているかが述べられていますね。そして、それは成功していま
せん。たぶんボツですが、

(defun w3m-message (&rest args)
  "[...]"
  (if w3m-verbose
      (apply (function message) args)
    (if (window-minibuffer-p (selected-window))
	(apply (function format) args)
      (when (current-message)
	(run-at-time 1 nil 'FUNCTION ARGS))
      [...]

minibuffer を redraw することができる FUNCTION が無いかなあ...

;; 私信でお伝えした件は、今では問題ありません。