0

I am getting confused about minibuffer completion. I can see icomplete and ivy.

For icomplete, there are two main displays, horizontal display (default icomplete) and vertical display (icomplete-vertical). And a number of styles (basic, substring, partial-completion, flex, initials). Then icomplete style can also use orderless (using the orderless package).

Then there is ivy. Do the icomplete display (horizontal, vertical) and icomplete styles (basic, substring, partial-completion, flex, initials, orderless) affect the functionality of ivy?

Drew
  • 75,699
  • 9
  • 109
  • 225
Dilna
  • 1,173
  • 3
  • 10

1 Answers1

0

One of the features of both icomplete and ivy is to provide an 'alternative' minibuffer display function. Configurations for icomplete do not affect configurations for Ivy and vice-versa. Although, (at least) Ivy is not really designed to work with another completion framework simultaneously, as it simply defines an alternative completing-read-function.

Furthermore, Icomplete uses Emacs its default completion system which is configured via Emacs its default completion variables while Ivy defines its own completion system, which is configured via the ivy-re-builders-alist.

Therefore, the Ivy completion styles are not affected by the Icomplete completion styles and vice-versa.

If you would like to read more about Emacs completion systems, then I would recommend taking a look at the README of the Vertico package. Of the currently available completion frameworks, Vertico will probably become the most popular one in the future. However, for beginners, I would currently probably still recommend using Ivy, which I am using myself, as it is fully configured 'out of the box'. Simply try Ivy, and if you do not like it, then you can easily switch to Vertico or any other completion framework. But at least for Vertico expect to spend some time on configuration. Another popular completion framework is Helm, which is probably the most powerful and most heavyweigth completion framework and is also a perfect alternative to Ivy.

Finally, I think what I am writing here is correct (as I have looked into it before), but I did not double-check it.

dalanicolai
  • 6,108
  • 7
  • 23
  • Does all this mean that the one that takes effect is the latest one that is activated, or would I have to switch the current mode off first before I turn on another? – Dilna Oct 27 '22 at 14:04
  • I am not sure about the correct answer, because different frameworks achieve similar things in different ways. But I guess it is generally wise, and probably necessary, to switch-off the current mode before activating the next one. – dalanicolai Oct 27 '22 at 14:57