aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 2eb06766442..ed90ead9b4f 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."
52 (or (eq car 'define-skeleton) 52 (or (eq car 'define-skeleton)
53 (eq (car-safe (car form)) 'interactive)) 53 (eq (car-safe (car form)) 'interactive))
54 (if macrop (list 'quote 'macro) nil))) 54 (if macrop (list 'quote 'macro) nil)))
55 ;; Convert defcustom to a simpler (and less space-consuming) defvar,
56 ;; but add some extra stuff if it uses :require.
55 (if (eq car 'defcustom) 57 (if (eq car 'defcustom)
56 (let ((varname (car-safe (cdr-safe form))) 58 (let ((varname (car-safe (cdr-safe form)))
57 (init (car-safe (cdr-safe (cdr-safe form)))) 59 (init (car-safe (cdr-safe (cdr-safe form))))
58 (doc (car-safe (cdr-safe (cdr-safe (cdr-safe form)))))) 60 (doc (car-safe (cdr-safe (cdr-safe (cdr-safe form)))))
59 (list 'defvar varname init doc)) 61 (rest (cdr-safe (cdr-safe (cdr-safe (cdr-safe form))))))
62 (if (not (plist-get rest :require))
63 `(defvar ,varname ,init ,doc)
64 `(progn
65 (defvar ,varname ,init ,doc)
66 (custom-add-to-group ,(plist-get rest :group)
67 ',varname 'custom-variable)
68 (custom-add-load ',varname
69 ,(plist-get rest :require)))))
60 nil)))) 70 nil))))
61 71
62(put 'define-skeleton 'doc-string-elt 3) 72(put 'define-skeleton 'doc-string-elt 3)