emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 2aae063: User-friendly display of error messages at


From: Juri Linkov
Subject: [Emacs-diffs] master 2aae063: User-friendly display of error messages at the end of minibuffer
Date: Mon, 3 Jun 2019 16:27:25 -0400 (EDT)

branch: master
commit 2aae063055283ee64ecf339c812a1fe6d1cb106e
Author: Juri Linkov <address@hidden>
Commit: Juri Linkov <address@hidden>

    User-friendly display of error messages at the end of minibuffer
    
    * lisp/simple.el (minibuffer-setup-hook): Add minibuffer-error-initialize.
    (minibuffer-error-initialize, minibuffer-error-function): New functions.
    (Bug#34939)
---
 etc/NEWS       |  6 ++++++
 lisp/simple.el | 22 ++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/etc/NEWS b/etc/NEWS
index 975fab4..980f512 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -471,6 +471,12 @@ its functions.
 names match certain regular expressions as big.  Ido won't attempt to
 list the contents of such directories when completing file names.
 
+** Minibuffer
+
+---
+*** Minibuffer now uses 'minibuffer-message' to display error messages
+at the end of the active minibuffer.
+
 ** map.el
 *** Now also understands plists.
 *** Now defined via generic functions that can be extended via 'cl-defmethod'.
diff --git a/lisp/simple.el b/lisp/simple.el
index 4454791..6bc3bc5 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2440,6 +2440,28 @@ Go to the history element by the absolute history 
position HIST-POS."
   (goto-history-element hist-pos))
 
 
+(add-hook 'minibuffer-setup-hook 'minibuffer-error-initialize)
+
+(defun minibuffer-error-initialize ()
+  "Set up minibuffer error processing."
+  (setq-local command-error-function 'minibuffer-error-function))
+
+(defun minibuffer-error-function (data context caller)
+  "Display error messages in the active minibuffer.
+The same as `command-error-default-function' but display error messages
+at the end of the minibuffer using `minibuffer-message' to not obscure
+the minibuffer contents."
+  (discard-input)
+  (ding)
+  (let ((string (error-message-string data)))
+    ;; If we know from where the error was signaled, show it in
+    ;; *Messages*.
+    (let ((inhibit-message t))
+      (message "%s%s" (if caller (format "%s: " caller) "") string))
+    ;; Display an error message at the end of the minibuffer.
+    (minibuffer-message (concat context string))))
+
+
 ;Put this on C-x u, so we can force that rather than C-_ into startup msg
 (define-obsolete-function-alias 'advertised-undo 'undo "23.2")
 



reply via email to

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