@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 00, 2001
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
+@c 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Minibuffer, M-x, Basic, Top
@chapter The Minibuffer
@cindex prompt
When the minibuffer is in use, it appears in the echo area, and the
terminal's cursor moves there. The beginning of the minibuffer line
-displays a @dfn{prompt} which says what kind of input you should supply and
-how it will be used. Often this prompt is derived from the name of the
-command that the argument is for. The prompt normally ends with a colon.
+displays a @dfn{prompt} in a special color, to say what kind of input
+you should supply and how it will be used. Often this prompt is
+derived from the name of the command that the argument is for. The
+prompt normally ends with a colon.
@cindex default argument
Sometimes a @dfn{default argument} appears in parentheses after the
Since @key{RET} in the minibuffer is defined to exit the minibuffer,
you can't use it to insert a newline in the minibuffer. To do that,
-type @kbd{C-o} or @kbd{C-q C-j}. (Recall that a newline is really the
-character control-J.)
+type @kbd{C-o} or @kbd{C-q C-j}. (On text terminals, newline is
+really the @acronym{ASCII} character control-J.)
The minibuffer has its own window which always has space on the screen
but acts as if it were not there when the minibuffer is not in use. When
@vindex resize-mini-windows
The minibuffer window expands vertically as necessary to hold the
-text that you put in the minibuffer, if @code{resize-mini-windows} is
-non-@code{nil}. If @code{resize-mini-windows} is @code{t}, the window
-is always resized to fit the size of the text it displays. If
-@code{resize-mini-windows} is the symbol @code{grow-only}, the window
-grows when the size of displayed text increases, but shrinks (back to
-the normal size) only when the minibuffer becomes inactive.
+text that you put in the minibuffer. If @code{resize-mini-windows} is
+@code{t} (the default), the window is always resized to fit the size
+of the text it displays. If its value is the symbol @code{grow-only},
+the window grows when the size of displayed text increases, but
+shrinks (back to the normal size) only when the minibuffer becomes
+inactive. If its value is @code{nil}, you have to adjust the height
+yourself.
@vindex max-mini-window-height
The variable @code{max-mini-window-height} controls the maximum
maximum number of lines; @code{nil} means do not resize the minibuffer
window automatically. The default value is 0.25.
- If while in the minibuffer you issue a command that displays help text
-of any sort in another window, you can use the @kbd{C-M-v} command while
-in the minibuffer to scroll the help text. This lasts until you exit
-the minibuffer. This feature is especially useful when you display
-a buffer listing possible completions. @xref{Other Window}.
+ If, while in the minibuffer, you issue a command that displays help
+text of any sort in another window, you can use the @kbd{C-M-v}
+command while in the minibuffer to scroll the help text.
+(@kbd{M-@key{PAGEUP}} and @kbd{M-@key{PAGEDOWN}} also operate on that
+help text.) This lasts until you exit the minibuffer. This feature
+is especially useful when you display a buffer listing possible
+completions. @xref{Other Window}.
@vindex enable-recursive-minibuffers
Emacs normally disallows most commands that use the minibuffer while
Completion does ignore case distinctions for certain arguments in which
case does not matter.
+ Completion acts only on the text before point. If there is text in
+the minibuffer after point---i.e., if you move point backward after
+typing some text into the minibuffer---it remains unchanged.
+
@menu
-* Example: Completion Example.
-* Commands: Completion Commands.
-* Strict Completion::
-* Options: Completion Options.
+* Example: Completion Example. Examples of using completion.
+* Commands: Completion Commands. A list of completion commands.
+* Strict Completion:: Different types of completion.
+* Options: Completion Options. Options for completion.
@end menu
@node Completion Example
(@code{minibuffer-complete-word}).
@item @key{RET}
Submit the text in the minibuffer as the argument, possibly completing
-first as described below (@code{minibuffer-complete-and-exit}).
+first as described
+@iftex
+in the next subsection (@code{minibuffer-complete-and-exit}).
+@end iftex
+@ifnottex
+in the next node (@code{minibuffer-complete-and-exit}). @xref{Strict
+Completion}.
+@end ifnottex
@item ?
Display a list of all possible completions of the text in the minibuffer
-(@code{minibuffer-list-completions}).
+(@code{minibuffer-completion-help}).
@end table
@kindex SPC
@table @kbd
@findex mouse-choose-completion
-@item Mouse-2
-Clicking mouse button 2 on a completion in the list of possible
+@item Mouse-1
+@itemx Mouse-2
+Clicking mouse button 1 or 2 on a completion in the list of possible
completions chooses that completion (@code{mouse-choose-completion}).
You normally use this command while point is in the minibuffer, but you
must click in the list of completions, not in the minibuffer itself.
complete to @file{/usr/bin/foo}.
To enable this mode, use the command @kbd{M-x
-partial-completion-mode}, or customize the option
+partial-completion-mode}, or customize the variable
@code{partial-completion-mode}. This binds the partial completion
commands to @key{TAB}, @key{SPC}, @key{RET}, and @kbd{?}. The usual
-completion commands are available on @kbd{M-@key{TAB}},
-@kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
+completion commands are available on @kbd{M-@key{TAB}} (or
+@kbd{C-M-i}), @kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
@vindex PC-include-file-path
@vindex PC-disable-includes
Another feature of Partial Completion mode is to extend
-@code{find-file} so that the @samp{<@var{include}>} stands for the
+@code{find-file} so that @samp{<@var{include}>} stands for the
file named @var{include} in some directory in the path
@code{PC-include-file-path}. If you set @code{PC-disable-includes} to
non-@code{nil}, this feature is disabled.
@findex previous-history-element
The simplest way to reuse the saved arguments in the history list is
to move through the history list one element at a time. While in the
-minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
-to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
-down-arrow (@code{next-history-element}) to ``move to'' the next later
-input.
+minibuffer, use @kbd{M-p} or up-arrow
+(@code{previous-history-element}) to ``move to'' the next earlier
+minibuffer input, and use @kbd{M-n} or down-arrow
+(@code{next-history-element}) to ``move to'' the next later input.
+These commands don't move the cursor, they bring different saved
+strings into the minibuffer. But you can think of them as ``moving''
+through the history list.
The previous input that you fetch from the history entirely replaces
the contents of the minibuffer. To use it as the argument, exit the
@code{history-length} is @code{t}, though, there is no maximum length
and elements are never deleted.
+@vindex history-delete-duplicates
+ The variable @code{history-delete-duplicates} specifies whether to
+delete duplicates in history. If the value of @code{history-delete-duplicates}
+is @code{t}, that means when adding a new history element, all
+previous identical elements are deleted.
+
@node Repetition
@section Repeating Minibuffer Commands
@cindex command history
you can edit its expression as usual and then resubmit it by typing
@key{RET} as usual.
-@vindex isearch-resume-enabled
+@vindex isearch-resume-in-command-history
Incremental search does not, strictly speaking, use the minibuffer,
-but it does something similar, so normally it is treated as a complex
-command and it appears in the history list for @kbd{C-x @key{ESC}
-@key{ESC}}. You can disable that by setting
-@code{isearch-resume-enabled} to @code{nil}.
+but it does something similar. Although it behaves like a complex command,
+it normally does not appear in the history list for @kbd{C-x
+@key{ESC} @key{ESC}}. You can make it appear in the history by
+setting @code{isearch-resume-in-command-history} to a non-@code{nil}
+value. @xref{Incremental Search}.
@vindex command-history
The list of previous minibuffer-using commands is stored as a Lisp