diff lisp/help.el @ 4695:fee33ab25966

Add arglist info for autoloaded functions and macros. lisp/ChangeLog addition: 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> Add arglist information to docstrings for autoloaded functions and macros. * hyper-apropos.el (hyper-apropos-get-doc): Treat autoload docstrings like subr docstrings; correct the regexp used. * help.el (describe-function-show-arglist): This no longer treats autoloads specially. (function-arglist): Treat autoload docstrings like subr docstrings. (function-documentation): Treat documentation strings that are zero-length after the arglist has been removed as indicating a lack of documentation. * cl-macs.el (case): (ecase): (typecase): (etypecase): (block): (return): (return-from): (progv): (lexical-let): (lexical-let*): (remf): (callf): (callf2): (define-modify-macro): (deftype): (define-compiler-macro): Rely on the autoload code to always show an arglist for these functions, don't supply an ad-hoc one in the docstring. These changes are for the most obvious functions; there are some missed that would require changing argument names in the docstring or in the function bodies. * autoload.el (make-autoload): Add arg list information to the doc string, using the same approach as for subrs.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 20 Sep 2009 23:50:05 +0100
parents 2ac296807b88
children 755ae5b97edb
line wrap: on
line diff
--- a/lisp/help.el	Sun Sep 20 21:41:22 2009 +0100
+++ b/lisp/help.el	Sun Sep 20 23:50:05 2009 +0100
@@ -1087,8 +1087,7 @@
 ;; Default to nil for the non-hackers?  Not until we find a way to
 ;; distinguish hackers from non-hackers automatically!
 (defcustom describe-function-show-arglist t
-  "*If non-nil, describe-function will show its arglist,
-unless the function is autoloaded."
+  "*If non-nil, describe-function will show the function's arglist."
   :type 'boolean
   :group 'help-appearance)
 
@@ -1188,7 +1187,7 @@
 		 (compiled-function-arglist fndef))
 		((eq (car-safe fndef) 'lambda)
 		 (nth 1 fndef))
-		((subrp fndef)
+		((or (subrp fndef) (eq 'autoload (car-safe fndef)))
 		 (let* ((doc (documentation function))
 			(args (and doc
 				   (string-match
@@ -1227,9 +1226,10 @@
 		     (gettext "not documented"))
 	       (void-function "(alias for undefined function)")
 	       (error "(unexpected error from `documention')"))))
-    (if (and strip-arglist
-	     (string-match "[\n\t ]*\narguments: ?(\\([^)]*\\))\n?\\'" doc))
-	(setq doc (substring doc 0 (match-beginning 0))))
+    (when (and strip-arglist
+               (string-match "[\n\t ]*\narguments: ?(\\([^)]*\\))\n?\\'" doc))
+      (setq doc (substring doc 0 (match-beginning 0)))
+      (and (zerop (length doc)) (setq doc (gettext "not documented"))))
     doc))
 
 ;; replacement for `princ' that puts the text in the specified face,