18

When I'm in the package manager (M-x package-list-packages), I'd like to quickly navigate to my installed packages.

emacs packages

There are literally thousands of packages marked as available, installed, or built-in, but all of the navigation appears to be line-by-line. Is this an oversight with the package manager or am I overlooking something obvious (aside from basic string search, of course)?

Jeff Bauer
  • 861
  • 1
  • 10
  • 22
  • There is a `Filter package list option`, you can invoke it by pressing `f` or the function `package-menu-filter`. – programking Nov 12 '14 at 02:08
  • @KingShimkus: I'm running the standard package manager that comes with emacs 24.3.1 which doesn't appear to have package-menu-filter, but thanks for the heads up! – Jeff Bauer Nov 12 '14 at 02:23
  • Oh, sorry I couldn't of been of more assistance. – programking Nov 12 '14 at 02:24
  • 2
    If you find that some feature, whether convenience or vital, is missing or wrong in the Emacs package system, consider reporting it for improvement, using `M-x report-emacs-bug`. (That is for enhancement requests, as well as bugs.) – Drew Nov 12 '14 at 02:54
  • 3
    Jeff Bauer: If you update to Emacs 24.4 that `f` key filter function will be available. – phils Nov 12 '14 at 03:48
  • 2
    `f` is only for filtering on keyword, not status. – dgtized Nov 12 '14 at 07:47

3 Answers3

11

I tend to end up using occur (or more specifically helm-swoop) to narrow down my choices.

However you can also use paradox, which extends the functionality of the basic package manager. This include S x sorting options as well as single key next and status. It also has its own filter options: notably, f u will narrow down to all packages affected by an upgrade.

TomRoche
  • 592
  • 3
  • 20
stsquad
  • 4,626
  • 28
  • 45
3

Here's another option, if you just want to use completing-read (perhaps with ido via ido-everywhere or ido-ubiquitous) to quickly open an installed package outside of the package list:

(defun open-package ()
  (interactive)
  (let* ((packages (mapcar 'symbol-name (mapcar 'car package-alist)))
         (package (completing-read "Open package: " packages nil t)))
    (find-library package)))
waymondo
  • 1,384
  • 11
  • 16
2

In recent versions of Emacs, you can access the package view with M-x list-packages. You can then filter the packages:

  • by upgradable with / u;
  • by any other status (available, dependency, disabled, etc) with / s;
  • by name with / n;
  • by description with / d;

And then clear the filter with / /.

The invoked commands are all in the package-menu-filter-* family, which you can explore for more options.

So to answer the original question, the way to display all installed packages is: / s installed RET.

kotchwane
  • 481
  • 2
  • 12