== Icomplete Mode ==

The built-in Icomplete minor mode provides an incremental MiniBuffer [[Completion]] ''preview'': As you type in the minibuffer, a list of matching commands is echoed there so you can see how to complete a command.

You can also select one of the completion candidates.  See `C-h f icomplete-mode' and the [https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html Icomplete Emacs manual entry] for more details.

Use command `icomplete-mode' to toggle icomplete mode on/off. To turn on the mode in your Emacs init file, do this:

    (icomplete-mode 1)

Icomplete also includes
* `fido-mode', which emulates [[Ido]]
* `icomplete-vertical-mode', which toggles vertical candidate display in `icomplete-mode' or `fido-mode'.

==Related packages==
[:IcompleteModePlus]
[:IcompletePlus]
=== Icomplete Mode+ ===

Library <tt>[[icomplete+.el]]</tt> (Icomplete+) provides the following enhancements to icomplete mode:

* When several completions are possible, the common completion ''stem'' (prefix) is distinguished better from the different completion ''remainders'' (suffixes) by using different [[face]]s.
* When a matching command is bound to keys, these bindings are highlighted in a different face.
* When more than one completion is available, the total number precedes
the suffixes display, giving you an idea of the size of the completion set: 

        M-x forw    14 (ard-) { char line list...}

* By default, does not bind keys for cycling in `icomplete-mode'.  Defines a separate mode for that, '''`icomplete-cycling-mode'''', so you can use Icomplete with or without those key bindings.  Fixes [[http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13602|Emacs bug #13602]].  (The default key bindings for cycling take away useful minibuffer keys.)  Turning on `icomplete-cycling-mode' also turns on Icomplete mode.  (Emacs 24.4+)

* If you also use '''[[Icicles]]''' then, whenever you change direction when cycling completion candidates, Icomplete displays the number of other candidates in the current cycle. For example:

        M-x forward-line   [Matched]  (13 more)

Here are some screen shots showing the overall effect (these are a bit old --
they do not show, for instance, the number of available completions or number of candidates remaining in an '''Icicles''' cycle):

[[image:DrewsEmacsIcompleteImage]]
[[image:DrewsEmacsIcompleteImageMatch]]

=== Icicles' Apropos (Regexp) Icompletion ===

'''[[Icicles]]''' provides a kind of ''apropos'' icompletion. As with standard icompletion, the candidate completions that match your input are displayed incrementally, as you type. The difference is that the matches are ''regular expression'' (regexp) matches. See [[Icicles - Icompletion]].

Icompletion gives you an idea what completions are available. In '''[[Icicles]]''' there are two kinds of completion operation: standard ''prefix'' completion and ''apropos'' (regexp) completion. Standard icompletion (library icomplete.el or Lisp:icomplete+.el (Icomplete+)) shows you the prefix completions for your current input. Apropos icompletion shows you the apropos completions.

'''Example:''' You type `M-x char', and standard prefix icompletion shows you all of the commands that start with `char'. Apropos icompletion shows you all of the commands that contain `char' ''anywhere'' in their name, not just as a prefix, so you also see commands such as `forward-char'.

The apropos icompletion of '''[[Icicles]]''' is displayed, not in the minibuffer, but in buffer `*Completions*'. This means that you can use both kinds of icompletion at the same time: library icomplete.el or Lisp:icomplete+.el shows the prefix completions in the minibuffer, while '''[[Icicles]]''' shows the apropos completions in buffer `*Completions*'.

-----
CategoryCompletion CategoryHelp
