summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/autoload.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/autoload.el')
-rw-r--r--lisp/emacs-lisp/autoload.el8
1 files changed, 7 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 1786b5cd6a8..77de05a6f68 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -221,12 +221,18 @@ expression, in which case we want to handle forms differently."
;; Convert defcustom to less space-consuming data.
((eq car 'defcustom)
(let ((varname (car-safe (cdr-safe form)))
+ (initializer (plist-get (nthcdr 4 form) :initialize))
(init (car-safe (cdr-safe (cdr-safe form))))
(doc (car-safe (cdr-safe (cdr-safe (cdr-safe form)))))
;; (rest (cdr-safe (cdr-safe (cdr-safe (cdr-safe form)))))
)
`(progn
- (defvar ,varname ,init ,doc)
+ ,(if (null initializer)
+ `(defvar ,varname ,init ,doc)
+ `(progn (defvar ,varname nil ,doc)
+ (let ((exp ',init))
+ (put ',varname 'standard-value (list exp))
+ (,(eval initializer t) ',varname exp))))
(custom-autoload ',varname ,file
,(condition-case nil
(null (cadr (memq :set form)))