* emacs-lisp/package.el: Make the execute prompt less verbose.

(package-menu--list-to-prompt): New function.
(package-menu--prompt-transaction-p): Use "Upgrade" to make the
package-menu-execute prompt less verbose.
This commit is contained in:
Artur Malabarba 2015-04-06 17:05:53 +01:00
parent 67c152efc3
commit c91fd97dfb
2 changed files with 39 additions and 24 deletions

View file

@ -2699,30 +2699,42 @@ call will upgrade the package."
(length upgrades)
(if (= (length upgrades) 1) "" "s")))))
(defun package-menu--prompt-transaction-p (ins del)
"Prompt the user about installing INS and deleting DEL.
INS and DEL are lists of `package-desc'. Either may be nil, but
not both."
(y-or-n-p
(concat
(when ins
(let ((lins (length ins)))
(if (= lins 1)
(format "INSTALL package `%s'"
(package-desc-full-name (car ins)))
(format "INSTALL these %d packages (%s)"
lins
(mapconcat #'package-desc-full-name ins ", ")))))
(when (and del ins) " and ")
(when del
(let ((ldel (length del)))
(if (= ldel 1)
(format "DELETE package `%s'"
(package-desc-full-name (car del)))
(format "DELETE these %d packages (%s)"
ldel
(mapconcat #'package-desc-full-name del ", ")))))
"? ")))
(defun package-menu--list-to-prompt (packages)
"Return a string listing PACKAGES that's usable in a prompt.
PACKAGES is a list of `package-desc' objects.
Formats the returned string to be usable in a minibuffer
prompt (see `package-menu--prompt-transaction-p')."
(cond
;; None
((not packages) "")
;; More than 1
((cdr packages)
(format "these %d packages (%s)"
(length packages)
(mapconcat #'package-desc-full-name packages ", ")))
;; Exactly 1
(t (format "package `%s'"
(package-desc-full-name (car packages))))))
(defun package-menu--prompt-transaction-p (install delete)
"Prompt the user about installing INSTALL and deleting DELETE.
INSTALL and DELETE are lists of `package-desc'. Either may be
nil, but not both."
(let* ((upg (cl-intersection install delete :key #'package-desc-name))
(ins (cl-set-difference install upg :key #'package-desc-name))
(del (cl-set-difference delete upg :key #'package-desc-name)))
(y-or-n-p
(concat
(when upg "UPGRADE ")
(package-menu--list-to-prompt upg)
(when (and upg ins)
(if del "; " "; and "))
(when ins "INSTALL ")
(package-menu--list-to-prompt ins)
(when (and del (or ins upg)) "; and ")
(when del "DELETE ")
(package-menu--list-to-prompt del)
"? "))))
(defun package-menu--perform-transaction (install-list delete-list &optional async)
"Install packages in INSTALL-LIST and delete DELETE-LIST.