I complete. You?


Tracking the Emacs development by building its master branch may not be a smooth experience for everyone, but for the average enthusiast is the perfect way to see their favourite tool evolve, trying experimental things, and reporting back to the core developers to help them. Sure, one has to deal with occasional build failures, but with Git at one’s service it’s always easy to reset to a working commit and find happiness again.

Recently a shiny new mode has been implemented on master: icomplete-vertical-mode. Now, if you had the chance to read this blog in the past you know that when it comes to candidate completion I am a gangsta jumping back and forth among packages with excessive self-satisfaction. But you should also already know that I like to use as many Emacs built-ins as possible. Hence, I could not wait to give icomplete-vertical-mode a try.

Turning it on is trivial:

(icomplete-mode 1)
(add-hook 'icomplete-mode-hook #'icomplete-vertical-mode)

Since other completion systems have spoiled me, I prefer scrolling over the rotating behaviour of the standard icomplete:

(setq icomplete-scroll t)

Furthermore, I always want to see the candidate list:

(setq icomplete-show-matches-on-no-input t)

This is pretty much it. I use icomplete-fido-backward-updir to move up one directory and I have exit-minibuffer bound to C-j for convenience.

I have been using icomplete-vertical-mode daily for a while now and everything has been working as expected. For the record, this mode works seamlessly with your favourite completion-styles settings, so moving from, say, Vertico to icomplete-vertical-mode is simple and easy.