From 451d5c6f05dfe4c8e74c4361bba00290ffe5bc62 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 11 Feb 2026 15:53:09 -0500 Subject: [PATCH] (describe-mode): Fix bug#80170 * lisp/help-fns.el (describe-mode--minor-modes): Add argument `buffer`. (describe-mode): Use it to fix call to `documentation` so the docstrings are computed in the right buffer and thus show correctly when bindings are shadowed by minor modes. --- lisp/help-fns.el | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 73066dd6f3d..f1ee109c87e 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -2242,7 +2242,7 @@ is enabled in the Help buffer." (insert (format "Minor mode%s enabled in this buffer:" (if (length> local-minors 1) "s" "")))) - (describe-mode--minor-modes local-minors)) + (describe-mode--minor-modes local-minors nil buffer)) ;; Document the major mode. (let ((major (buffer-local-value 'major-mode buffer))) @@ -2269,7 +2269,9 @@ is enabled in the Help buffer." (help-function-def--button-function major file-name)))))) (insert ":\n\n" - (help-split-fundoc (documentation major) nil 'doc) + (help-split-fundoc (with-current-buffer buffer + (documentation major)) + nil 'doc) (with-current-buffer buffer (help-fns--list-local-commands))) (ensure-empty-lines 1) @@ -2280,7 +2282,7 @@ is enabled in the Help buffer." (insert (format "Global minor mode%s enabled:" (if (length> global-minor-modes 1) "s" "")))) - (describe-mode--minor-modes global-minor-modes t) + (describe-mode--minor-modes global-minor-modes t buffer) (unless describe-mode-outline (when (re-search-forward "^\f") (beginning-of-line) @@ -2297,7 +2299,7 @@ is enabled in the Help buffer." ;; For the sake of IELM and maybe others nil))))) -(defun describe-mode--minor-modes (modes &optional global) +(defun describe-mode--minor-modes (modes &optional global buffer) (dolist (mode (seq-sort #'string< modes)) (let ((pretty-minor-mode (capitalize @@ -2338,7 +2340,10 @@ is enabled in the Help buffer." "no indicator" (format "indicator%s" indicator))))) - (insert (or (help-split-fundoc (documentation mode) nil 'doc) + (insert (or (help-split-fundoc + (with-current-buffer (or buffer (current-buffer)) + (documentation mode)) + nil 'doc) "No docstring")) (when describe-mode-outline (insert "\n\n")))))