Completion Example
A simple example may help here. M-x uses the minibuffer to read the name of a command, so completion works by matching the minibuffer text against the names of existing Emacs commands. Suppose you wish to run the command auto-fill-mode. You can do that by typing M-x auto-fill-mode =RET=, but it is easier to use completion. If you type M-x a u =TAB=, the TAB looks for completion alternatives (in this case, command names) that start with au. There are several, including auto-fill-mode and autoconf-mode, but they all begin with auto, so the au in the minibuffer completes to auto. (More commands may be defined in your Emacs session. For example, if a command called authorize-me was defined, Emacs could only complete as far as aut.) If you type =TAB= again immediately, it cannot determine the next character; it could be -, a, or c. So it does not add any characters; instead, TAB displays a list of all possible completions in another window. Next, type -f. The minibuffer now contains auto-f, and the only command name that starts with this is auto-fill-mode. If you now type =TAB=, completion fills in the rest of the argument auto-fill-mode into the minibuffer. Hence, typing just a u =TAB - f TAB= allows you to enter auto-fill-mode. TAB also works while point is not at the end of the minibuffer. In that case, it will fill in text both at point and at the end of the minibuffer. If you type M-x autocm, then press C-b to move point before the m, you can type =TAB= to insert the text onf- at point and ode at the end of the minibuffer, so that the minibuffer contains autoconf-mode.