aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2020-01-21 17:58:23 +0200
committerEli Zaretskii2020-01-21 17:58:23 +0200
commit5abd8d73b08f0ef57b1ddcab298fa7a3aff8f45c (patch)
tree718194e9822a02e6d11bdecafb0595bb3bddda9d
parentf2f9f2f98ef34bc9c6eef6a7b85b75e4581daabc (diff)
downloademacs-5abd8d73b08f0ef57b1ddcab298fa7a3aff8f45c.tar.gz
emacs-5abd8d73b08f0ef57b1ddcab298fa7a3aff8f45c.zip
Improve display of temporary echo messages
* lisp/minibuffer.el (set-minibuffer-message): Fix cursor position for the temporary display of an echo-area message when minibuffer is active. Ensure the message is visible even if the end of the completion candidates presented by the likes of Icomplete mode is not visible due to its length, under resize-mini-windows = nil. (Bug#38457)
-rw-r--r--lisp/minibuffer.el10
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 4831bf72e9d..0589211877a 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -766,7 +766,7 @@ and `clear-minibuffer-message' called automatically via
766(defun set-minibuffer-message (message) 766(defun set-minibuffer-message (message)
767 "Temporarily display MESSAGE at the end of the minibuffer. 767 "Temporarily display MESSAGE at the end of the minibuffer.
768The text is displayed for `minibuffer-message-clear-timeout' seconds 768The text is displayed for `minibuffer-message-clear-timeout' seconds
769(if the value is a number), or until the next input event arrives, 769\(if the value is a number), or until the next input event arrives,
770whichever comes first. 770whichever comes first.
771Unlike `minibuffer-message', this function is called automatically 771Unlike `minibuffer-message', this function is called automatically
772via `set-message-function'." 772via `set-message-function'."
@@ -790,8 +790,14 @@ via `set-message-function'."
790 ;; The current C cursor code doesn't know to use the overlay's 790 ;; The current C cursor code doesn't know to use the overlay's
791 ;; marker's stickiness to figure out whether to place the cursor 791 ;; marker's stickiness to figure out whether to place the cursor
792 ;; before or after the string, so let's spoon-feed it the pos. 792 ;; before or after the string, so let's spoon-feed it the pos.
793 (put-text-property 0 1 'cursor t message)) 793 (put-text-property 0 1 'cursor 1 message))
794 (overlay-put minibuffer-message-overlay 'after-string message) 794 (overlay-put minibuffer-message-overlay 'after-string message)
795 ;; Make sure the overlay with the message is displayed before
796 ;; any other overlays in that position, in case they have
797 ;; resize-mini-windows set to nil and the other overlay strings
798 ;; are too long for the mini-window width. This makes sure the
799 ;; temporary message will always be visible.
800 (overlay-put minibuffer-message-overlay 'priority 1100)
795 801
796 (when (numberp minibuffer-message-clear-timeout) 802 (when (numberp minibuffer-message-clear-timeout)
797 (setq minibuffer-message-timer 803 (setq minibuffer-message-timer