My question is pretty simple, and that is why Ido and Icomplete are both available in emacs.

I find it very strange that the two modes exist together, seeing that they both do what is essentially the same thing, incremental completion for different minibuffer queries. What I find annoying about the two is that Ido is much cleaner and nice to use, but doesn't add completion for M-x. In order for that to be implemented, you have to download an external package, smex. On the other hand, Icomplete seems like an early version of Ido, but with completion for M-x.

Really, what I'm asking, is why Ido can't replace Icomplete entirely by fully replacing all of Icomplete's features instead of replacing most of them.

1 Answer 1


Ido is implemented in a way that would require a big rewrite for it to support completion in different context, not just the handful of the pre-defined ones.

But it was born at the time when it was "fashionable" to get things into Emacs, and since it's still popular, it can't be removed outright either.

As for replacing, though, the developers are going in the opposite way, hoping to replace Ido with Icomplete someday. Since the former has some peculiar (but handy) things in its UI, Emacs 27 will contain fido-mode. It's a minor mode based on Icomplete that provides a behavior that should be more familiar to Ido users.

Give it a try sometime.

  • 1
    That sounds really cool, I should mess around with the newest version. For right now, I'm using icomplete. Going off your username both here and on the git Savannah, it looks like you are contributing to this feature. +1 to that. I'd like to contribute to emacs someday. Mar 19, 2020 at 20:02
  • I'm really liking fido-mode, except I miss having my M-x commands sorted by "frecency" (frequency and recency, like what prescient or amx do). Can't seem to find a way to do this in vanilla Emacs.
    – Andy
    May 30, 2020 at 18:50
  • Indeed, there's no current option to do that. You can file a feature request, of course. Personally, I never rely on it, and I think the idea with a lot of fuzzy matching algos is to sort based on how well the input fits. Taking frecency into account is an extra complication.
    – Dmitry
    May 30, 2020 at 19:19

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.