GNU Emacs Manual - Strict Completion

Go to the first, previous, next, last section, table of contents.

### 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` (see section Using Other Windows).

Go to the first, previous, next, last section, table of contents.