* lisp/emacs-lisp/package.el (package-install-selected-packages):

Skip unavailable packages.
This commit is contained in:
Artur Malabarba 2016-04-04 11:58:49 -03:00
parent f501116ea8
commit a05fb21d73

View file

@ -2023,17 +2023,21 @@ If some packages are not installed propose to install them."
;; gets installed).
(if (not package-selected-packages)
(message "`package-selected-packages' is empty, nothing to install")
(cl-loop for p in package-selected-packages
unless (package-installed-p p)
collect p into lst
finally
(if lst
(when (y-or-n-p
(format "%s packages will be installed:\n%s, proceed?"
(length lst)
(mapconcat #'symbol-name lst ", ")))
(mapc #'package-install lst))
(message "All your packages are already installed")))))
(let* ((not-installed (seq-remove #'package-installed-p package-selected-packages))
(available (seq-filter (lambda (p) (assq p package-archive-contents)) not-installed))
(difference (- (length not-installed) (length available))))
(cond
(available
(when (y-or-n-p
(format "%s packages will be installed:\n%s, proceed?"
(length available)
(mapconcat #'symbol-name available ", ")))
(mapc (lambda (p) (package-install p 'dont-select)) available)))
((> difference 0)
(message "%s packages are not available (the rest already installed), maybe you need to `M-x package-refresh-contents'"
difference))
(t
(message "All your packages are already installed"))))))
;;; Package Deletion