minibuffer-force-complete-and-exit: Allow input with no matches
* lisp/minibuffer.el (minibuffer--require-match): New variable. (completing-read-default): Bind it to the REQUIRE-MATCH value. (minibuffer-force-complete-and-exit): Consult it to allow input with no matches when a match is not required (bug#38992). * lisp/icomplete.el (icomplete-exhibit): Use it to render the correct parens around matches.
This commit is contained in:
parent
34132d4bf6
commit
335a9bd215
2 changed files with 11 additions and 2 deletions
|
@ -541,7 +541,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'."
|
|||
(icomplete--completion-table)
|
||||
(icomplete--completion-predicate)
|
||||
(if (window-minibuffer-p)
|
||||
(not minibuffer-completion-confirm)))))
|
||||
(eq minibuffer--require-match t)))))
|
||||
(buffer-undo-list t)
|
||||
deactivate-mark)
|
||||
;; Do nothing if while-no-input was aborted.
|
||||
|
|
|
@ -1400,7 +1400,11 @@ scroll the window of possible completions."
|
|||
(minibuffer-prompt-end) (point-max) #'exit-minibuffer
|
||||
;; If the previous completion completed to an element which fails
|
||||
;; test-completion, then we shouldn't exit, but that should be rare.
|
||||
(lambda () (minibuffer-message "Incomplete"))))
|
||||
(lambda ()
|
||||
(if minibuffer--require-match
|
||||
(minibuffer-message "Incomplete")
|
||||
;; If a match is not required, exit after all.
|
||||
(exit-minibuffer)))))
|
||||
|
||||
(defun minibuffer-force-complete (&optional start end dont-cycle)
|
||||
"Complete the minibuffer to an exact match.
|
||||
|
@ -1464,6 +1468,9 @@ DONT-CYCLE tells the function not to setup cycling."
|
|||
"List of commands which cause an immediately following
|
||||
`minibuffer-complete-and-exit' to ask for extra confirmation.")
|
||||
|
||||
(defvar minibuffer--require-match nil
|
||||
"Value of REQUIRE-MATCH passed to `completing-read'.")
|
||||
|
||||
(defun minibuffer-complete-and-exit ()
|
||||
"Exit if the minibuffer contains a valid completion.
|
||||
Otherwise, try to complete the minibuffer contents. If
|
||||
|
@ -3748,8 +3755,10 @@ See `completing-read' for the meaning of the arguments."
|
|||
|
||||
(let* ((minibuffer-completion-table collection)
|
||||
(minibuffer-completion-predicate predicate)
|
||||
;; FIXME: Remove/rename this var, see the next one.
|
||||
(minibuffer-completion-confirm (unless (eq require-match t)
|
||||
require-match))
|
||||
(minibuffer--require-match require-match)
|
||||
(base-keymap (if require-match
|
||||
minibuffer-local-must-match-map
|
||||
minibuffer-local-completion-map))
|
||||
|
|
Loading…
Add table
Reference in a new issue