emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 79c5e0f 1/2: Don't output "probably introduced" if we know the an


From: Lars Ingebrigtsen
Subject: master 79c5e0f 1/2: Don't output "probably introduced" if we know the answer for sure
Date: Wed, 8 Sep 2021 02:50:36 -0400 (EDT)

branch: master
commit 79c5e0fca135c12261ff9b9d3a2fb6c26b0eabac
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    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 2c7956d..3eefdd1 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]