From 377dbae3fc625a167bd56574165d11e1e2a21d64 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 25 Sep 2018 10:31:52 -0400 Subject: [PATCH] Install/compile packages in order of declaration This should fix an issue where a package A, which uses macros from a package B, is installed before package B, causing void-function errors. The currently known and affected packages are neotree, parinfer, and evil-collection. --- core/autoload/packages.el | 17 ++++++++--------- core/cli/packages.el | 2 +- core/core-packages.el | 3 ++- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/autoload/packages.el b/core/autoload/packages.el index 90f844168..1afd7a85d 100644 --- a/core/autoload/packages.el +++ b/core/autoload/packages.el @@ -214,14 +214,12 @@ files." objects, in the order of their `package! blocks.'" (doom-initialize-packages) (cl-remove-duplicates - (let (packages) - (dolist (name (append (mapcar #'car doom-packages) doom-core-packages)) - (when-let* ((desc (cadr (assq name package-alist)))) - (push (cons name desc) packages) - (cl-loop for dep in (package--get-deps name) - if (assq dep package-alist) - do (push (cons dep (cadr it)) packages)))) - packages) + (cl-loop for name in (append doom-core-packages (mapcar #'car doom-packages)) + if (assq name package-alist) + nconc (cl-loop for dep in (package--get-deps name) + if (assq dep package-alist) + collect (cons dep (cadr it))) + and collect (cons name (cadr it))) :key #'car :from-end t)) @@ -332,7 +330,8 @@ Used by `doom-packages-install'." (cl-loop for (name . plist) in (doom-get-packages :ignored (if include-ignored-p 'any) :disabled nil - :deps t) + :deps t + :sort nil) if (and (or (plist-get plist :pin) (not (package-built-in-p name))) (or (not (doom-package-installed-p name)) diff --git a/core/cli/packages.el b/core/cli/packages.el index ed71d5a77..be9592de4 100644 --- a/core/cli/packages.el +++ b/core/cli/packages.el @@ -26,7 +26,7 @@ (defun doom-packages-install (&optional auto-accept-p) "Interactive command for installing missing packages." (print! "Looking for packages to install...") - (let ((packages (reverse (doom-get-missing-packages)))) + (let ((packages (doom-get-missing-packages))) (cond ((not packages) (print! (green "No packages to install!")) nil) diff --git a/core/core-packages.el b/core/core-packages.el index 36121bf39..60c5b9dc1 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -131,7 +131,8 @@ them." (cl-loop for key being the hash-keys of doom-modules for path = (doom-module-path (car key) (cdr key) "packages.el") do (let ((doom--current-module key)) (_load path t))) - (_load private-packages t)))))))) + (_load private-packages t) + (setq doom-packages (reverse doom-packages))))))))) ;;