]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'minibuffer-read-predicate-description' with sole candidate
authorEshel Yaron <me@eshelyaron.com>
Sat, 13 Jul 2024 10:53:07 +0000 (12:53 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 13 Jul 2024 10:53:07 +0000 (12:53 +0200)
lisp/minibuffer.el

index 4365c0badfb995286b84369a01c28d4baf800cd8..531e8b30dc7f0e7cee60e8c94062e62a7a2efd4b 100644 (file)
@@ -5836,24 +5836,36 @@ DESC is a string describing predicate PRED."
 
 (defun minibuffer-read-predicate-description (prompt &optional default)
   "Prompt with PROMPT for current completion predicate description.
+
 Optional argument DEFAULT is the default minibuffer argument.  If
 omitted or nil, it defaults to the description of the predicate you
-added last."
-  (let ((default (or default (minibuffer-latest-predicate-description))))
-    (completing-read (format-prompt prompt default)
-                     (completion-table-dynamic
-                      (let ((buf (current-buffer)))
-                        (lambda (&rest _)
-                          (with-current-buffer buf
-                            (let ((descs nil))
-                              (advice-function-mapc
-                               (lambda (_a p)
-                                 (when-let ((d (alist-get 'description p)))
-                                   (push d descs)))
-                               minibuffer-completion-predicate)
-                              ;; Put latest restriction first.
-                              (reverse descs))))))
-                     nil t nil nil default)))
+added last.
+
+If there is only one current completion predicate, return its
+description without prompting."
+  (let ((default (or default (minibuffer-latest-predicate-description)))
+        (single nil))
+    (advice-function-mapc
+     (lambda (_a p)
+       (when-let ((d (alist-get 'description p)))
+         (setq single (if single t d))))
+     minibuffer-completion-predicate)
+    (if (stringp single) single
+      (completing-read
+       (format-prompt prompt default)
+       (completion-table-dynamic
+        (let ((buf (current-buffer)))
+          (lambda (&rest _)
+            (with-current-buffer buf
+              (let ((descs nil))
+                (advice-function-mapc
+                 (lambda (_a p)
+                   (when-let ((d (alist-get 'description p)))
+                     (push d descs)))
+                 minibuffer-completion-predicate)
+                ;; Put latest restriction first.
+                (reverse descs))))))
+       nil t nil nil default))))
 
 (defun minibuffer-predicate-description-to-function (desc)
   (catch 'stop