aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/emacs-lisp/autoload.el
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1997-08-04 06:44:24 +0000
committerRichard M. Stallman <[email protected]>1997-08-04 06:44:24 +0000
commit666da7836b0dc32ebf3b78359c51439f217a320b (patch)
tree6fdcd62ec225d0ce4522a8327ee942b0e8b0cf32 /lisp/emacs-lisp/autoload.el
parent3478257bc133d763eec06903549d4c99a14b1f46 (diff)
(make-autoload): For a defcustom,
generate custom-add-to-group and custom-add-load if needed.
Diffstat (limited to 'lisp/emacs-lisp/autoload.el')
-rw-r--r--lisp/emacs-lisp/autoload.el14
1 files changed, 12 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 2eb0676644..ed90ead9b4 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -52,11 +52,21 @@ Returns nil if FORM is not a defun, define-skeleton, defmacro or defcustom."
(or (eq car 'define-skeleton)
(eq (car-safe (car form)) 'interactive))
(if macrop (list 'quote 'macro) nil)))
+ ;; Convert defcustom to a simpler (and less space-consuming) defvar,
+ ;; but add some extra stuff if it uses :require.
(if (eq car 'defcustom)
(let ((varname (car-safe (cdr-safe form)))
(init (car-safe (cdr-safe (cdr-safe form))))
- (doc (car-safe (cdr-safe (cdr-safe (cdr-safe form))))))
- (list 'defvar varname init doc))
+ (doc (car-safe (cdr-safe (cdr-safe (cdr-safe form)))))
+ (rest (cdr-safe (cdr-safe (cdr-safe (cdr-safe form))))))
+ (if (not (plist-get rest :require))
+ `(defvar ,varname ,init ,doc)
+ `(progn
+ (defvar ,varname ,init ,doc)
+ (custom-add-to-group ,(plist-get rest :group)
+ ',varname 'custom-variable)
+ (custom-add-load ',varname
+ ,(plist-get rest :require)))))
nil))))
(put 'define-skeleton 'doc-string-elt 3)