summaryrefslogtreecommitdiff
path: root/helm-elisp-package.el
diff options
context:
space:
mode:
authorThierry Volpiatto <thierry.volpiatto@gmail.com>2019-08-03 15:58:13 +0200
committerThierry Volpiatto <thierry.volpiatto@gmail.com>2019-08-03 15:58:13 +0200
commitf7262b6528dc9164a258eb9de3445a416c1187fc (patch)
treed94d2720b95d4b973af401e43170bebb8c7ceb02 /helm-elisp-package.el
parent6129ffea44511e4061c49e0de4a84c4a00f9eb27 (diff)
Only recompile extra-upgrades
* helm-elisp-package.el (helm-el-package--extra-upgrades): New. (helm-el-package-menu--find-upgrades): Use it. (helm-el-package-upgrade-1): Recompile only extra-upgrades. (helm-el-package-recompile-1): New. (helm-el-package-recompile): Use it.
Diffstat (limited to 'helm-elisp-package.el')
-rw-r--r--helm-elisp-package.el34
1 files changed, 24 insertions, 10 deletions
diff --git a/helm-elisp-package.el b/helm-elisp-package.el
index 25c90ae6..b5ecef26 100644
--- a/helm-elisp-package.el
+++ b/helm-elisp-package.el
@@ -208,6 +208,7 @@
(helm-exit-and-execute-action 'helm-el-package-uninstall)))
(put 'helm-el-run-package-uninstall 'helm-only t)
+(defvar helm-el-package--extra-upgrades nil)
(defun helm-el-package-menu--find-upgrades ()
(cl-loop for entry in helm-el-package--tabulated-list
for pkg-desc = (car entry)
@@ -227,6 +228,8 @@
for avail-pkg = (assq name available)
for avail-is-dep = (and avail-pkg (member pkg dependencies))
when avail-is-dep
+ ;; Store the installed packages that don't need
+ ;; upgrade but that have `name' as dependency.
do (cl-loop for p in installed
for pkg = (package-desc-name p)
for deps = (and (package--user-installed-p pkg)
@@ -239,15 +242,26 @@
(package-desc-version
(cdr avail-pkg))))
collect avail-pkg into upgrades
- finally return (append upgrades extra-upgrades))))
+ finally return
+ ;; Extra-upgrades are packages that need to be
+ ;; recompiled because their dependencies have been upgraded.
+ (append upgrades
+ (setq helm-el-package--extra-upgrades
+ extra-upgrades)))))
(defun helm-el-package-upgrade-1 (pkg-list)
(cl-loop for p in pkg-list
for pkg-desc = (car p)
for upgrade = (cdr (assq (package-desc-name pkg-desc)
helm-el-package--upgrades))
+ for extra-upgrade = (cdr (assq (package-desc-name pkg-desc)
+ helm-el-package--extra-upgrades))
do
- (cond ((null upgrade) (ignore))
+ (cond (;; Recompile.
+ (and (null upgrade)
+ (equal pkg-desc extra-upgrade))
+ (helm-el-package-recompile-1 pkg-desc))
+ ((null upgrade) (ignore))
(;; Reinstall.
(and (equal pkg-desc upgrade)
(package-installed-p pkg-desc))
@@ -255,7 +269,7 @@
(;; Install.
(equal pkg-desc upgrade)
(package-install pkg-desc t))
- (;; Delete. (when is this happening?)
+ (;; Delete.
t (package-delete pkg-desc t t)))))
(defun helm-el-package-upgrade (_candidate)
@@ -425,13 +439,13 @@
(defun helm-el-package-recompile (_pkg)
(cl-loop for p in (helm-marked-candidates)
- for pkg-desc = (get-text-property 0 'tabulated-list-id p)
- for name = (package-desc-name pkg-desc)
- for dir = (package-desc-dir pkg-desc)
- do (if (fboundp 'async-byte-recompile-directory)
- (async-byte-recompile-directory dir)
- (when (y-or-n-p (format "Really recompile `%s' while already loaded ?" name))
- (byte-recompile-directory dir 0 t)))))
+ do (helm-el-package-recompile-1 p)))
+
+(defun helm-el-package-recompile-1 (pkg)
+ (let* ((pkg-desc (get-text-property 0 'tabulated-list-id pkg))
+ (dir (package-desc-dir pkg-desc)))
+ (async-byte-recompile-directory dir)
+ (setq helm-el-package--extra-upgrades nil)))
(defun helm-el-package-reinstall (_pkg)
(cl-loop for p in (helm-marked-candidates)