Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there some kind of "package-search" function available for Emacs?

In Emacs, the M-x keybinding lets you search and execute available commands. I'm looking for a similar function/functionality that lets you search and install available packages from the Emacs repositories.

The best I can do at present is M-x package-list-packages followed by C-s, but this has a few shortcomings:

  1. It requires that you navigate to the list of available packages, whereas I'd like something that works from most places within Emacs.
  2. It only lets you cycle through the package list, whereas I'd like something that displays a narrowing list of results.
  3. It doesn't support fuzzy matching (like Helm).

Does the functionality I'm looking for exist? Or is there a package that provides this functionality for Emacs? And if so, where can I find it?

like image 823
achalk Avatar asked Dec 18 '16 00:12

achalk


2 Answers

Install the ido-ubiquitous package and enable (ido-ubiquitous-mode 1), and (setq ido-enable-flex-matching t) to enable flex matching (not sure if that's necessary, but I have it set). It basically makes all completion use ido, including package-install. You can narrow with C-SPC, or use <tab> to pop up a completions buffer.

I usually use list-packages. I use flex-isearch to automatically start flex matching after isearch either wraps around or has no matches.

like image 23
jpkotta Avatar answered Sep 22 '22 16:09

jpkotta


It sounds like M-x package-install should do what you want. If you have helm installed, you will have a helm-like interface to search and install packages. Even without helm, it can be invoked from any buffer, it supports narrowing, and if you do have helm installed, it supports fuzzy matching.

I still tend to use M-x package-list-packages unless I know exactly what I am looking for, because unlike package-install it allows you to see details and descriptions of the packages. I have C-s bound to helm-occur, so I can search through this buffer with a helm-like interface as well. Also, in the *Packages* buffer, you can use f (package-menu-filter) which allows you to narrow down the package list based on a list of comma-separated keywords. However, I can understanding you wanting to avoid the aspects of package-list-packages outlined in your post.

like image 153
elethan Avatar answered Sep 20 '22 16:09

elethan