(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))))))
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