[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: |
Sun, 10 Nov 2019 01:05:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) |
> I got it. Thanks for your explaination.
>
> It is strange that minibuffer-message-timeout is defined in C.
> But the timeout is processed in lisp (in the function minibuffer-message).
>
> 在 2019年11月8日 +0800 AM6:58,Juri Linkov <juri@linkov.net>,写道:
>
> 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.
Actually I found a solution with two alternatives, and both works well,
and I can't decide which is less error-prone. This patch shows both:
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 9275513c8d..17678010f1 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -815,7 +815,13 @@ auto-revert-handler
(when revert
(when (and auto-revert-verbose
(not (eq revert 'fast)))
- (message "Reverting buffer `%s'." (buffer-name)))
+ ;; 1.
+ (with-selected-window (old-selected-window)
+ (minibuffer-message "Reverting buffer `%s'." (buffer-name)))
+ ;; 2.
+ ;; (with-current-buffer (window-buffer (old-selected-window))
+ ;; (minibuffer-message "Reverting buffer `%s'." (buffer-name)))
+ )
;; If point (or a window point) is at the end of the buffer, we
;; want to keep it at the end after reverting. This allows one
;; to tail a file.
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Juri Linkov, 2019/11/06
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, HaiJun Zhang, 2019/11/07
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Juri Linkov, 2019/11/07
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, HaiJun Zhang, 2019/11/07
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt,
Juri Linkov <=
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, HaiJun Zhang, 2019/11/09
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Juri Linkov, 2019/11/10
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, HaiJun Zhang, 2019/11/11
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, martin rudalics, 2019/11/12
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Zhang Haijun, 2019/11/13
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, HaiJun Zhang, 2019/11/11
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Juri Linkov, 2019/11/12
- bug#34614: 26.1.92; When reading input in mini-buffer, message to each area overide the input prompt, Zhang Haijun, 2019/11/13