mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 10:31:37 -08:00
Run execute-extended-command key binding suggestion from a timer
* lisp/simple.el (execute-extended-command): Run the key binding suggestion from a timer instead of in the program flow -- this allows `post-command-hook' to be executed immediately (bug#50042).
This commit is contained in:
parent
55772baee1
commit
42a98feb5b
1 changed files with 20 additions and 9 deletions
|
|
@ -2194,6 +2194,8 @@ Also see `suggest-key-bindings'."
|
|||
(setq binding candidate))))
|
||||
binding))
|
||||
|
||||
(defvar execute-extended-command--binding-timer nil)
|
||||
|
||||
(defun execute-extended-command (prefixarg &optional command-name typed)
|
||||
;; Based on Fexecute_extended_command in keyboard.c of Emacs.
|
||||
;; Aaron S. Hawley <aaron.s.hawley(at)gmail.com> 2009-08-24
|
||||
|
|
@ -2258,15 +2260,24 @@ invoking, give a prefix argument to `execute-extended-command'."
|
|||
(setq binding (execute-extended-command--shorter
|
||||
(symbol-name function) typed))))
|
||||
(when binding
|
||||
(with-temp-message
|
||||
(format-message "You can run the command `%s' with %s"
|
||||
function
|
||||
(if (stringp binding)
|
||||
(concat "M-x " binding " RET")
|
||||
(key-description binding)))
|
||||
(sit-for (if (numberp suggest-key-bindings)
|
||||
suggest-key-bindings
|
||||
2))))))))
|
||||
;; This is normally not necessary -- the timer should run
|
||||
;; immediately, but be defensive and ensure that we never
|
||||
;; have two of these timers in flight.
|
||||
(when execute-extended-command--binding-timer
|
||||
(cancel-timer execute-extended-command--binding-timer))
|
||||
(setq execute-extended-command--binding-timer
|
||||
(run-at-time
|
||||
0 nil
|
||||
(lambda ()
|
||||
(with-temp-message
|
||||
(format-message "You can run the command `%s' with %s"
|
||||
function
|
||||
(if (stringp binding)
|
||||
(concat "M-x " binding " RET")
|
||||
(key-description binding)))
|
||||
(sit-for (if (numberp suggest-key-bindings)
|
||||
suggest-key-bindings
|
||||
2)))))))))))
|
||||
|
||||
(defun execute-extended-command-for-buffer (prefixarg &optional
|
||||
command-name typed)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue