summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-02-05 20:47:28 -0200
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-02-05 20:47:28 -0200
commita844b9407496aeaa6945f4611e57e4b0e69ada18 (patch)
tree057c75a0dd790530b89939487b1d428dc6dce51d /lisp/emacs-lisp
parentb2c4997c823a32e79c9f16b547b491463da9c1c2 (diff)
downloademacs-a844b9407496aeaa6945f4611e57e4b0e69ada18.tar.gz
emacs-a844b9407496aeaa6945f4611e57e4b0e69ada18.tar.bz2
emacs-a844b9407496aeaa6945f4611e57e4b0e69ada18.zip
emacs-lisp/package.el (package-delete): Don't always delesect.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el10
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index f11790693b9..f19cca571e4 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1510,6 +1510,11 @@ with PKG-DESC entry removed."
(and (memq pkg (mapcar #'car (package-desc-reqs (cadr p))))
(car p))))))
+(defun package--newest-p (pkg)
+ "Return t if PKG is the newest package with its name."
+ (equal (cadr (assq (package-desc-name pkg) package-alist))
+ pkg))
+
(defun package-delete (pkg-desc &optional force nosave)
"Delete package PKG-DESC.
@@ -1527,7 +1532,10 @@ If NOSAVE is non-nil, the package is not removed from
;; don't want it marked as selected, so we remove it from
;; `package-selected-packages' even if it can't be deleted.
(when (and (null nosave)
- (package--user-selected-p name))
+ (package--user-selected-p name)
+ ;; Don't delesect if this is an older version of an
+ ;; upgraded package.
+ (package--newest-p pkg-desc))
(customize-save-variable
'package-selected-packages (remove name package-selected-packages)))
(cond ((not (string-prefix-p (file-name-as-directory