summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/package.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-06-08 10:50:22 +0100
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-06-08 10:50:43 +0100
commitf1aa40f47d774d06f8798b5866051c78c4129ce5 (patch)
tree34f077ee280dd7391fad02cdb72d446d3a52e049 /lisp/emacs-lisp/package.el
parentc941d479322f8cc267908f19118f8558ea034259 (diff)
downloademacs-f1aa40f47d774d06f8798b5866051c78c4129ce5.tar.gz
emacs-f1aa40f47d774d06f8798b5866051c78c4129ce5.tar.bz2
emacs-f1aa40f47d774d06f8798b5866051c78c4129ce5.zip
* lisp/emacs-lisp/package.el (package-delete): Make interactive
Diffstat (limited to 'lisp/emacs-lisp/package.el')
-rw-r--r--lisp/emacs-lisp/package.el23
1 files changed, 21 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 6fecd9a837d..981f42cedb5 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1979,12 +1979,31 @@ If some packages are not installed propose to install them."
"Delete package PKG-DESC.
Argument PKG-DESC is a full description of package as vector.
+Interactively, prompt the user for the package name and version.
+
When package is used elsewhere as dependency of another package,
refuse deleting it and return an error.
-If FORCE is non-nil package will be deleted even if it is used
-elsewhere.
+If prefix argument FORCE is non-nil, package will be deleted even
+if it is used elsewhere.
If NOSAVE is non-nil, the package is not removed from
`package-selected-packages'."
+ (interactive
+ (progn
+ ;; Initialize the package system to get the list of package
+ ;; symbols for completion.
+ (unless package--initialized
+ (package-initialize t))
+ (let* ((package-table
+ (mapcar
+ (lambda (p) (cons (package-desc-full-name p) p))
+ (delq nil
+ (mapcar (lambda (p) (unless (package-built-in-p p) p))
+ (apply #'append (mapcar #'cdr package-alist))))))
+ (package-name (completing-read "Delete package: "
+ (mapcar #'car package-table)
+ nil t)))
+ (list (cdr (assoc package-name package-table))
+ current-prefix-arg nil))))
(let ((dir (package-desc-dir pkg-desc))
(name (package-desc-name pkg-desc))
pkg-used-elsewhere-by)