diff options
author | Thierry Volpiatto <thierry.volpiatto@gmail.com> | 2019-08-03 15:58:13 +0200 |
---|---|---|
committer | Thierry Volpiatto <thierry.volpiatto@gmail.com> | 2019-08-03 15:58:13 +0200 |
commit | f7262b6528dc9164a258eb9de3445a416c1187fc (patch) | |
tree | d94d2720b95d4b973af401e43170bebb8c7ceb02 /helm-elisp-package.el | |
parent | 6129ffea44511e4061c49e0de4a84c4a00f9eb27 (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.el | 34 |
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) |