From c90dc8a0b7c63ac864f6fdceb8e20d126862d09f Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Sat, 13 Jul 2024 12:53:07 +0200 Subject: [PATCH] Fix 'minibuffer-read-predicate-description' with sole candidate --- lisp/minibuffer.el | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 4365c0badfb..531e8b30dc7 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -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 -- 2.39.5