Cache doom-modules on doom refresh
This commit is contained in:
parent
b58b5e1d64
commit
71d505b893
3 changed files with 42 additions and 36 deletions
|
@ -148,7 +148,7 @@ markdown and copies it to your clipboard, ready to be pasted into bug reports!"
|
||||||
package-user-dir ,package-user-dir
|
package-user-dir ,package-user-dir
|
||||||
package-archives ',package-archives
|
package-archives ',package-archives
|
||||||
user-emacs-directory ,doom-emacs-dir
|
user-emacs-directory ,doom-emacs-dir
|
||||||
doom-modules-cache nil)
|
doom--modules-cache nil)
|
||||||
(with-eval-after-load 'undo-tree
|
(with-eval-after-load 'undo-tree
|
||||||
;; undo-tree throws errors because `buffer-undo-tree' isn't
|
;; undo-tree throws errors because `buffer-undo-tree' isn't
|
||||||
;; corrrectly initialized
|
;; corrrectly initialized
|
||||||
|
|
|
@ -274,6 +274,7 @@ Run this whenever your `doom!' block, or a module autoload file, is modified."
|
||||||
(make-directory (file-name-directory doom-autoload-file) t)
|
(make-directory (file-name-directory doom-autoload-file) t)
|
||||||
(with-temp-file doom-autoload-file
|
(with-temp-file doom-autoload-file
|
||||||
(doom--generate-header 'doom-reload-doom-autoloads)
|
(doom--generate-header 'doom-reload-doom-autoloads)
|
||||||
|
(prin1 `(setq doom--modules-cache ',doom-modules) (current-buffer))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(doom--generate-autoloads (reverse enabled-targets)))
|
(doom--generate-autoloads (reverse enabled-targets)))
|
||||||
;; Replace autoload paths (only for module autoloads) with absolute
|
;; Replace autoload paths (only for module autoloads) with absolute
|
||||||
|
|
|
@ -52,6 +52,7 @@ your `doom!' block, a warning is emitted before replacing it with :emacs vc and
|
||||||
|
|
||||||
(defvar doom--current-module nil)
|
(defvar doom--current-module nil)
|
||||||
(defvar doom--current-flags nil)
|
(defvar doom--current-flags nil)
|
||||||
|
(defvar doom--modules-cache ())
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -334,41 +335,45 @@ The overall load order of Doom is as follows:
|
||||||
Module load order is determined by your `doom!' block. See `doom-modules-dirs'
|
Module load order is determined by your `doom!' block. See `doom-modules-dirs'
|
||||||
for a list of all recognized module trees. Order defines precedence (from most
|
for a list of all recognized module trees. Order defines precedence (from most
|
||||||
to least)."
|
to least)."
|
||||||
(unless doom-modules
|
(if doom--modules-cache
|
||||||
(setq doom-modules
|
(progn
|
||||||
(make-hash-table :test 'equal
|
(setq doom-modules doom--modules-cache)
|
||||||
:size (if modules (length modules) 150)
|
(doom-log "Using `doom-modules' cache"))
|
||||||
:rehash-threshold 1.0)))
|
(unless doom-modules
|
||||||
(let ((inhibit-message doom-inhibit-module-warnings)
|
(setq doom-modules
|
||||||
category m)
|
(make-hash-table :test 'equal
|
||||||
(while modules
|
:size (if modules (length modules) 150)
|
||||||
(setq m (pop modules))
|
:rehash-threshold 1.0)))
|
||||||
(cond ((keywordp m) (setq category m))
|
(let ((inhibit-message doom-inhibit-module-warnings)
|
||||||
((not category) (error "No module category specified for %s" m))
|
category m)
|
||||||
((catch 'doom-modules
|
(while modules
|
||||||
(let* ((module (if (listp m) (car m) m))
|
(setq m (pop modules))
|
||||||
(flags (if (listp m) (cdr m))))
|
(cond ((keywordp m) (setq category m))
|
||||||
(when-let* ((obsolete (assq category doom-obsolete-modules))
|
((not category) (error "No module category specified for %s" m))
|
||||||
(new (assq module obsolete)))
|
((catch 'doom-modules
|
||||||
(let ((newkeys (cdr new)))
|
(let* ((module (if (listp m) (car m) m))
|
||||||
(if (null newkeys)
|
(flags (if (listp m) (cdr m))))
|
||||||
(message "WARNING %s module was removed" key)
|
(when-let* ((obsolete (assq category doom-obsolete-modules))
|
||||||
(if (cdr newkeys)
|
(new (assq module obsolete)))
|
||||||
(message "WARNING %s module was removed and split into the %s modules"
|
(let ((newkeys (cdr new)))
|
||||||
(list category module) (mapconcat #'prin1-to-string newkeys ", "))
|
(if (null newkeys)
|
||||||
(message "WARNING %s module was moved to %s"
|
(message "WARNING %s module was removed" key)
|
||||||
(list category module) (car newkeys)))
|
(if (cdr newkeys)
|
||||||
(push category modules)
|
(message "WARNING %s module was removed and split into the %s modules"
|
||||||
(dolist (key newkeys)
|
(list category module) (mapconcat #'prin1-to-string newkeys ", "))
|
||||||
(push (if flags
|
(message "WARNING %s module was moved to %s"
|
||||||
(nconc (cdr key) flags)
|
(list category module) (car newkeys)))
|
||||||
(cdr key))
|
(push category modules)
|
||||||
modules)
|
(dolist (key newkeys)
|
||||||
(push (car key) modules))
|
(push (if flags
|
||||||
(throw 'doom-modules t))))
|
(nconc (cdr key) flags)
|
||||||
(if-let* ((path (doom-module-locate-path category module)))
|
(cdr key))
|
||||||
(doom-module-set category module :flags flags :path path)
|
modules)
|
||||||
(message "WARNING Couldn't find the %s %s module" category module))))))))
|
(push (car key) modules))
|
||||||
|
(throw 'doom-modules t))))
|
||||||
|
(if-let (path (doom-module-locate-path category module))
|
||||||
|
(doom-module-set category module :flags flags :path path)
|
||||||
|
(message "WARNING Couldn't find the %s %s module" category module)))))))))
|
||||||
(when noninteractive
|
(when noninteractive
|
||||||
(setq doom-inhibit-module-warnings t))
|
(setq doom-inhibit-module-warnings t))
|
||||||
`(setq doom-modules ',doom-modules))
|
`(setq doom-modules ',doom-modules))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue