@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005 Free Software Foundation, Inc.
+@c 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/minibuf
@node Minibuffers, Command Loop, Read and Print, Top
@code{enable-recursive-minibuffers} or by putting properties of that
name on command symbols (@pxref{Recursive Mini}).
- Like other buffers, a minibuffer may use any of several local keymaps
-(@pxref{Keymaps}); these contain various exit commands and in some cases
-completion commands (@pxref{Completion}).
-
-@itemize @bullet
-@item
-@code{minibuffer-local-map} is for ordinary input (no completion).
-
-@item
-@code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
-just like @key{RET}.
-
-@item
-@code{minibuffer-local-completion-map} is for permissive completion.
-
-@item
-@code{minibuffer-local-must-match-map} is for strict completion and
-for cautious completion.
-@end itemize
+ Like other buffers, a minibuffer uses a local keymap
+(@pxref{Keymaps}) to specify special key bindings. The function that
+invokes the minibuffer also sets up its local map according to the job
+to be done. @xref{Text from Minibuffer}, for the non-completion
+minibuffer local maps. @xref{Completion Commands}, for the minibuffer
+local maps for completion.
When Emacs is running in batch mode, any request to read from the
minibuffer actually reads a line from the standard input descriptor that
so as to keep them near the higher-level completion features that do
use the minibuffer.
+ If you store a completion alist in a variable, you should mark the
+variable as ``risky'' with a non-@code{nil}
+@code{risky-local-variable} property.
+
@defun try-completion string collection &optional predicate
This function returns the longest common substring of all possible
completions of @var{string} in @var{collection}. The value of
bound to the value of @code{completion-ignore-case}.
@end defvar
-@defmac lazy-completion-table var fun &rest args
+@defmac lazy-completion-table var fun
This macro provides a way to initialize the variable @var{var} as a
collection for completion in a lazy way, not computing its actual
contents until they are first needed. You use this macro to produce a
value that you store in @var{var}. The actual computation of the
proper value is done the first time you do completion using @var{var}.
-It is done by calling @var{fun} with the arguments @var{args}. The
+It is done by calling @var{fun} with no arguments. The
value @var{fun} returns becomes the permanent value of @var{var}.
-Here are two examples of use:
+Here is an example of use:
@smallexample
-(defvar foo (lazy-completion-table foo make-my-alist 'global))
-
-(make-local-variable 'bar)
-(setq bar (lazy-completion-table foo make-my-alist 'local)
+(defvar foo (lazy-completion-table foo make-my-alist))
@end smallexample
@end defmac
feedback. This is not needed in the minibuffer; for minibuffer
completion, you can pass @code{nil}.
-This function is called by @code{minibuffer-completion-help}. The
+This function is called by @code{minibuffer-completion-help}. The
most common way to use it is together with
@code{with-output-to-temp-buffer}, like this:
with other characters bound as in @code{minibuffer-local-map}.
@end defvar
+@defvar minibuffer-local-filename-completion-map
+This is like @code{minibuffer-local-completion-map}
+except that it does not bind @key{SPC}. This keymap is used by the
+function @code{read-file-name}.
+@end defvar
+
+@defvar minibuffer-local-must-match-filename-map
+This is like @code{minibuffer-local-must-match-map}
+except that it does not bind @key{SPC}. This keymap is used by the
+function @code{read-file-name}.
+@end defvar
+
@node High-Level Completion
@subsection High-Level Completion Functions
@end defun
See also the functions @code{read-coding-system} and
-@code{read-non-nil-coding-system}, in @ref{User-Chosen Coding Systems}.
+@code{read-non-nil-coding-system}, in @ref{User-Chosen Coding Systems},
+and @code{read-input-method-name}, in @ref{Input Methods}.
@node Reading File Names
@subsection Reading File Names
@var{existing} is @code{nil}, then the name of a nonexistent file is
acceptable.
+The function @code{read-file-name} uses
+@code{minibuffer-local-filename-completion-map} as the keymap if
+@var{existing} is @code{nil}, and uses
+@code{minibuffer-local-must-match-filename-map} if @var{existing} is
+non-@code{nil}. @xref{Completion Commands}.
+
The argument @var{directory} specifies the directory to use for
completion of relative file names. It should be an absolute directory
name. If @code{insert-default-directory} is non-@code{nil},
properties, just the characters themselves. @xref{Text Properties}.
@end defun
+@defun minibuffer-completion-contents
+@tindex minibuffer-completion-contents
+This is like @code{minibuffer-contents}, except that it returns only
+the contents before point. That is the part that completion commands
+operate on. @xref{Minibuffer Completion}.
+@end defun
+
@defun delete-minibuffer-contents
@tindex delete-minibuffer-contents
This function erases the editable contents of the minibuffer (that is,