(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