summaryrefslogtreecommitdiff
path: root/lisp/minibuffer.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2023-11-08 09:38:35 +0200
committerJuri Linkov <juri@linkov.net>2023-11-08 09:38:35 +0200
commit01912a0679ea3feb48fdde4dab372c056bce446e (patch)
tree31f1ab8c567667baf48972f2945cdb279da81b4c /lisp/minibuffer.el
parent089b7d4e6281f47fae51668ce6947aad24e34b76 (diff)
downloademacs-01912a0679ea3feb48fdde4dab372c056bce446e.tar.gz
* lisp/minibuffer.el (minibuffer-choose-completion-or-exit): New command.
(minibuffer-visible-completions-map): Bind it to "RET". https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00246.html
Diffstat (limited to 'lisp/minibuffer.el')
-rw-r--r--lisp/minibuffer.el14
1 files changed, 12 insertions, 2 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 7a791fafaa6..bf1e014319e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -3000,7 +3000,7 @@ displaying the *Completions* buffer exists."
"<right>" (minibuffer-visible-completions-bind #'minibuffer-next-completion)
"<up>" (minibuffer-visible-completions-bind #'minibuffer-previous-line-completion)
"<down>" (minibuffer-visible-completions-bind #'minibuffer-next-line-completion)
- "RET" (minibuffer-visible-completions-bind #'minibuffer-choose-completion)
+ "RET" (minibuffer-visible-completions-bind #'minibuffer-choose-completion-or-exit)
"C-g" (minibuffer-visible-completions-bind #'minibuffer-hide-completions))
@@ -4682,10 +4682,20 @@ of `completion-no-auto-exit'.
If NO-QUIT is non-nil, insert the completion candidate at point to the
minibuffer, but don't quit the completions window."
(interactive "P")
- (with-minibuffer-completions-window
+ (with-minibuffer-completions-window
(let ((completion-use-base-affixes t))
(choose-completion nil no-exit no-quit))))
+(defun minibuffer-choose-completion-or-exit (&optional no-exit no-quit)
+ "Choose the completion from the minibuffer or exit the minibuffer.
+When `minibuffer-choose-completion' can't find a completion candidate
+in the completions window, then exit the minibuffer using its present
+contents."
+ (interactive "P")
+ (condition-case nil
+ (minibuffer-choose-completion no-exit no-quit)
+ (error (exit-minibuffer))))
+
(defun minibuffer-complete-history ()
"Complete the minibuffer history as far as possible.
Like `minibuffer-complete' but completes on the history items