From 7bfd0a3304a64e2d0e5dae8d7931ccda883ad047 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 20 Feb 2018 17:55:53 -0500 Subject: [PATCH] And changed-quelpa-recipe detection These packages are now reinstalled on make install. --- core/autoload/packages.el | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/core/autoload/packages.el b/core/autoload/packages.el index 729e30ad3..95f978d54 100644 --- a/core/autoload/packages.el +++ b/core/autoload/packages.el @@ -88,6 +88,18 @@ was installed with. Returns nil otherwise, or if package isn't installed." (new-backend (if (plist-get plist :recipe) 'quelpa 'elpa))) (not (eq old-backend new-backend))))) +;;;###autoload +(defun doom-package-different-recipe-p (name) + "Return t if a package named NAME (a symbol) has a different recipe than it +was installed with." + (cl-assert (symbolp name) t) + (when (package-installed-p name) + (let ((quelpa-recipe (assq name quelpa-cache)) + (doom-recipe (assq name doom-packages))) + (and quelpa-recipe doom-recipe + (not (equal (cdr quelpa-recipe) + (cdr (plist-get (cdr doom-recipe) :recipe)))))))) + ;;;###autoload (defun doom-get-packages (&optional installed-only-p) "Retrieves a list of explicitly installed packages (i.e. non-dependencies). @@ -199,7 +211,8 @@ Used by `doom//packages-install'." (or (plist-get plist :pin) (not (assq name package--builtins))) (or (not (assq name package-alist)) - (doom-package-different-backend-p name))) + (doom-package-different-backend-p name) + (doom-package-different-recipe-p name))) collect desc)) ;;;###autoload @@ -255,7 +268,8 @@ example; the package name can be omitted)." (doom-initialize-packages) (when (and (package-installed-p name) (not (package-built-in-p name))) - (if (doom-package-different-backend-p name) + (if (or (doom-package-different-backend-p name) + (doom-package-different-recipe-p name)) (doom-delete-package name t) (user-error "%s is already installed" name))) (let* ((inhibit-message (not doom-debug-mode)) @@ -335,7 +349,9 @@ package.el as appropriate." (lambda (pkg) (format "+ %s (%s)" (car pkg) - (cond ((doom-package-different-backend-p (car pkg)) + (cond ((doom-package-different-recipe-p (car pkg)) + "new recipe") + ((doom-package-different-backend-p (car pkg)) (if (plist-get (cdr pkg) :recipe) "ELPA -> QUELPA" "QUELPA -> ELPA")) @@ -354,7 +370,8 @@ package.el as appropriate." (doom--condition-case! (message! "%s%s" (cond ((and (package-installed-p (car pkg)) - (not (doom-package-different-backend-p (car pkg)))) + (not (doom-package-different-backend-p (car pkg))) + (not (doom-package-different-recipe-p (car pkg)))) (dark (white "⚠ ALREADY INSTALLED"))) ((doom-install-package (car pkg) (cdr pkg)) (green "✓ DONE"))