Mercurial > hg > xemacs-beta
changeset 4352:d2f4dd8611d9
Factor out lists of operators specially treated by 'make-autoload'.
General idea approved by Mike Sperber, and tested in 21.4 by building JDE.
author | Stephen J. Turnbull <stephen@xemacs.org> |
---|---|
date | Sat, 22 Dec 2007 15:57:21 -0800 |
parents | bc3b9f61018e |
children | 4143b78d0df0 |
files | lisp/ChangeLog lisp/autoload.el |
diffstat | 2 files changed, 24 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat Dec 22 15:02:04 2007 +0100 +++ b/lisp/ChangeLog Sat Dec 22 15:57:21 2007 -0800 @@ -1,3 +1,11 @@ +2007-12-22 Stephen J. Turnbull <stephen@xemacs.org> + + Factor out lists of operators specially treated by `make-autoload'. + + * autoload.el (autoload-make-autoload-operators): New. + (autoload-make-autoload-complex-operators): New. + (make-autoload): Use them. + 2007-12-18 Mike Sperber <mike@xemacs.org> * autoload.el (process-one-lisp-autoload): Insert <immediate> into
--- a/lisp/autoload.el Sat Dec 22 15:02:04 2007 +0100 +++ b/lisp/autoload.el Sat Dec 22 15:57:21 2007 -0800 @@ -226,6 +226,20 @@ ;; Parsing the source file text. ;; Autoloads in C source differ from those in Lisp source. +;; #### Eventually operators like defclass and defmethod (defined in an +;; external package, EIEIO) may be factored out. Don't add operators here +;; without discussing whether and how to do that on the developers' channel. +(defvar autoload-make-autoload-operators + '(defun define-skeleton defmacro define-derived-mode define-generic-mode + easy-mmode-define-minor-mode easy-mmode-define-global-mode + define-minor-mode defun* defmacro* defclass defmethod) + "`defun'-like operators that use `autoload' to load the library.") + +(defvar autoload-make-autoload-complex-operators + '(easy-mmode-define-minor-mode easy-mmode-define-global-mode + define-minor-mode) + "`defun'-like operators to macroexpand before using `autoload'.") + (defun make-autoload (form file) "Turn FORM into an autoload or defvar for source file FILE. Returns nil if FORM is not a special autoload form (i.e. a function definition @@ -233,8 +247,7 @@ (let ((car (car-safe form)) expand) (cond ;; For complex cases, try again on the macro-expansion. - ((and (memq car '(easy-mmode-define-global-mode - easy-mmode-define-minor-mode define-minor-mode)) + ((and (memq car autoload-make-autoload-complex-operators) (setq expand (let ((load-file-name file)) (macroexpand form))) (eq (car expand) 'progn) (memq :autoload-end expand)) @@ -246,11 +259,7 @@ (cdr expand))))) ;; For special function-like operators, use the `autoload' function. - ((memq car '(defun define-skeleton defmacro define-derived-mode - define-generic-mode easy-mmode-define-minor-mode - easy-mmode-define-global-mode - define-minor-mode defun* defmacro* - defclass defmethod)) ; from the EIEIO package + ((memq car autoload-make-autoload-operators) (let* ((macrop (memq car '(defmacro defmacro*))) (name (nth 1 form)) (body (nthcdr (get car 'doc-string-elt) form))