diff options
author | Juri Linkov <juri@linkov.net> | 2019-06-03 23:27:19 +0300 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2019-06-03 23:27:19 +0300 |
commit | 2aae063055283ee64ecf339c812a1fe6d1cb106e (patch) | |
tree | 8960dde95c069c045dbd3348b82f4eedf93a307f | |
parent | 9d72d6a3a2fb23c6f7123c5aba2457dee93d9454 (diff) | |
download | emacs-2aae063055283ee64ecf339c812a1fe6d1cb106e.tar.gz |
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)
-rw-r--r-- | etc/NEWS | 6 | ||||
-rw-r--r-- | lisp/simple.el | 22 |
2 files changed, 28 insertions, 0 deletions
@@ -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 4454791ad20..6bc3bc5304c 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") |