diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2021-01-05 12:28:37 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2021-01-05 12:28:37 -0500 |
commit | 9973019764250ac1f4d77a6b426cdd9c241151c5 (patch) | |
tree | 13483c7315e03db43b65a661a206f09903b6c990 /lisp/emacs-lisp/autoload.el | |
parent | 1433a1201447f6f8b610f4d7f78a4b8a739c6572 (diff) | |
download | emacs-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.el | 8 |
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))) |