diff options
author | Juri Linkov <juri@linkov.net> | 2021-05-20 21:37:04 +0300 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2021-05-20 21:37:04 +0300 |
commit | e0ebce5ce2ba76779a5a74dcffba60b83cf9df2f (patch) | |
tree | b5b2a73463027bf217892b15e8880a21538e4d0f /lisp | |
parent | 9be9d1f94ed6506f5b9659dfb40e5b5d8cdb3310 (diff) | |
download | emacs-e0ebce5ce2ba76779a5a74dcffba60b83cf9df2f.tar.gz emacs-e0ebce5ce2ba76779a5a74dcffba60b83cf9df2f.tar.bz2 emacs-e0ebce5ce2ba76779a5a74dcffba60b83cf9df2f.zip |
* lisp/help.el (describe-bindings-outline): New defcustom (bug#45147).
(describe-bindings): Use describe-bindings-outline.
(describe-bindings-internal): Remove function obsolete since 24.4.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/help.el | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/lisp/help.el b/lisp/help.el index babaf4adc75..1bb1b307723 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -561,6 +561,12 @@ To record all your input, use `open-dribble-file'." 'font-lock-face 'help-key-binding 'face 'help-key-binding)) +(defcustom describe-bindings-outline nil + "Non-nil enables outlines in the output buffer of `describe-bindings'." + :type 'boolean + :group 'help + :version "28.1") + (defun describe-bindings (&optional prefix buffer) "Display a buffer showing a list of all defined keys, and their definitions. The keys are displayed in order of precedence. @@ -578,23 +584,26 @@ or a buffer name." ;; Be aware that `describe-buffer-bindings' puts its output into ;; the current buffer. (with-current-buffer (help-buffer) - (describe-buffer-bindings buffer prefix)))) - -(defun describe-bindings-internal (&optional menus prefix) - "Show a list of all defined keys, and their definitions. -We put that list in a buffer, and display the buffer. - -The optional argument MENUS, if non-nil, says to mention menu bindings. -\(Ordinarily these are omitted from the output.) -The optional argument PREFIX, if non-nil, should be a key sequence; -then we display only bindings that start with that prefix." - (declare (obsolete describe-buffer-bindings "24.4")) - (let ((buf (current-buffer))) - (with-help-window (help-buffer) - ;; Be aware that `describe-buffer-bindings' puts its output into - ;; the current buffer. - (with-current-buffer (help-buffer) - (describe-buffer-bindings buf prefix menus))))) + (describe-buffer-bindings buffer prefix) + + (when describe-bindings-outline + (setq-local outline-regexp ".*:$") + (setq-local outline-heading-end-regexp ":\n") + (setq-local outline-level (lambda () 1)) + (setq-local outline-minor-mode-cycle t + outline-minor-mode-highlight t) + (outline-minor-mode 1) + (save-excursion + (let ((inhibit-read-only t)) + (goto-char (point-min)) + (insert (substitute-command-keys + (concat "\\<outline-mode-cycle-map>Type " + "\\[outline-cycle] or \\[outline-cycle-buffer] " + "on headings to cycle their visibility.\n\n"))) + ;; Hide the longest body + (when (and (re-search-forward "Key translations" nil t) + (fboundp 'outline-cycle)) + (outline-cycle)))))))) (defun where-is (definition &optional insert) "Print message listing key sequences that invoke the command DEFINITION. |