From 79c5e0fca135c12261ff9b9d3a2fb6c26b0eabac Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Wed, 8 Sep 2021 08:37:11 +0200 Subject: [PATCH] Don't output "probably introduced" if we know the answer for sure * lisp/help-fns.el (help-fns--customize-variable-version): Factored out from `help-fns--customize-variable' to be able to see whether it outputs anything. (help-fns--run-describe-functions): New function. (help-fns--activated-functions): New internal variable. (describe-variable): Use new function. (describe-face, describe-function-1): Ditto (bug#50463). --- lisp/help-fns.el | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 2c7956d9680..3eefdd13d2d 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -64,6 +64,12 @@ described in `help-fns-describe-variable-functions', except that the functions are called with two parameters: The face and the frame.") +(defvar help-fns--activated-functions nil + "Internal variable let-bound to help functions that have triggered. +Help functions can check the contents of this list to see whether +a specific previous help function has inserted something in the +current help buffer.") + ;; Functions (defvar help-definition-prefixes nil @@ -723,8 +729,12 @@ FILE is the file where FUNCTION was probably defined." (add-hook 'help-fns-describe-variable-functions #'help-fns--mention-first-release) (defun help-fns--mention-first-release (object) - (let ((first (if (symbolp object) (help-fns--first-release object)))) - (when first + ;; Don't output anything if we've already output the :version from + ;; the `defcustom'. + (unless (memq 'help-fns--customize-variable-version + help-fns--activated-functions) + (when-let ((first (and (symbolp object) + (help-fns--first-release object)))) (with-current-buffer standard-output (insert (format " Probably introduced at or before Emacs version %s.\n" first)))))) @@ -950,7 +960,8 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)." ;; E.g. an alias for a not yet defined function. ((invalid-function void-function) doc-raw)))) (help-fns--ensure-empty-line) - (run-hook-with-args 'help-fns-describe-function-functions function) + (help-fns--run-describe-functions + help-fns-describe-function-functions function) (help-fns--ensure-empty-line) (insert (or doc "Not documented."))) ;; Avoid asking the user annoying questions if she decides @@ -1211,8 +1222,8 @@ it is displayed along with the global value." alias 'variable-documentation)))) (with-current-buffer buffer - (run-hook-with-args 'help-fns-describe-variable-functions - variable)) + (help-fns--run-describe-functions + help-fns-describe-variable-functions variable)) (with-current-buffer standard-output (help-fns--ensure-empty-line)) @@ -1223,6 +1234,15 @@ it is displayed along with the global value." ;; Return the text we displayed. (buffer-string)))))))) +(defun help-fns--run-describe-functions (functions &rest args) + (let ((help-fns--activated-functions nil)) + (dolist (func functions) + (let ((size (buffer-size standard-output))) + (apply func args) + ;; This function inserted something, so register it. + (when (> (buffer-size) size) + (push func help-fns--activated-functions)))))) + (add-hook 'help-fns-describe-variable-functions #'help-fns--customize-variable) (defun help-fns--customize-variable (variable &optional text) ;; Make a link to customize if this variable can be customized. @@ -1234,13 +1254,15 @@ it is displayed along with the global value." (re-search-backward (concat "\\(" customize-label "\\)") nil t) (help-xref-button 1 'help-customize-variable variable))) - (terpri)) + (terpri)))) + +(add-hook 'help-fns-describe-variable-functions + #'help-fns--customize-variable-version) +(defun help-fns--customize-variable-version (variable) + (when (custom-variable-p variable) ;; Note variable's version or package version. - (let ((output (describe-variable-custom-version-info variable))) - (when output - ;; (terpri) - ;; (terpri) - (princ output))))) + (when-let ((output (describe-variable-custom-version-info variable))) + (princ output)))) (add-hook 'help-fns-describe-variable-functions #'help-fns--var-safe-local) (defun help-fns--var-safe-local (variable) @@ -1479,7 +1501,8 @@ If FRAME is omitted or nil, use the selected frame." (terpri) (terpri)))) (terpri) - (run-hook-with-args 'help-fns-describe-face-functions f frame)))))) + (help-fns--run-describe-functions + help-fns-describe-face-functions f frame)))))) (add-hook 'help-fns-describe-face-functions #'help-fns--face-custom-version-info) -- 2.39.5