Emacs Completion Showcase with VOMPECCC (video)

Emacs Completion Showcase with VOMPECCC (video)

1. About   emacs completion workflows

vompeccc-showcase-banner.jpeg

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 embark wgrep

consult-ripgrep → input your search term → embark-exportwgrep-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).

8. Code Symbol Navigation   imenu navigation

consult-imenu within the current buffer; consult-imenu-multi across every buffer of the same major mode.

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   embark 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   embark flow

embark-become switches the active command (e.g. find-fileswitch-to-buffer) without losing the input I have already typed.

13. Symbol-Aware Multi-File Refactor   xref embark wgrep

xref-find-references (M-?, with xref-show-xrefs-function set to consult-xref) → embark-exportwgrep-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 embark

consult-recent-fileembark-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 embark

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   embark

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.