diff --git a/core/core-dispatcher.el b/core/core-dispatcher.el index ae28ca551..5b03ccdbf 100644 --- a/core/core-dispatcher.el +++ b/core/core-dispatcher.el @@ -561,9 +561,18 @@ If RECOMPILE-P is non-nil, only recompile out-of-date files." (":core" (push doom-core-dir targets)) (":private" (push doom-private-dir targets)) (":plugins" - (dolist (file (doom-files-in package-user-dir :match "\\.elc$")) - (ignore-errors (delete-file file))) - (byte-recompile-directory package-user-dir 0 t) + (doom-initialize-packages) + (let (visited) + (dolist (name (append doom-core-packages (mapcar #'car doom-packages))) + (unless (memq name visited) + (when-let* ((desc (cadr (assq name package-alist)))) + (cl-loop for dep in (package--get-deps name) + if (and (not (memq dep visited)) + (assq dep package-alist)) + do (package--compile (cadr it)) + and do (push dep visited)) + (package--compile desc) + (push name visited))))) (setq compile-plugins-p t modules (delete ":plugins" modules))) ((pred file-directory-p)