6.3.3 Strict Completion
There are three different ways that <RET> can work in completing
minibuffers, depending on how the argument will be used.
* "Strict" completion is used when it is meaningless to give any
argument except one of the known alternatives. For example, when
`C-x k' reads the name of a buffer to kill, it is meaningless to
give anything but the name of an existing buffer. In strict
completion, <RET> refuses to exit if the text in the minibuffer
does not complete to an exact match.
* "Cautious" completion is similar to strict completion, except that
<RET> exits only if the text was an exact match already, not
needing completion. If the text is not an exact match, <RET> does
not exit, but it does complete the text. If it completes to an
exact match, a second <RET> will exit.
Cautious completion is used for reading file names for files that
must already exist.
* "Permissive" completion is used when any string whatever is
meaningful, and the list of completion alternatives is just a
guide. For example, when `C-x C-f' reads the name of a file to
visit, any file name is allowed, in case you want to create a
file. In permissive completion, <RET> takes the text in the
minibuffer exactly as given, without completing it.
The completion commands display a list of all possible completions in
a window whenever there is more than one possibility for the very next
character. Also, typing `?' explicitly requests such a list. If the
list of completions is long, you can scroll it with `C-M-v' (Note:
automatically generated by info2www version 22.214.171.124