Move compile-time fix for disabled packages

This fix prevented the byte-compiler from trying to load packages that
were disabled or failed their :when/:unless/:if predicates. This commit
moves it into doom-byte-compile, so the :no-require predicate doesn't
have to run on every package in an interactive session, eating MY
PRECIOUS cpu cycles.

I do love my cpu cycles, yessiree.
This commit is contained in:
Henrik Lissner 2018-06-18 14:52:24 +02:00
parent ab07e07352
commit 32954ecb69
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 22 additions and 22 deletions

View file

@ -733,8 +733,19 @@ If RECOMPILE-P is non-nil, only recompile out-of-date files."
(message "Couldn't find any valid targets")
(message "No targets to %scompile" (if recompile-p "re" "")))
(cl-return-from 'byte-compile))
(condition-case ex
(let ((use-package-expand-minimally t))
(condition-case e
(let ((use-package-defaults use-package-defaults)
(use-package-expand-minimally t))
;; Prevent packages from being loaded at compile time if they
;; don't meet their own predicates.
(push (list :no-require t
(lambda (_name args)
(or (when-let* ((pred (or (plist-get args :if)
(plist-get args :when))))
(not (eval pred t)))
(when-let* ((pred (plist-get args :unless)))
(eval pred t)))))
use-package-defaults)
;; Always compile private init file
(push (expand-file-name "init.el" doom-private-dir) target-files)
(push (expand-file-name "init.el" doom-emacs-dir) target-files)

View file

@ -179,28 +179,16 @@ non-nil, return paths of possible modules, activated or otherwise."
(autoload 'use-package "use-package-core" nil nil t)
;; Adds the :after-call custom keyword to `use-package' (and consequently,
;; `def-package!'). :after-call takes a symbol or list of symbols. These symbols
;; can be functions or hook variables.
;;
;; (use-package X :after-call find-file-hook)
;;
;; This will load X on the first invokation of `find-file-hook' (then it will
;; remove itself from the hook/function).
(defvar doom--deferred-packages-alist ())
(after! use-package-core
;; Prevent packages from being loaded at compile time if they don't meet their
;; own predicates.
(push (list :no-require t
(lambda (_name args)
(and (bound-and-true-p byte-compile-current-file)
(or (when-let* ((pred (or (plist-get args :if)
(plist-get args :when))))
(not (eval pred t)))
(when-let* ((pred (plist-get args :unless)))
(eval pred t))))))
use-package-defaults)
;; Adds the :after-call custom keyword to `use-package' (and consequently,
;; `def-package!'). :after-call takes a symbol or list of symbols. These
;; symbols can be functions or hook variables.
;;
;; (use-package X :after-call find-file-hook)
;;
;; This will load X on the first invokation of `find-file-hook' (then it will
;; remove itself from the hook/function).
(add-to-list 'use-package-deferring-keywords :after-call nil #'eq)
(setq use-package-keywords
(use-package-list-insert :after-call use-package-keywords :after))

View file

@ -162,6 +162,7 @@ else (except for `window-setup-hook').")
use-package-compute-statistics doom-debug-mode
use-package-verbose doom-debug-mode
use-package-minimum-reported-time (if doom-debug-mode 0 0.1)
use-package-expand-minimally (not noninteractive)
;; byte compilation
byte-compile-verbose doom-debug-mode
byte-compile-warnings '(not free-vars unresolved noruntime lexical make-local)