* 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). ;; gets installed).
(if (not package-selected-packages) (if (not package-selected-packages)
(message "`package-selected-packages' is empty, nothing to install") (message "`package-selected-packages' is empty, nothing to install")
(cl-loop for p in package-selected-packages (let* ((not-installed (seq-remove #'package-installed-p package-selected-packages))
unless (package-installed-p p) (available (seq-filter (lambda (p) (assq p package-archive-contents)) not-installed))
collect p into lst (difference (- (length not-installed) (length available))))
finally (cond
(if lst (available
(when (y-or-n-p (when (y-or-n-p
(format "%s packages will be installed:\n%s, proceed?" (format "%s packages will be installed:\n%s, proceed?"
(length lst) (length available)
(mapconcat #'symbol-name lst ", "))) (mapconcat #'symbol-name available ", ")))
(mapc #'package-install lst)) (mapc (lambda (p) (package-install p 'dont-select)) available)))
(message "All your packages are already installed"))))) ((> 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 ;;; Package Deletion