]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/help-fns.el (describe-function-1):
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Oct 2017 20:04:02 +0000 (16:04 -0400)
committerGlenn Morris <rgm@gnu.org>
Fri, 20 Oct 2017 20:58:32 +0000 (16:58 -0400)
Fix help-fns-test-dangling-alias.  (Bug#28918)

(cherry picked from commit e1d42f8f4a945669ff8b5159a569cb4b18f56e18)

lisp/help-fns.el

index d75fec2b56471dff4150f67f7741a9a60188bb09..dfff8be2a6ad93244fdfc4d05caea18b30657e6f 100644 (file)
@@ -561,6 +561,8 @@ FILE is the file where FUNCTION was probably defined."
     short))
 
 (defun help-fns--analyse-function (function)
+  ;; FIXME: Document/explain the differences between FUNCTION,
+  ;; REAL-FUNCTION, DEF, and REAL-DEF.
   "Return information about FUNCTION.
 Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
   (let* ((advised (and (symbolp function)
@@ -689,10 +691,15 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
                                 (point))))
   (terpri)(terpri)
 
-  (pcase-let ((`(,real-function ,def ,_aliased ,real-def)
-               (help-fns--analyse-function function))
-              (doc-raw (documentation function t))
-              (key-bindings-buffer (current-buffer)))
+  (pcase-let* ((`(,real-function ,def ,_aliased ,real-def)
+                (help-fns--analyse-function function))
+               (doc-raw (condition-case nil
+                            ;; FIXME: Maybe `documentation' should return nil
+                            ;; for invalid functions i.s.o. signaling an error.
+                            (documentation function t)
+                          ;; E.g. an alias for a not yet defined function.
+                          (invalid-function nil)))
+               (key-bindings-buffer (current-buffer)))
 
     ;; If the function is autoloaded, and its docstring has
     ;; key substitution constructs, load the library.
@@ -703,10 +710,15 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
 
     (help-fns--key-bindings function)
     (with-current-buffer standard-output
-      (let ((doc (help-fns--signature
-                  function doc-raw
-                  (if (subrp def) (indirect-function real-def) real-def)
-                  real-function key-bindings-buffer)))
+      (let ((doc (condition-case nil
+                     ;; FIXME: Maybe `help-fns--signature' should return `doc'
+                     ;; for invalid functions i.s.o. signaling an error.
+                     (help-fns--signature
+                      function doc-raw
+                      (if (subrp def) (indirect-function real-def) real-def)
+                      real-function key-bindings-buffer)
+                   ;; E.g. an alias for a not yet defined function.
+                   (invalid-function doc-raw))))
         (run-hook-with-args 'help-fns-describe-function-functions function)
         (insert "\n" (or doc "Not documented.")))
       ;; Avoid asking the user annoying questions if she decides