Emacs Completion Showcase with VOMPECCC (video)
Table of Contents
- 1. About emacs completion workflows
- 2. The Video demo
- 3. A Note on My Configuration setup
- 4. Multi-File Refactor ripgrep wgrep
- 5. Async + Local Two-Stage Search consult async orderless
- 6. Unified Buffer / File / Bookmark Switcher consult narrowing
- 7. Buffer and Project-Wide Line Search consult preview
- 8. Code Symbol Navigation
- 9. Documentation Search consult docs
- 10. Find Commands by Docstring marginalia orderless
- 11. Mass Action Across Candidates batch
- 12. Pivot Mid-Prompt flow
- 13. Symbol-Aware Multi-File Refactor xref wgrep
- 14. Recent Files as a Filesystem dired
- 15. Avy-Style Jump Then Act vertico
- 16. Resume the Last Session vertico repeat
- 17. Bonus: Magit-Style Working Copy as Completion :consult-ls-git git
- 18. Bonus: Browse GitHub Repos from the Minibuffer :consult-gh
- 19. Bonus: Search All Public Code on GitHub :consult-gh:code-search:
- 20. Bonus: Multi-Source Web Search :consult-omni web
- 21. Closing closing
- 22. TLDR tldr
1. About emacs completion workflows
Figure 1: JPEG produced with DALL-E 3
This is the fifth post in my series on Emacs completion. The first, Incremental Completing Read (ICR), explains what modern completion actually is, and how Emacs exposes it as a programmable substrate rather than a closed UI. The second introduced the VOMPECCC stack of eight packages covering the six orthogonal concerns of a complete completion system. The third toured spot, a Spotify client built as a thin shim on top of those packages. And the fourth built a produce picker from scratch, demonstrating the specific features that each VOMPECCC package provides.
This post is the practical complement to all the other posts. Here, we showcase over a dozen workflows I use every day. Most are powered entirely by features that ship in the box with the VOMPECCC packages, and there are 'Bonuses' which demonstrate workflows enable by 3rd party packages that build on top of VOMPECCC. The prose is deliberately thin, and you will find most of the demonstration is in the video below.
2. The Video demo
As in the previous posts in this series, the upper-right of my Emacs (in the tab-bar) shows the keybindings and command names I am invoking, so you can map what you see onto your own configuration.
3. A Note on My Configuration setup
Two configuration choices show up repeatedly and are worth naming once upfront so the keystrokes are intelligible.
Async split character. My consult-async-split-style is comma, not the default #. In Consult commands like consult-ripgrep, everything before the first , is sent to the external tool as the search pattern, and everything after is filtered locally with my completion style.
Orderless dispatchers. My orderless-style-dispatchers bind affix characters to matching styles: @ for Marginalia-annotation matching, ~ for flex, ` for initialism, ! for negation. Each can be a prefix or suffix on a component. My orderless-component-separator is also ,, so a single comma serves double duty depending on context.
4. Multi-File Refactor ripgrep wgrep
consult-ripgrep → input your search term → embark-export → wgrep-change-to-wgrep-mode → edit as you like → C-<return>
5. Async + Local Two-Stage Search consult async orderless
consult-ripgrep with , splitting external (ripgrep) from local (Orderless): for example, error,handler,~retry,!test.
6. Unified Buffer / File / Bookmark Switcher consult narrowing
consult-buffer with narrowing keys: b SPC for buffers, f SPC for recent files, m SPC for bookmarks, p SPC for project items.
7. Buffer and Project-Wide Line Search consult preview
consult-line within the current buffer; consult-line-multi across all buffers (or the project, with a prefix argument).
9. Documentation Search consult docs
consult-info for Info manuals (Emacs, Elisp, Org, plus every package that ships its own .info file); consult-man for system man pages.
10. Find Commands by Docstring marginalia orderless
M-x window @frame. The @ dispatcher routes a component through orderless-annotation to match against Marginalia's docstring text rather than the candidate name. This lets you query for commands by what they do rather than what they are called.
11. Mass Action Across Candidates batch
C-> (embark-act-all) runs a single Embark action on every candidate currently surviving in the prompt.
You can also embark-select to create a subset of displayed candidates and use embark-act-all to act on only those selected candidates.
12. Pivot Mid-Prompt flow
embark-become switches the active command (e.g. find-file → switch-to-buffer) without losing the input I have already typed.
13. Symbol-Aware Multi-File Refactor xref wgrep
xref-find-references (M-?, with xref-show-xrefs-function set to consult-xref) → embark-export → wgrep-change-to-wgrep-mode → edit → C-<return> to write your changes. This is very similar to the ripgrep version above but driven by the language server, so foo the variable and foo the unrelated comment stay separate.
14. Recent Files as a Filesystem dired
consult-recent-file → embark-export produces a Dired buffer, putting every Dired operation (mark, copy, rename, chmod, batch shell command) on the recent-files set.
15. Avy-Style Jump Then Act vertico
In any Vertico session, C-' jumps to a labeled candidate (Avy-style); C-" does the same jump and hands the candidate to Embark.
16. Resume the Last Session vertico repeat
s-V (vertico-repeat) reopens the last completion session with its prompt, input, and selected candidate intact.
17. Bonus: Magit-Style Working Copy as Completion :consult-ls-git git
consult-ls-git surfaces working-copy status, tracked files, and branches in a single multi-source prompt with narrowing keys. A nice on-the-fly alternative to the Magit status buffer.
18. Bonus: Browse GitHub Repos from the Minibuffer :consult-gh
consult-gh-search-repos streams GitHub repos as candidates; C-= previews the README; M-S (vertico-suspend) (or simply moving your cursor out of the minibuffer) detaches the minibuffer for free reading; s-V (vertico-repeat) (or simply moving your cursor back into the minibuffer) resumes; C-. exposes Embark actions (clone, browse, view issues, view PRs, view files, fork).
19. Bonus: Search All Public Code on GitHub :consult-gh:code-search:
consult-gh-search-code against the contents of every public repository on GitHub. You get the same VOMPECCC features, but with the search space expanded to "all open source code in the world".
20. Bonus: Multi-Source Web Search :consult-omni web
consult-omni-web fans one query out across Google, Brave, Wikipedia, StackOverflow, YouTube, and a gptel-backed LLM source simultaneously; s-j / s-k jumps between source groups; C-= previews; C-. surfaces Embark alternates (open in EWW, copy URL, etc.).
21. Closing closing
What makes this so cool is that none of these workflows required a single line of custom code. Each is built entirely out of the features that ship with one or more of the VOMPECCC packages. Pick the two or three that map onto frictions you already feel, and the rest will reveal themselves ad-hoc as you encounter new frictions.
22. TLDR tldr
Over a dozen high-impact Emacs workflows are demonstrated in this post: multi-file refactor, two-stage ripgrep, unified buffer switching, line search with preview, symbol navigation, docs search, M-x by docstring, batch action, mid-prompt pivot, symbol-aware refactor, recent files as Dired, and quick jump + act, session resume. Each of these workflows is composed entirely from features that ship in the box with the VOMPECCC packages.