From 94a2ef436b857d8b9909d8629190bd3fbb1be5d7 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 29 Jun 2021 23:36:16 +0300 Subject: [PATCH] * lisp/repeat.el (describe-repeat): New command (bug#49265). --- lisp/repeat.el | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lisp/repeat.el b/lisp/repeat.el index 46c880d0dde..503cb340006 100644 --- a/lisp/repeat.el +++ b/lisp/repeat.el @@ -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 -- 2.39.2