Fix completing-read functional REQUIRE-MATCH behavior
authorJoseph Turner <joseph@breatheoutbreathe.in>
Sun, 12 Nov 2023 21:21:50 +0000 (13:21 -0800)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 28 Jan 2024 19:18:48 +0000 (14:18 -0500)
* lisp/minibuffer.el (completion--complete-and-exit): If
minibuffer-completion-confirm is a function which returns nil,
immediately fail to complete.

See bug#66187.

lisp/minibuffer.el

index 3c4315b87fc7823920176070cb827ea1733eb0d2..faa7f543ecec5d78be16cd632d507967fa58158d 100644 (file)
@@ -1847,10 +1847,13 @@ appear to be a match."
    ;; Allow user to specify null string
    ((= beg end) (funcall exit-function))
    ;; The CONFIRM argument is a predicate.
-   ((and (functionp minibuffer-completion-confirm)
-         (funcall minibuffer-completion-confirm
-                  (buffer-substring beg end)))
-    (funcall exit-function))
+   ((functionp minibuffer-completion-confirm)
+    (if (funcall minibuffer-completion-confirm
+                 (buffer-substring beg end))
+        (funcall exit-function)
+      (unless completion-fail-discreetly
+       (ding)
+       (completion--message "No match"))))
    ;; See if we have a completion from the table.
    ((test-completion (buffer-substring beg end)
                      minibuffer-completion-table