]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow exit-minibuffer to be called from Lisp code. Fixes bug #46373
authorAlan Mackenzie <acm@muc.de>
Tue, 9 Feb 2021 09:41:13 +0000 (09:41 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 9 Feb 2021 09:41:13 +0000 (09:41 +0000)
* lisp/minibuffer.el (exit-minibuffer): Throw the error "Not in most nested
minibuffer" only when the current buffer is a minibuffer (thus the command
came directly from a key binding).

* doc/lispref/minibuf.texi (Minibuffer Commands): Change the documentation
accordingly.

doc/lispref/minibuf.texi
lisp/minibuffer.el

index 185d355ba7096f3ef2d610c65ae3f2246fe7a17f..b60775d45756830eea4074fdf398a59182a270d5 100644 (file)
@@ -2393,7 +2393,7 @@ minibuffer.
 @deffn Command exit-minibuffer
 This command exits the active minibuffer.  It is normally bound to
 keys in minibuffer local keymaps.  The command throws an error if the
-current buffer is not the active minibuffer.
+current buffer is a minibuffer, but not the active minibuffer.
 @end deffn
 
 @deffn Command self-insert-and-exit
index 03cc70c0d4deeab43655b0e850c9bbb21aebfa96..a899a943d4c2f86a6ceff86f206ef567cbf9ec74 100644 (file)
@@ -2116,13 +2116,15 @@ variables.")
 (defun exit-minibuffer ()
   "Terminate this minibuffer argument."
   (interactive)
+  (when (or
+         (innermost-minibuffer-p)
+         (not (minibufferp)))
   ;; If the command that uses this has made modifications in the minibuffer,
   ;; we don't want them to cause deactivation of the mark in the original
   ;; buffer.
   ;; A better solution would be to make deactivate-mark buffer-local
   ;; (or to turn it into a list of buffers, ...), but in the mean time,
   ;; this should do the trick in most cases.
-  (when (innermost-minibuffer-p)
     (setq deactivate-mark nil)
     (throw 'exit nil))
   (error "%s" "Not in most nested minibuffer"))