From 49fb34d1c185cc7df43e98aeeb6c1bcdf57d8794 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 2 Sep 2019 13:12:57 -0400 Subject: [PATCH] Fix 'doom purge' trying to purge site packages It should only manage packages installed in doom-elpa-dir (~/.emacs.d/.local/elpa, by default). --- core/cli/packages.el | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/core/cli/packages.el b/core/cli/packages.el index 6137cf60b..49c8d7de8 100644 --- a/core/cli/packages.el +++ b/core/cli/packages.el @@ -422,18 +422,21 @@ a list of packages that will be updated." (defun doom--packages-purge-elpa (&optional auto-accept-p) (unless (bound-and-true-p package--initialized) (package-initialize)) - (if (not package-alist) - (progn (print! (info "No ELPA packages to purge")) - 0) - (doom--prompt-columns-p - (lambda (p) (format " + %-20.20s" p)) - (mapcar #'car package-alist) nil - (format! "Found %d orphaned ELPA packages. Purge them?" - (length package-alist))) - (mapc (doom-rpartial #'delete-directory 'recursive) - (mapcar #'package-desc-dir - (mapcar #'cadr package-alist))) - (length package-alist))) + (let ((packages (cl-loop for (package . desc) in package-alist + for dir = (package-desc-dir desc) + if (file-in-directory-p dir doom-elpa-dir) + collect (cons package dir)))) + (if (not package-alist) + (progn (print! (info "No ELPA packages to purge")) + 0) + (doom--prompt-columns-p + (lambda (p) (format " + %-20.20s" p)) + (mapcar #'car packages) nil + (format! "Found %d orphaned ELPA packages. Purge them?" + (length package-alist))) + (mapc (doom-rpartial #'delete-directory 'recursive) + (mapcar #'cdr packages)) + (length packages)))) (defun doom-packages-purge (&optional elpa-p builds-p repos-p auto-accept-p) "Auto-removes orphaned packages and repos.