From 98e3ee27472d071c353743dcfc0eaef7c2f21059 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 14 Feb 2021 14:07:48 +0100 Subject: [PATCH] Make `C-h m' list unbound commands applicable for the mode * lisp/help-fns.el (help-fns--list-local-commands): New function. (describe-mode): Use it. --- lisp/help-fns.el | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index b03a44041296..0e2c68292c62 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -1827,9 +1827,30 @@ documentation for the major and minor modes of that buffer." nil t) (help-xref-button 1 'help-function-def mode file-name))))) (princ ":\n") - (princ (help-split-fundoc (documentation major-mode) nil 'doc))))) + (princ (help-split-fundoc (documentation major-mode) nil 'doc)) + (princ (help-fns--list-local-commands))))) ;; For the sake of IELM and maybe others nil) + +(defun help-fns--list-local-commands () + (let ((functions nil)) + (mapatoms + (lambda (sym) + (when (and (commandp sym) + ;; Ignore aliases. + (not (symbolp (symbol-function sym))) + ;; Ignore everything bound. + (not (where-is-internal sym)) + (apply #'derived-mode-p (command-modes sym))) + (push sym functions)))) + (with-temp-buffer + (when functions + (setq functions (sort functions #'string<)) + (insert "\n\nOther commands for this mode, not bound to any keys:\n\n") + (dolist (function functions) + (insert (format "`%s'\n" function)))) + (buffer-string)))) + ;; Widgets.