summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/autoload.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2021-01-05 12:28:37 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2021-01-05 12:28:37 -0500
commit9973019764250ac1f4d77a6b426cdd9c241151c5 (patch)
tree13483c7315e03db43b65a661a206f09903b6c990 /lisp/emacs-lisp/autoload.el
parent1433a1201447f6f8b610f4d7f78a4b8a739c6572 (diff)
downloademacs-9973019764250ac1f4d77a6b426cdd9c241151c5.tar.gz
* lisp/emacs-lisp/package.el: Load package-quickstart without package.el
Speed up startup when `package-quickstart` is in use by making it possible to load the quickstart file without having to load `package.el` at all. (package-user-dir, package-directory-list, package-quickstart-file): Preload those variables. (package--get-activatable-pkg): New fun, extracted from `package-activate`. (package-activate): Use it. (package--activate-all): New function, extracted from `package-activate-all`. (package-activate-all): Use it and make the function preloaded. (package--archives-initialize): New function. (package-install): Use it. (list-packages): Avoid `switch-to-buffer`. (package-get-descriptor): New function. * lisp/startup.el (command-line): Simplify the code now that package-user-dir and package-directory-list are preloaded. * lisp/emacs-lisp/autoload.el (make-autoload): Add support for `:initialize #'custom-initialize-delay` in `defcustom`.
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)))