49.1 The Package Menu Buffer

The command M-x list-packages brings up the package menu. This is a buffer listing all the packages that Emacs knows about, one on each line, with the following information:

The list-packages command accesses the network, to retrieve the list of available packages from package archive servers. If the network is unavailable, it falls back on the most recently retrieved list.

The main command to use in the package list buffer is the x command. If the package under point isn’t installed already, this command will install it. If the package under point is already installed, this command will delete it.

The following commands are available in the package menu:

h

Print a short message summarizing how to use the package menu (package-menu-quick-help).

?
RET

Display a help buffer for the package on the current line (package-menu-describe-package), similar to the help window displayed by the C-h P command (see Emacs Lisp Packages).

i

Mark the package on the current line for installation (package-menu-mark-install). If the package status is ‘available’, this adds an ‘I’ character to the start of the line; typing x (see below) will download and install the package.

d

Mark the package on the current line for deletion (package-menu-mark-delete). If the package status is ‘installed’, this adds a ‘D’ character to the start of the line; typing x (see below) will delete the package. See Package Files and Directory Layout, for information about what package deletion entails.

w

Open the package website on the current line in a browser (package-browse-url). browse-url is used to open the browser.

~

Mark all obsolete packages for deletion (package-menu-mark-obsolete-for-deletion). This marks for deletion all the packages whose status is ‘obsolete’.

u
DEL

Remove any installation or deletion mark previously added to the current line by an i or d command (package-menu-mark-unmark).

U

Mark all package with a newer available version for upgrading (package-menu-mark-upgrades). This places an installation mark on the new available versions, and a deletion mark on the old installed versions (marked with status ‘obsolete’). By default, this won’t mark built-in packages for which a newer version is available, but customizing package-install-upgrade-built-in can change that. See Package Installation. If you customize package-install-upgrade-built-in to a non-nil value, be sure to review all the built-in packages the U command marks, to avoid updating built-in packages you don’t want to overwrite.

x

Download and install all packages marked with i, and their dependencies; also, delete all packages marked with d (package-menu-execute). This also removes the marks. If no packages are marked, this command will install the package under point (if it isn’t installed already), or delete the package under point (if it’s already installed).

g
r

Refresh the package list (revert-buffer). This fetches the list of available packages from the package archive again, and redisplays the package list.

H

Hide packages whose names match a regexp (package-menu-hide-package). This prompts for a regexp, and then hides the packages with matching names. The default value of the regexp will hide only the package whose name is at point, so just pressing RET to the prompt will hide the current package.

(

Toggle visibility of old versions of packages and also of versions from lower-priority archives (package-menu-toggle-hiding).

/ a

Filter package list by archive (package-menu-filter-by-archive). This prompts for a package archive (e.g., ‘gnu’), then shows only packages from that archive. You can specify several archives by typing their names separated by commas.

/ d

Filter package list by description (package-menu-filter-by-description). This prompts for a regular expression, then shows only packages with descriptions matching that regexp.

/ k

Filter package list by keyword (package-menu-filter-by-keyword). This prompts for a keyword (e.g., ‘games’), then shows only packages with that keyword. You can specify several keywords by typing them separated by commas.

/ N

Filter package list by name or description (package-menu-filter-by-name-or-description). This prompts for a regular expression, then shows only packages with a name or description matching that regexp.

/ n

Filter package list by name (package-menu-filter-by-name). This prompts for a regular expression, then shows only packages with names matching that regexp.

/ s

Filter package list by status (package-menu-filter-by-status). This prompts for one or more statuses (e.g., ‘available’, see Package Statuses), then shows only packages with matching status. You can specify several status values by typing them separated by commas.

/ v

Filter package list by version (package-menu-filter-by-version). This prompts first for one of the comparison symbols ‘<’, ‘>’ or ‘=’ and for a version string, and then shows packages whose versions are correspondingly lower, equal or higher than the version you typed.

/ m

Filter package list by non-empty mark (package-menu-filter-marked). This shows only the packages that have been marked to be installed or deleted.

/ u

Filter package list to show only packages for which there are available upgrades (package-menu-filter-upgradable). By default, this filter excludes the built-in packages for which a newer version is available, but customizing package-install-upgrade-built-in can change that. See Package Installation.

/ /

Clear filter currently applied to the package list (package-menu-filter-clear).

For example, you can install a package by typing i on the line listing that package, followed by x.