Fix suggest-key-bindings displaying key as command
* lisp/simple.el (execute-extended-command--describe-binding-msg): New function factored out from... (execute-extended-command): ...here. Fix bug where a key binding was displayed as a command with 'suggest-key-bindings'. (Bug#59247) * test/lisp/simple-tests.el (simple-execute-extended-command--describe-binding-msg): New test.
This commit is contained in:
parent
443bd35e86
commit
a5bf6fb526
2 changed files with 23 additions and 8 deletions
|
@ -2491,6 +2491,13 @@ Also see `suggest-key-bindings'."
|
|||
|
||||
(defvar execute-extended-command--binding-timer nil)
|
||||
|
||||
(defun execute-extended-command--describe-binding-msg (function binding shorter)
|
||||
(format-message "You can run the command `%s' with %s"
|
||||
function
|
||||
(cond (shorter (concat "M-x " shorter))
|
||||
((stringp binding) binding)
|
||||
(t (key-description binding)))))
|
||||
|
||||
(defun execute-extended-command (prefixarg &optional command-name typed)
|
||||
"Read a command name, then read the arguments and call the command.
|
||||
To pass a prefix argument to the command you are
|
||||
|
@ -2514,7 +2521,7 @@ invoking, give a prefix argument to `execute-extended-command'."
|
|||
(not executing-kbd-macro)
|
||||
(where-is-internal function overriding-local-map t)))
|
||||
(delay-before-suggest 0)
|
||||
(find-shorter nil))
|
||||
find-shorter shorter)
|
||||
(unless (commandp function)
|
||||
(error "`%s' is not a valid command name" command-name))
|
||||
;; If we're executing a command that's remapped, we can't actually
|
||||
|
@ -2568,15 +2575,12 @@ invoking, give a prefix argument to `execute-extended-command'."
|
|||
(when find-shorter
|
||||
(while-no-input
|
||||
;; FIXME: Can be slow. Cache it maybe?
|
||||
(setq binding (execute-extended-command--shorter
|
||||
(setq shorter (execute-extended-command--shorter
|
||||
(symbol-name function) typed))))
|
||||
(when binding
|
||||
(when (or binding shorter)
|
||||
(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)))
|
||||
(execute-extended-command--describe-binding-msg
|
||||
function binding shorter)
|
||||
(sit-for (if (numberp suggest-key-bindings)
|
||||
suggest-key-bindings
|
||||
2))))))))))))
|
||||
|
|
|
@ -84,6 +84,17 @@
|
|||
"display-line")
|
||||
"di-n")))
|
||||
|
||||
(ert-deftest simple-execute-extended-command--describe-binding-msg ()
|
||||
(should (equal (execute-extended-command--describe-binding-msg
|
||||
'foo "m" nil)
|
||||
"You can run the command ‘foo’ with m"))
|
||||
(should (equal (execute-extended-command--describe-binding-msg
|
||||
'foo [14] nil)
|
||||
"You can run the command ‘foo’ with C-n"))
|
||||
(should (equal (execute-extended-command--describe-binding-msg
|
||||
'display-line-numbers-mode nil "di-n")
|
||||
"You can run the command ‘display-line-numbers-mode’ with M-x di-n")))
|
||||
|
||||
|
||||
;;; `transpose-sexps'
|
||||
(defmacro simple-test--transpositions (&rest body)
|
||||
|
|
Loading…
Add table
Reference in a new issue