comparison lisp/autoload.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 bfb8a26de3cb
children eb1a409c317b
comparison
equal deleted inserted replaced
4694:2ac296807b88 4695:fee33ab25966
281 281
282 ;; For special function-like operators, use the `autoload' function. 282 ;; For special function-like operators, use the `autoload' function.
283 ((memq car autoload-make-autoload-operators) 283 ((memq car autoload-make-autoload-operators)
284 (let* ((macrop (memq car '(defmacro defmacro*))) 284 (let* ((macrop (memq car '(defmacro defmacro*)))
285 (name (nth 1 form)) 285 (name (nth 1 form))
286 (arglist (nth 2 form))
286 (body (nthcdr (get car 'doc-string-elt) form)) 287 (body (nthcdr (get car 'doc-string-elt) form))
287 (doc (if (stringp (car body)) (pop body)))) 288 (placeholder (eval-when-compile (gensym)))
289 (doc (concat (if (stringp (car body))
290 (pop body)
291 "")
292 "\n\narguments: "
293 (replace-in-string
294 (cl-function-arglist placeholder arglist)
295 (format "^(%s ?" placeholder)
296 "(") "\n")))
288 ;; `define-generic-mode' quotes the name, so take care of that 297 ;; `define-generic-mode' quotes the name, so take care of that
289 (list 'autoload (if (listp name) name (list 'quote name)) file doc 298 (list 'autoload (if (listp name) name (list 'quote name)) file doc
290 (or (and (memq car '(define-skeleton define-derived-mode 299 (or (and (memq car '(define-skeleton define-derived-mode
291 define-generic-mode 300 define-generic-mode
292 easy-mmode-define-global-mode 301 easy-mmode-define-global-mode