Try to speed up extended command shorthand computation
Discussed in Bug#51143. * lisp/simple.el (execute-extended-command--shorter): Compute a complete list of `commandp' symbols once. This significantly speeds up complicated cases while the slowdown of simple cases is still accetable.
This commit is contained in:
parent
90c3a25eb1
commit
93136169cb
1 changed files with 6 additions and 2 deletions
|
|
@ -2465,9 +2465,13 @@ Also see `suggest-key-bindings'."
|
|||
|
||||
(defun execute-extended-command--shorter (name typed)
|
||||
(let ((candidates '())
|
||||
commands
|
||||
(max (length typed))
|
||||
(len 1)
|
||||
binding)
|
||||
;; Precompute a list of commands once to avoid repeated `commandp' testing
|
||||
;; of symbols in the `completion-try-completion' call inside the loop below
|
||||
(mapatoms (lambda (s) (when (commandp s) (push s commands))))
|
||||
(while (and (not binding)
|
||||
(progn
|
||||
(unless candidates
|
||||
|
|
@ -2480,8 +2484,8 @@ Also see `suggest-key-bindings'."
|
|||
(input-pending-p) ;Dummy call to trigger input-processing, bug#23002.
|
||||
(let ((candidate (pop candidates)))
|
||||
(when (equal name
|
||||
(car-safe (completion-try-completion
|
||||
candidate obarray 'commandp len)))
|
||||
(car-safe (completion-try-completion
|
||||
candidate commands nil len)))
|
||||
(setq binding candidate))))
|
||||
binding))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue