windows 10, emacs 26,1, ido mode

I use ido mode.

Suppose I start some command

M-x magit

Then TAB

The possible completions are many and fill the screen:

enter image description here

I need to continue typing and press TAB to select desire command. But... it's very slow.

Is it a more interactive way? like fly filter commands' name in ido mode. Something similar to helm only I don't like helm.

3 Answers 3


I recommend Smex:

(use-package smex
  :bind (("M-x" . smex))
  :config (smex-initialize))

Getting started guide on Github:

Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a convenient interface to your recently and most frequently used commands. And to all the other commands, too.

Find it on emacs wiki

Including example code and links.

  • OK. Package "smex" work fine with files, buffers. But what about list of shell history commands (dir, copy, mkdir and so on). I also need this in shell mode. Commented Oct 3, 2018 at 15:40

I think you are asking for incremental completion: the completion candidates are shown and updated as you type into the minibuffer.

  1. You get that using Icomplete mode. It originally just showed you the candidates, without giving you a way to choose one, but starting a few Emacs releases ago it also lets you pick a candidate. It shows only some of the candidates, and it shows them in the minibuffer. Icomplete is part of vanilla Emacs, and library icomplete+.el offers some enhancements.

  2. Icicles gives you more flexible incremental completion, and you can easily customize the behavior (change the delay or the number of chars before starting to show candidates, show candidates from the outset, toggle it on/off on the fly, etc.). Candidates are shown in buffer *Completions*.

    The default behavior of Icicles is different from Ido, but you can change the behavior to be more like Ido, if you like.


As mentioned in the IDO documentation, you can place the following inside your Emacs init file.

 (lambda ()
     (ido-completing-read "M-x " (all-completions "" obarray 'commandp))))

Make sure you have already setup ido-mode correctly, before settings the above global binding.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.