]> git.eshelyaron.com Git - emacs.git/commitdiff
Add command package-menu-filter-upgradable
authorStefan Kangas <stefan@marxist.se>
Mon, 19 Oct 2020 18:30:52 +0000 (20:30 +0200)
committerStefan Kangas <stefan@marxist.se>
Mon, 19 Oct 2020 18:30:52 +0000 (20:30 +0200)
* lisp/emacs-lisp/package.el (package-menu-filter-upgradable):
New command.  (Bug#41436)
(package-menu-mode-map): Bind the new command.
* doc/emacs/package.texi (Package Menu): Document the new command.

doc/emacs/package.texi
etc/NEWS
lisp/emacs-lisp/package.el

index 453d9eb4010d7d071e7be205177a9b4336a09d6f..56e8ee1363a33bc17481448776159ac2acc18d14 100644 (file)
@@ -222,6 +222,12 @@ lower, equal or higher version than the one specified.
 Filter package list by non-empty mark (@code{package-menu-filter-marked}).
 This shows only the packages that have been marked to be installed or deleted.
 
+@item / u
+@kindex / u @r{(Package Menu)}
+@findex package-menu-filter-upgradable
+Filter package list to show only packages for which there are
+available upgrades (@code{package-menu-filter-upgradable}).
+
 @item / /
 @kindex / / @r{(Package Menu)}
 @findex package-menu-filter-clear
index 390cccbff30ea37b1ebd99debc3aff7e259e828b..c571fa95d182e82ad93ca50d074e28715d3618a2 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -736,6 +736,7 @@ key             binding
 / s             package-menu-filter-by-status
 / v             package-menu-filter-by-version
 / m             package-menu-filter-marked
+/ u             package-menu-filter-upgradable
 / /             package-menu-filter-clear
 
 ---
index 7b192d640b20803d97044781cedd21413c1c688a..23692aab32ae06a6a3fa2894cfe5f4ee0cf7df8b 100644 (file)
@@ -2708,6 +2708,7 @@ either a full name or nil, and EMAIL is a valid email address."
     (define-key map (kbd "/ s") 'package-menu-filter-by-status)
     (define-key map (kbd "/ v") 'package-menu-filter-by-version)
     (define-key map (kbd "/ m") 'package-menu-filter-marked)
+    (define-key map (kbd "/ u") 'package-menu-filter-upgradable)
     map)
   "Local keymap for `package-menu-mode' buffers.")
 
@@ -3904,6 +3905,15 @@ Unlike other filters, this leaves the marks intact."
              (tabulated-list-put-tag (char-to-string mark) t)))
        (user-error "No packages found")))))
 
+(defun package-menu-filter-upgradable ()
+  "Filter \"*Packages*\" buffer to show only upgradable packages."
+  (interactive)
+  (let ((pkgs (mapcar #'car (package-menu--find-upgrades))))
+    (package-menu--filter-by
+     (lambda (pkg)
+       (memql (package-desc-name pkg) pkgs))
+     "upgradable")))
+
 (defun package-menu-clear-filter ()
   "Clear any filter currently applied to the \"*Packages*\" buffer."
   (interactive)