Emacs Carnival February 2026: Completion
| stream, emacsFor the Emacs Carnival theme for February, let's learn more about completion together. There are all sorts of cheesy puns one can make about completion and Emacs and Valentine's Day, like "You complete me," but beyond the jokes, it's actually a really good topic to help us work with Emacs more efficiently.
First, what's the Emacs Carnival?
From Christian Tietze:
A blog carnival is a fun way to tie together a community with shared writing prompts, and marvel at all the creative interpretations of the topic of the month.
You can get a sense of previous Emacs Carnivals by checking out the previous ones:
| Month | Host | Topic |
|---|---|---|
| June 2025 | ctietze | "Take Two" |
| July | gnewman | "Writing Experience" |
| August | takeonrules | "Your Elevator Pitch for Emacs" |
| September | rodiongoritskov | "Obscure packages" |
| October | AndyDrop | "Maintenance, server or home or garden" |
| November | donaldh | "An ode to org-babel" |
| December | GeorgeJones | "The People of Emacs" |
| January 2026 | ctietze | "This year, I'll…" |
You don't have to be an expert in order to post. In fact, this is a great way for all of us (beginners and otherwise) to focus on a topic together. Let's treat it like a kind of book club where we can share our notes as we learn.
What do we mean by completion in Emacs?
Completion can make it faster to enter text and to reduce errors. You can use it to find Emacs commands even if you don't know their full names or keyboard shortcuts. You can use it to expand abbreviations or even fix the typos you usually make. You can use it when you code and when you write. I've heard some people define common abbreviations across different programming languages so they don't have to remember the differences between syntaxes, and minibuffer-completion-based interfaces like consult-ripgrep let you flip through search results astoundingly quickly.
Let's start by talking about two types of completion:
minibuffer completion, which happens in the small window at the bottom of the screen whenever you use M-x, find a file, etc. This is where you can type a little and then find matching options so that you don't have to remember the full names of commands or files. For lots of tips, check out Understanding Minibuffer Completion - Mastering Emacs.
For example, here's my minibuffer for
M-xusing vertico for the display and marginalia for annotations on the side:
Figure 1: Screenshot of minibuffer completion in-buffer completion, like when you expand an abbreviation, insert a snippet, or fill in the rest of a variable name.
Figure 2: Screenshot of in-buffer completion
Here are some ideas for things to explore. Pick an idea or come up with your own and write a post sharing what you're figuring out!
- Minibuffer completion
- Do you know about
S-M-x(execute-extended-command-for-buffer- available with Emacs 28.1 or higher), which suggests commands relevant to the current mode? - Have you gotten the hang of using
M-pto go back through your history? (Did you know you can interactively search through that history withC-sandC-r?) - Do you know about using
M-nto go into the future history? - Have you tried saving your minibuffer history with savehist?
- Do you want to experiment with recursive minibuffers so that you can do something else in the middle of a completion?
- Do you have nicer completion set up, like icomplete-vertical-mode, fido-mode or fido-vertical-mode, ido-mode or ido-vertical-mode, ivy, or vertico? This makes things like
M-x(execute-extended-command) andM-y(yank-pop) soo much nicer! - Have you experimented with other completion styles like orderless so that you can type parts of the completion name in any order?
- Have you checked out the convenient search and navigation commands in more complex completion frameworks like consult, counsel, or helm?
- Have you experimented with other sort orders like the built-in historical option or more complex sorts with prescient.el?
- Do you want to see additional information when you're choosing completions? Try out marginalia.
- Have you checked out embark for doing other things with your completion like inserting a file name instead of opening it, or changing the command that you wanted to do, or acting on multiple items?
- If you use Org Mode, do you want to make your own custom Org link type with completion? (I really like being able to quickly link to blog posts, parts of my config, or project files with completion)
- Do you want to define your own completion commands, maybe even with previews, dynamic collections or asynchronous data?
- Do you know about
- In-buffer completion
- Have you set up your own abbreviations to fix common typos or expand text quickly?
- Have you tried using dabbrev-expand to expand words based on what you have in the current buffer or in other buffers?
- Do you want to try hippie-expand to try different functions for expansion?
- Have you defined your own snippets for prose or code? (Yasnippet is popular.)
- Did you know you can embed Emacs Lisp in your Yasnippet templates?
- Have you tried icomplete-in-buffer, corfu, company, or some other in-buffer completion framework?
- If you use Yasnippet and you've just added completion at point, have you added your snippets to the completions with something like yasnippet-capf?
- Do you want context-sensitive completions for your shell commands in Emacs? Try pcomplete - you can even define your own.
- If you code, do you have LSP, Eglot, or something similar set up to offer you completions in your programming languages?
- Ooh, looks like you can translate VS Code / LSP snippets to Yasnippet so you can take advantage of other people's snippet collections.
- Meta: What else can you bring into Emacs so that you can take advantage of all the completions that you've set up, like note-taking or e-mail? (Ex: mastodon.el + org-contacts + a little code to insert a Mastodon handle with completion = I can think of people by name instead of by handle!)
Things I want to learn about
For example, this month, I want to…
- Minibuffer:
- Figure out some kind of approximate speech-based minibuffer completion for commands
- Create a custom Org Mode link type for emacswiki and other things I refer to frequently
- Write about the completion functions I'm using to help me learn French
- In-buffer completion:
- Notice where I keep typing the same kinds of things and define more snippets for them
- Borrow ideas from other people's snippets: yasnippet-snippets (css, elisp, js, python); friendly-snippets (VS Code)
- Share my snippets in a repository
- Figure out some kind of speech interface for expanding snippets
- Sort out completion in programming buffers so that I can finally take advantage of LSP
- Complete French words in-buffer ignoring accented characters
- Organize tons of completion-related links from Emacs News onto EmacsWiki: Category Completion and other pages
- Revisit the completion-related code in my config to dust off things that I can update, remember to use, or document with gif-screencast
I'll publish my notes on my blog and I'll add them to this post as well. I'd love to check out your notes too!
How to submit your entry/entries
Please e-mail me at sacha@sachachua.com or DM me via Mastodon with a link to your post(s) by February 28 so that I can add them to this post. I'm happy to link to multiple posts. For example, here are some things you might like to write about:
- what you're thinking of figuring out (in case other people have suggestions)
- your notes along the way
- your current setup
- things you're particularly proud of
Looking forward to hearing from you!