* lisp/repeat.el (describe-repeat): New command (bug#49265).

This commit is contained in:
Juri Linkov 2021-06-29 23:36:16 +03:00
parent cd339e85a6
commit 94a2ef436b

View file

@ -397,7 +397,7 @@ When Repeat mode is enabled, and the command symbol has the property named
(and (commandp s)
(get s 'repeat-map)
(push (get s 'repeat-map) keymaps))))))
(message "Repeat mode is enabled for %d commands and %d keymaps"
(message "Repeat mode is enabled for %d commands and %d keymaps; see `describe-repeat'."
(length commands)
(length (delete-dups keymaps))))))
@ -489,6 +489,28 @@ When Repeat mode is enabled, and the command symbol has the property named
repeat-echo-mode-line-string)))
(force-mode-line-update t)))
(defun describe-repeat ()
"Describe repeatable commands and keymaps."
(interactive)
(help-setup-xref (list #'describe-repeat)
(called-interactively-p 'interactive))
(let ((keymaps nil))
(all-completions
"" obarray (lambda (s)
(and (commandp s)
(get s 'repeat-map)
(push s (alist-get (get s 'repeat-map) keymaps)))))
(with-help-window (help-buffer)
(with-current-buffer standard-output
(princ "This is a list of repeatable keymaps and commands.\n\n")
(dolist (keymap (sort keymaps (lambda (a b) (string-lessp (car a) (car b)))))
(princ (format-message "`%s' keymap is repeatable by these commands:\n"
(car keymap)))
(dolist (command (sort (cdr keymap) 'string-lessp))
(princ (format-message " `%s'\n" command)))
(princ "\n"))))))
(provide 'repeat)
;;; repeat.el ends here