A helm-mini in ido
Ido's -
- smarter sorting
- snappier speed
meets helm-mini's -
- informatively-colored candidates list
- convenience of a single command to switch to buffers, open recentf files, and create new buffers.
Plus, some improvements of its own -
- If a recentf entry is already visited by a buffer, put the entry at the end of the (recentf?) candidates list.
- (planned) tweak
ido-mini-use-paths
to search and display not just buffer names but also their file paths, wherever applicable. - (planned) show documentation of functions from smex, akin to C-j in helm-M-x
ido-mini
requires dash.el and ido
.
ido-vertical-mode
can be used to view candidates vertically.
ido-mini
uses Emacs' built-in recentf-mode
for recent files. If
not, simply add (recentf-mode)
to your init.
Add your keybindings to ido-common-completion-map
. See section 'Customization' in (find-library "ido")
For fuzzy matching, install the flex-ido package. It's not always useful, so you may want to define a command to toggle it -
(defun my/ido-toggle-flex ()
"Toggle the value of `ido-enable-flex-matching'."
(interactive)
(setq flx-ido-mode (not flx-ido-mode)))
and bind it to a key.
ido-mini tries to let the user modify core behaviour without redefining entire functions. This is done by providing variables which hold lists of functions (like typical Emacs hooks).
The functions are run in sequence, and each accepting the output of the previous. Changing the functions in the list or even the order of the functions will change behaviour.
Currently, there are two such variables -
ido-mini-buffer-list-functions
and
ido-mini-recentf-list-functions
. ido-mini uses the output of these
functions to derive the final list of candidates.
flx-ido and recent versions of ido override ido-mini's candidate coloring. As of now it's a choice between flx-ido/ido's matched string highlighting, and ido-mini's informatively colored candidates. If you'd rather have the latter, add (setq flx-ido-use-faces nil)
and (setq ido-use-faces nil)
to your init respectively.
- When called twice in succession, quit ido-mini
- color the matched substring in the candidates?
- store only search terms in input history, not the selected buffer names/file paths
- Mimic exact C-j (
ido-select-text
) and RET behaviour (ido-exit-minibuffer
) - What if we search for files (perhaps only in user-specified directories, when provided) when there are no matches in the buffer list as well as in recentf?
- Add animated
- Add indicator if flx-ido-mode is enabled
- Add tests
- Don't fail if recentf-list is nil
- Create user-redefinable function to return final list of
candidates.
- Why not modularize candidate sources themselves? That way, users can customize what the candidates are as well as how they're prioritized. (...doesn't that effectively make this helm, then?)
- Maybe a macro to define a candidate source, automatically defining the filter function variable for it.
- Why not modularize candidate sources themselves? That way, users can customize what the candidates are as well as how they're prioritized. (...doesn't that effectively make this helm, then?)
- Create global variable to store prompt function (ido-completing-read) and to permit users to change it.
- I'm often opening certain folders. It'd be nice if ido-mini allowed me to recall them quickly, too.
Feedback and MRs very welcome. 🙂
Contact the creator and other Emacs users in the Emacs room on the Jabber network - xmpp:[email protected]?join (web chat)
(For help in getting started with Jabber, click here)
ido-mini is released under your choice of Unlicense and the WTFPL.
(See files LICENSE and LICENSE.1.
wilfredh for the initial code that got me started - https://gist.github.com/Wilfred/31e8e0b24e3820c24850920444dd941d
wasamasa, bpalmer and #emacs in general for all their help and support
fiete for testing