bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#34614: 26.1.92; When reading input in mini-buffer, message to each a


From: Juri Linkov
Subject: bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt
Date: Fri, 08 Nov 2019 00:12:44 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu)

> The prompt is replaced with the message from autorevert. And after
> about 2~3 seconds (not fixed), the prompt comes back. What controls
> the delay(2~3 seconds)? It is not the value of
> minibuffer-message-timeout, which is 0.6. Is this expected?

The problem is that when auto-revert-handler calls minibuffer-message,
the current buffer is not the minibuffer, because functions that call
auto-revert-handler (auto-revert-notify-handler, auto-revert--end-lockout,
or auto-revert-buffers) change the current buffer using with-current-buffer.

When the current buffer is not the minibuffer then minibuffer-message
just calls (message "%s" message) and then does
(sit-for (or minibuffer-message-timeout 1000000))

> And it behaves differently with the following test code:
>
> (progn (run-with-idle-timer 3 nil
>        (lambda ()
>          (minibuffer-message "Reverting buffer `%s'." (buffer-name))))
>     (call-interactively 'find-file))
>
> This works well. The prompt is NOT replaced. The message is appended
> to the end of the prompt and disappears after 0.6 second.

To work well like this, minibuffer-message should be called outside
of with-current-buffer code block.  Yesterday I fixed Man-bgproc-sentinel
in bug#19064 to call minibuffer-message outside of with-current-buffer.

But auto-revert functions require complete rewrite.  I don't see
how this could be fixed with a simple change.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]