mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Support completion-eager-display in completing-read-multiple
Make completing-read-multiple do eager display of *Completions* when the table requests it. As a side-effect of the implementation, we now check again if eager-display is enabled if we have to retry doing eager-display due to being interrupted by user input. This is mildly nicer since it gives the completion table a little more control: for example, maybe the table only wants to do eager-display if the minibuffer is empty; this change makes that work better. * lisp/minibuffer.el (completions--start-eager-display) (completing-read-default): Move the code for checking whether to do eager-display into completions--start-eager-display. * lisp/emacs-lisp/crm.el (completing-read-multiple): Call completions--start-eager-display (bug#79858).
This commit is contained in:
parent
43bcf3c43b
commit
e576dc7556
2 changed files with 16 additions and 16 deletions
|
|
@ -285,7 +285,8 @@ with empty strings removed."
|
||||||
(unless (eq require-match t) require-match))
|
(unless (eq require-match t) require-match))
|
||||||
(setq-local minibuffer--require-match require-match)
|
(setq-local minibuffer--require-match require-match)
|
||||||
(setq-local minibuffer--original-buffer buffer)
|
(setq-local minibuffer--original-buffer buffer)
|
||||||
(setq-local crm-completion-table table))
|
(setq-local crm-completion-table table)
|
||||||
|
(completions--start-eager-display))
|
||||||
(setq input (read-from-minibuffer
|
(setq input (read-from-minibuffer
|
||||||
(format-spec
|
(format-spec
|
||||||
crm-prompt
|
crm-prompt
|
||||||
|
|
|
||||||
|
|
@ -2767,9 +2767,19 @@ so that the update is less likely to interfere with user typing."
|
||||||
(completions--start-eager-display))))
|
(completions--start-eager-display))))
|
||||||
|
|
||||||
(defun completions--start-eager-display ()
|
(defun completions--start-eager-display ()
|
||||||
"Display the *Completions* buffer when the user is next idle."
|
"Maybe display the *Completions* buffer when the user is next idle.
|
||||||
|
|
||||||
|
Only displays if `completion-eager-display' is t, or if eager display
|
||||||
|
has been requested by the completion table."
|
||||||
|
(when completion-eager-display
|
||||||
|
(when (or (eq completion-eager-display t)
|
||||||
|
(completion-metadata-get
|
||||||
|
(completion-metadata
|
||||||
|
(buffer-substring-no-properties (minibuffer-prompt-end) (point))
|
||||||
|
minibuffer-completion-table minibuffer-completion-predicate)
|
||||||
|
'eager-display))
|
||||||
(setq completion-eager-display--timer
|
(setq completion-eager-display--timer
|
||||||
(run-with-idle-timer 0 nil #'completions--eager-display)))
|
(run-with-idle-timer 0 nil #'completions--eager-display)))))
|
||||||
|
|
||||||
(defun completions--post-command-update ()
|
(defun completions--post-command-update ()
|
||||||
"Update displayed *Completions* buffer after command, once."
|
"Update displayed *Completions* buffer after command, once."
|
||||||
|
|
@ -5159,18 +5169,7 @@ See `completing-read' for the meaning of the arguments."
|
||||||
(setq-local minibuffer--original-buffer buffer)
|
(setq-local minibuffer--original-buffer buffer)
|
||||||
;; Copy the value from original buffer to the minibuffer.
|
;; Copy the value from original buffer to the minibuffer.
|
||||||
(setq-local completion-ignore-case c-i-c)
|
(setq-local completion-ignore-case c-i-c)
|
||||||
;; Show the completion help eagerly if
|
(completions--start-eager-display))
|
||||||
;; `completion-eager-display' is t or if eager display
|
|
||||||
;; has been requested by the completion table.
|
|
||||||
(when completion-eager-display
|
|
||||||
(when (or (eq completion-eager-display t)
|
|
||||||
(completion-metadata-get
|
|
||||||
(completion-metadata
|
|
||||||
(buffer-substring-no-properties
|
|
||||||
(minibuffer-prompt-end) (point))
|
|
||||||
collection predicate)
|
|
||||||
'eager-display))
|
|
||||||
(completions--start-eager-display))))
|
|
||||||
(read-from-minibuffer prompt initial-input keymap
|
(read-from-minibuffer prompt initial-input keymap
|
||||||
nil hist def inherit-input-method))))
|
nil hist def inherit-input-method))))
|
||||||
(when (and (equal result "") def)
|
(when (and (equal result "") def)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue