*** empty log message ***
[bpt/emacs.git] / lispref / minibuf.texi
CommitLineData
3e01fd9d
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
facf1bca
LT
3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999,
4@c 2001, 2004
177c0ea7 5@c Free Software Foundation, Inc.
3e01fd9d
RS
6@c See the file elisp.texi for copying conditions.
7@setfilename ../info/minibuf
3e099569 8@node Minibuffers, Command Loop, Read and Print, Top
3e01fd9d
RS
9@chapter Minibuffers
10@cindex arguments, reading
11@cindex complex arguments
12@cindex minibuffer
13
14 A @dfn{minibuffer} is a special buffer that Emacs commands use to read
15arguments more complicated than the single numeric prefix argument.
16These arguments include file names, buffer names, and command names (as
17in @kbd{M-x}). The minibuffer is displayed on the bottom line of the
969fe9b5
RS
18frame, in the same place as the echo area, but only while it is in use
19for reading an argument.
3e01fd9d
RS
20
21@menu
22* Intro to Minibuffers:: Basic information about minibuffers.
23* Text from Minibuffer:: How to read a straight text string.
24* Object from Minibuffer:: How to read a Lisp object or expression.
25* Minibuffer History:: Recording previous minibuffer inputs
26 so the user can reuse them.
79467ffe 27* Initial Input:: Specifying initial contents for the minibuffer.
3e01fd9d
RS
28* Completion:: How to invoke and customize completion.
29* Yes-or-No Queries:: Asking a question with a simple answer.
30* Multiple Queries:: Asking a series of similar questions.
e75ecfec 31* Reading a Password:: Reading a password from the terminal.
3e01fd9d
RS
32* Minibuffer Misc:: Various customization hooks and variables.
33@end menu
34
35@node Intro to Minibuffers
36@section Introduction to Minibuffers
37
38 In most ways, a minibuffer is a normal Emacs buffer. Most operations
39@emph{within} a buffer, such as editing commands, work normally in a
40minibuffer. However, many operations for managing buffers do not apply
41to minibuffers. The name of a minibuffer always has the form @w{@samp{
56bd69df 42*Minibuf-@var{number}*}}, and it cannot be changed. Minibuffers are
3e01fd9d 43displayed only in special windows used only for minibuffers; these
1911e6e5 44windows always appear at the bottom of a frame. (Sometimes frames have
3e01fd9d
RS
45no minibuffer window, and sometimes a special kind of frame contains
46nothing but a minibuffer window; see @ref{Minibuffers and Frames}.)
47
8241495d
RS
48 The text in the minibuffer always starts with the @dfn{prompt string},
49the text that was specified by the program that is using the minibuffer
50to tell the user what sort of input to type. This text is marked
2468d0c0
DL
51read-only so you won't accidentally delete or change it. It is also
52marked as a field (@pxref{Fields}), so that certain motion functions,
53including @code{beginning-of-line}, @code{forward-word},
54@code{forward-sentence}, and @code{forward-paragraph}, stop at the
55boundary between the prompt and the actual text. (In older Emacs
56versions, the prompt was displayed using a special mechanism and was not
57part of the buffer contents.)
58
8241495d
RS
59 The minibuffer's window is normally a single line; it grows
60automatically if necessary if the contents require more space. You can
61explicitly resize it temporarily with the window sizing commands; it
62reverts to its normal size when the minibuffer is exited. You can
63resize it permanently by using the window sizing commands in the frame's
64other window, when the minibuffer is not active. If the frame contains
65just a minibuffer, you can change the minibuffer's size by changing the
66frame's size.
3e01fd9d 67
f460db36
RS
68 Use of the minibuffer reads input events, and that alters the values
69of variables such as @code{this-command} and @code{last-command}
70(@pxref{Command Loop Info}). Your program should bind them around the
71code that uses the minibuffer, if you do not want that to change them.
72
3e01fd9d
RS
73 If a command uses a minibuffer while there is an active minibuffer,
74this is called a @dfn{recursive minibuffer}. The first minibuffer is
75named @w{@samp{ *Minibuf-0*}}. Recursive minibuffers are named by
76incrementing the number at the end of the name. (The names begin with a
77space so that they won't show up in normal buffer lists.) Of several
78recursive minibuffers, the innermost (or most recently entered) is the
79active minibuffer. We usually call this ``the'' minibuffer. You can
80permit or forbid recursive minibuffers by setting the variable
81@code{enable-recursive-minibuffers} or by putting properties of that
82name on command symbols (@pxref{Minibuffer Misc}).
83
84 Like other buffers, a minibuffer may use any of several local keymaps
85(@pxref{Keymaps}); these contain various exit commands and in some cases
bfe721d1 86completion commands (@pxref{Completion}).
3e01fd9d
RS
87
88@itemize @bullet
89@item
90@code{minibuffer-local-map} is for ordinary input (no completion).
91
92@item
93@code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
4ff1926e 94just like @key{RET}.
3e01fd9d
RS
95
96@item
97@code{minibuffer-local-completion-map} is for permissive completion.
98
99@item
100@code{minibuffer-local-must-match-map} is for strict completion and
101for cautious completion.
102@end itemize
103
2468d0c0
DL
104 When Emacs is running in batch mode, any request to read from the
105minibuffer actually reads a line from the standard input descriptor that
106was supplied when Emacs was started.
107
3e01fd9d
RS
108@node Text from Minibuffer
109@section Reading Text Strings with the Minibuffer
110
793da230
RS
111 Most often, the minibuffer is used to read text as a string. It can
112also be used to read a Lisp object in textual form. The most basic
113primitive for minibuffer input is @code{read-from-minibuffer}; it can do
e37d6e4c
RS
114either one. There are also specialized commands for reading
115commands, variables, file names, etc. (@pxref{Completion}).
3e01fd9d 116
bfe721d1
KH
117 In most cases, you should not call minibuffer input functions in the
118middle of a Lisp function. Instead, do all minibuffer input as part of
a9f0a989
RS
119reading the arguments for a command, in the @code{interactive}
120specification. @xref{Defining Commands}.
bfe721d1 121
4d19f455 122@defun read-from-minibuffer prompt-string &optional initial-contents keymap read hist default inherit-input-method keep-all
3e01fd9d
RS
123This function is the most general way to get input through the
124minibuffer. By default, it accepts arbitrary text and returns it as a
125string; however, if @var{read} is non-@code{nil}, then it uses
126@code{read} to convert the text into a Lisp object (@pxref{Input
127Functions}).
128
969fe9b5 129The first thing this function does is to activate a minibuffer and
3e01fd9d 130display it with @var{prompt-string} as the prompt. This value must be a
969fe9b5 131string. Then the user can edit text in the minibuffer.
3e01fd9d 132
969fe9b5
RS
133When the user types a command to exit the minibuffer,
134@code{read-from-minibuffer} constructs the return value from the text in
135the minibuffer. Normally it returns a string containing that text.
136However, if @var{read} is non-@code{nil}, @code{read-from-minibuffer}
137reads the text and returns the resulting Lisp object, unevaluated.
138(@xref{Input Functions}, for information about reading.)
f9f59935 139
969fe9b5 140The argument @var{default} specifies a default value to make available
4b574f3d
LT
141through the history commands. It should be a string, or @code{nil}.
142If non-@code{nil}, the user can access it using
143@code{next-history-element}, usually bound in the minibuffer to
144@kbd{M-n}. If @var{read} is non-@code{nil}, then @var{default} is
145also used as the input to @code{read}, if the user enters empty input.
146(If @var{read} is non-@code{nil} and @var{default} is @code{nil}, empty
147input results in an @code{end-of-file} error.) However, in the usual
148case (where @var{read} is @code{nil}), @code{read-from-minibuffer}
149ignores @var{default} when the user enters empty input and returns an
150empty string, @code{""}. In this respect, it is different from all
151the other minibuffer input functions in this chapter.
3e01fd9d
RS
152
153If @var{keymap} is non-@code{nil}, that keymap is the local keymap to
154use in the minibuffer. If @var{keymap} is omitted or @code{nil}, the
155value of @code{minibuffer-local-map} is used as the keymap. Specifying
156a keymap is the most important way to customize the minibuffer for
157various applications such as completion.
158
159The argument @var{hist} specifies which history list variable to use
160for saving the input and for history commands used in the minibuffer.
161It defaults to @code{minibuffer-history}. @xref{Minibuffer History}.
162
f9f59935
RS
163If the variable @code{minibuffer-allow-text-properties} is
164non-@code{nil}, then the string which is returned includes whatever text
165properties were present in the minibuffer. Otherwise all the text
166properties are stripped when the value is returned.
167
f9f59935 168If the argument @var{inherit-input-method} is non-@code{nil}, then the
1911e6e5
RS
169minibuffer inherits the current input method (@pxref{Input Methods}) and
170the setting of @code{enable-multibyte-characters} (@pxref{Text
171Representations}) from whichever buffer was current before entering the
172minibuffer.
969fe9b5 173
4d19f455
RS
174If @var{keep-all} is non-@code{nil}, even empty and duplicate inputs
175are added to the history list.
176
79467ffe
RS
177Use of @var{initial-contents} is mostly deprecated; we recommend using
178a non-@code{nil} value only in conjunction with specifying a cons cell
179for @var{hist}. @xref{Initial Input}.
3e01fd9d
RS
180@end defun
181
f9f59935 182@defun read-string prompt &optional initial history default inherit-input-method
3e01fd9d 183This function reads a string from the minibuffer and returns it. The
4b574f3d
LT
184arguments @var{prompt}, @var{initial}, @var{history} and
185@var{inherit-input-method} are used as in @code{read-from-minibuffer}.
186The keymap used is @code{minibuffer-local-map}.
3e01fd9d 187
4b574f3d
LT
188The optional argument @var{default} is used as in
189@code{read-from-minibuffer}, except that, if non-@code{nil}, it also
190specifies a default value to return if the user enters null input. As
191in @code{read-from-minibuffer} it should be a string, or @code{nil},
192which is equivalent to an empty string.
f9f59935
RS
193
194This function is a simplified interface to the
3e01fd9d
RS
195@code{read-from-minibuffer} function:
196
197@smallexample
198@group
f9f59935 199(read-string @var{prompt} @var{initial} @var{history} @var{default} @var{inherit})
3e01fd9d 200@equiv{}
969fe9b5
RS
201(let ((value
202 (read-from-minibuffer @var{prompt} @var{initial} nil nil
203 @var{history} @var{default} @var{inherit})))
4b574f3d 204 (if (and (equal value "") @var{default})
969fe9b5
RS
205 @var{default}
206 value))
3e01fd9d
RS
207@end group
208@end smallexample
209@end defun
210
f9f59935 211@defvar minibuffer-allow-text-properties
1911e6e5
RS
212If this variable is @code{nil}, then @code{read-from-minibuffer} strips
213all text properties from the minibuffer input before returning it.
4b574f3d
LT
214This variable also affects @code{read-string}. However,
215@code{read-no-blanks-input} (see below), as well as
216@code{read-minibuffer} and related functions (@pxref{Object from
217Minibuffer,, Reading Lisp Objects With the Minibuffer}), and all
218functions that do minibuffer input with completion, discard text
219properties unconditionally, regardless of the value of this variable.
f9f59935
RS
220@end defvar
221
3e01fd9d 222@defvar minibuffer-local-map
facf1bca 223@anchor{Definition of minibuffer-local-map}
3e01fd9d
RS
224This is the default local keymap for reading from the minibuffer. By
225default, it makes the following bindings:
226
227@table @asis
969fe9b5 228@item @kbd{C-j}
3e01fd9d
RS
229@code{exit-minibuffer}
230
231@item @key{RET}
232@code{exit-minibuffer}
233
234@item @kbd{C-g}
235@code{abort-recursive-edit}
236
237@item @kbd{M-n}
e37d6e4c 238@itemx @key{DOWN}
3e01fd9d
RS
239@code{next-history-element}
240
241@item @kbd{M-p}
e37d6e4c 242@itemx @key{UP}
3e01fd9d
RS
243@code{previous-history-element}
244
4b574f3d 245@item @kbd{M-s}
3e01fd9d
RS
246@code{next-matching-history-element}
247
4b574f3d 248@item @kbd{M-r}
3e01fd9d
RS
249@code{previous-matching-history-element}
250@end table
251@end defvar
252
253@c In version 18, initial is required
254@c Emacs 19 feature
f9f59935 255@defun read-no-blanks-input prompt &optional initial inherit-input-method
3e01fd9d
RS
256This function reads a string from the minibuffer, but does not allow
257whitespace characters as part of the input: instead, those characters
f9f59935
RS
258terminate the input. The arguments @var{prompt}, @var{initial}, and
259@var{inherit-input-method} are used as in @code{read-from-minibuffer}.
3e01fd9d
RS
260
261This is a simplified interface to the @code{read-from-minibuffer}
262function, and passes the value of the @code{minibuffer-local-ns-map}
263keymap as the @var{keymap} argument for that function. Since the keymap
264@code{minibuffer-local-ns-map} does not rebind @kbd{C-q}, it @emph{is}
265possible to put a space into the string, by quoting it.
266
4b574f3d
LT
267This function discards text properties, regardless of the value of
268@code{minibuffer-allow-text-properties}.
269
3e01fd9d
RS
270@smallexample
271@group
272(read-no-blanks-input @var{prompt} @var{initial})
273@equiv{}
4b574f3d
LT
274(let (minibuffer-allow-text-properties)
275 (read-from-minibuffer @var{prompt} @var{initial} minibuffer-local-ns-map))
3e01fd9d
RS
276@end group
277@end smallexample
278@end defun
279
280@defvar minibuffer-local-ns-map
281This built-in variable is the keymap used as the minibuffer local keymap
282in the function @code{read-no-blanks-input}. By default, it makes the
bfe721d1 283following bindings, in addition to those of @code{minibuffer-local-map}:
3e01fd9d
RS
284
285@table @asis
3e01fd9d
RS
286@item @key{SPC}
287@cindex @key{SPC} in minibuffer
288@code{exit-minibuffer}
289
290@item @key{TAB}
291@cindex @key{TAB} in minibuffer
292@code{exit-minibuffer}
293
3e01fd9d
RS
294@item @kbd{?}
295@cindex @kbd{?} in minibuffer
296@code{self-insert-and-exit}
3e01fd9d
RS
297@end table
298@end defvar
299
300@node Object from Minibuffer
301@section Reading Lisp Objects with the Minibuffer
302
303 This section describes functions for reading Lisp objects with the
304minibuffer.
305
306@defun read-minibuffer prompt &optional initial
f9f59935 307This function reads a Lisp object using the minibuffer, and returns it
3e01fd9d 308without evaluating it. The arguments @var{prompt} and @var{initial} are
793da230 309used as in @code{read-from-minibuffer}.
3e01fd9d 310
793da230 311This is a simplified interface to the
3e01fd9d
RS
312@code{read-from-minibuffer} function:
313
314@smallexample
315@group
316(read-minibuffer @var{prompt} @var{initial})
317@equiv{}
4b574f3d
LT
318(let (minibuffer-allow-text-properties)
319 (read-from-minibuffer @var{prompt} @var{initial} nil t))
3e01fd9d
RS
320@end group
321@end smallexample
322
323Here is an example in which we supply the string @code{"(testing)"} as
324initial input:
325
326@smallexample
327@group
328(read-minibuffer
329 "Enter an expression: " (format "%s" '(testing)))
330
331;; @r{Here is how the minibuffer is displayed:}
332@end group
333
334@group
335---------- Buffer: Minibuffer ----------
336Enter an expression: (testing)@point{}
337---------- Buffer: Minibuffer ----------
338@end group
339@end smallexample
340
341@noindent
342The user can type @key{RET} immediately to use the initial input as a
343default, or can edit the input.
344@end defun
345
346@defun eval-minibuffer prompt &optional initial
f9f59935
RS
347This function reads a Lisp expression using the minibuffer, evaluates
348it, then returns the result. The arguments @var{prompt} and
349@var{initial} are used as in @code{read-from-minibuffer}.
3e01fd9d 350
793da230 351This function simply evaluates the result of a call to
3e01fd9d
RS
352@code{read-minibuffer}:
353
354@smallexample
355@group
356(eval-minibuffer @var{prompt} @var{initial})
357@equiv{}
358(eval (read-minibuffer @var{prompt} @var{initial}))
359@end group
360@end smallexample
361@end defun
362
363@defun edit-and-eval-command prompt form
793da230 364This function reads a Lisp expression in the minibuffer, and then
3e01fd9d
RS
365evaluates it. The difference between this command and
366@code{eval-minibuffer} is that here the initial @var{form} is not
367optional and it is treated as a Lisp object to be converted to printed
368representation rather than as a string of text. It is printed with
369@code{prin1}, so if it is a string, double-quote characters (@samp{"})
370appear in the initial text. @xref{Output Functions}.
371
793da230 372The first thing @code{edit-and-eval-command} does is to activate the
3e01fd9d 373minibuffer with @var{prompt} as the prompt. Then it inserts the printed
f9f59935 374representation of @var{form} in the minibuffer, and lets the user edit it.
3e01fd9d
RS
375When the user exits the minibuffer, the edited text is read with
376@code{read} and then evaluated. The resulting value becomes the value
377of @code{edit-and-eval-command}.
378
793da230 379In the following example, we offer the user an expression with initial
3e01fd9d
RS
380text which is a valid form already:
381
382@smallexample
383@group
384(edit-and-eval-command "Please edit: " '(forward-word 1))
385
177c0ea7 386;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
387;; @r{the following appears in the minibuffer:}
388@end group
389
390@group
391---------- Buffer: Minibuffer ----------
392Please edit: (forward-word 1)@point{}
393---------- Buffer: Minibuffer ----------
394@end group
395@end smallexample
396
397@noindent
398Typing @key{RET} right away would exit the minibuffer and evaluate the
399expression, thus moving point forward one word.
400@code{edit-and-eval-command} returns @code{nil} in this example.
401@end defun
402
403@node Minibuffer History
404@section Minibuffer History
405@cindex minibuffer history
406@cindex history list
407
969fe9b5 408 A @dfn{minibuffer history list} records previous minibuffer inputs so
793da230
RS
409the user can reuse them conveniently. A history list is actually a
410symbol, not a list; it is a variable whose value is a list of strings
411(previous inputs), most recent first.
3e01fd9d 412
969fe9b5 413 There are many separate history lists, used for different kinds of
3e01fd9d
RS
414inputs. It's the Lisp programmer's job to specify the right history
415list for each use of the minibuffer.
416
969fe9b5 417 The basic minibuffer input functions @code{read-from-minibuffer} and
3e01fd9d
RS
418@code{completing-read} both accept an optional argument named @var{hist}
419which is how you specify the history list. Here are the possible
420values:
421
422@table @asis
423@item @var{variable}
424Use @var{variable} (a symbol) as the history list.
425
426@item (@var{variable} . @var{startpos})
427Use @var{variable} (a symbol) as the history list, and assume that the
4b574f3d
LT
428initial history position is @var{startpos} (a nonnegative integer).
429
430Specifying 0 for @var{startpos} is equivalent to just specifying the
431symbol @var{variable}. @code{previous-history-element} will display
432the most recent element of the history list in the minibuffer. If you
433specify a positive @var{startpos}, the minibuffer history functions
434behave as if @code{(elt @var{variable} (1- @var{STARTPOS}))} were the
79467ffe
RS
435history element currently shown in the minibuffer.
436
437For consistency, you should also specify that element of the history
438as the initial minibuffer contents, using the @var{initial} argument
439to the minibuffer input function (@pxref{Initial Input}).
3e01fd9d
RS
440@end table
441
969fe9b5 442 If you don't specify @var{hist}, then the default history list
3e01fd9d
RS
443@code{minibuffer-history} is used. For other standard history lists,
444see below. You can also create your own history list variable; just
445initialize it to @code{nil} before the first use.
446
969fe9b5 447 Both @code{read-from-minibuffer} and @code{completing-read} add new
3e01fd9d
RS
448elements to the history list automatically, and provide commands to
449allow the user to reuse items on the list. The only thing your program
450needs to do to use a history list is to initialize it and to pass its
451name to the input functions when you wish. But it is safe to modify the
452list by hand when the minibuffer input functions are not using it.
453
ff306b60
RS
454 Emacs functions that add a new element to a history list can also
455delete old elements if the list gets too long. The variable
456@code{history-length} specifies the maximum length for most history
457lists. To specify a different maximum length for a particular history
458list, put the length in the @code{history-length} property of the
fbb2f03d
JL
459history list symbol. The variable @code{history-delete-duplicates}
460specifies whether to delete duplicates in history.
ff306b60
RS
461
462@defvar history-length
463The value of this variable specifies the maximum length for all
464history lists that don't specify their own maximum lengths. If the
465value is @code{t}, that means there no maximum (don't delete old
466elements).
fbb2f03d
JL
467@end defvar
468
469@defvar history-delete-duplicates
470If the value of this variable is @code{t}, that means when adding a
471new history element, all previous identical elements are deleted.
ff306b60
RS
472@end defvar
473
969fe9b5
RS
474 Here are some of the standard minibuffer history list variables:
475
3e01fd9d
RS
476@defvar minibuffer-history
477The default history list for minibuffer history input.
478@end defvar
479
480@defvar query-replace-history
481A history list for arguments to @code{query-replace} (and similar
482arguments to other commands).
483@end defvar
484
485@defvar file-name-history
a9f0a989
RS
486A history list for file-name arguments.
487@end defvar
488
489@defvar buffer-name-history
a9f0a989 490A history list for buffer-name arguments.
3e01fd9d
RS
491@end defvar
492
493@defvar regexp-history
494A history list for regular expression arguments.
495@end defvar
496
497@defvar extended-command-history
498A history list for arguments that are names of extended commands.
499@end defvar
500
501@defvar shell-command-history
502A history list for arguments that are shell commands.
503@end defvar
504
505@defvar read-expression-history
506A history list for arguments that are Lisp expressions to evaluate.
507@end defvar
508
79467ffe
RS
509@node Initial Input
510@section Initial Input
511
512Several of the functions for minibuffer input have an argument called
513@var{initial} or @var{initial-contents}. This is a mostly-deprecated
514feature for specifiying that the minibuffer should start out with
515certain text, instead of empty as usual.
516
517If @var{initial} is a string, the minibuffer starts out containing the
518text of the string, with point at the end, when the user starts to
519edit the text. If the user simply types @key{RET} to exit the
520minibuffer, it will use the initial input string to determine the
521value to return.
522
523@strong{We discourage use of a non-@code{nil} value for
524@var{initial}}, because initial input is an intrusive interface.
525History lists and default values provide a much more convenient method
526to offer useful default inputs to the user.
527
528There is just one situation where you should specify a string for an
529@var{initial} argument. This is when you specify a cons cell for the
530@var{hist} or @var{history} argument. @xref{Minibuffer History}.
531
532@var{initial} can also be a cons cell of the form @code{(@var{string}
533. @var{position})}. This means to insert @var{string} in the
534minibuffer but put point at @var{position} within the string's text.
535
536As a historical accident, @var{position} was implemented
537inconsistently in different functions. In @code{completing-read},
538@var{position}'s value is interpreted as origin-zero; that is, a value
539of 0 means the beginning of the string, 1 means after the first
540character, etc. In @code{read-minibuffer}, and the other
541non-completion minibuffer input functions that support this argument,
5421 means the beginning of the string 2 means after the first character,
543etc.
544
545Use of a cons cell as the value for @var{initial} arguments is
546deprecated in user code.
facf1bca 547
3e01fd9d
RS
548@node Completion
549@section Completion
550@cindex completion
551
552 @dfn{Completion} is a feature that fills in the rest of a name
553starting from an abbreviation for it. Completion works by comparing the
554user's input against a list of valid names and determining how much of
555the name is determined uniquely by what the user has typed. For
556example, when you type @kbd{C-x b} (@code{switch-to-buffer}) and then
557type the first few letters of the name of the buffer to which you wish
558to switch, and then type @key{TAB} (@code{minibuffer-complete}), Emacs
559extends the name as far as it can.
560
561 Standard Emacs commands offer completion for names of symbols, files,
562buffers, and processes; with the functions in this section, you can
563implement completion for other kinds of names.
564
565 The @code{try-completion} function is the basic primitive for
566completion: it returns the longest determined completion of a given
567initial string, with a given set of strings to match against.
568
569 The function @code{completing-read} provides a higher-level interface
570for completion. A call to @code{completing-read} specifies how to
571determine the list of valid names. The function then activates the
572minibuffer with a local keymap that binds a few keys to commands useful
573for completion. Other functions provide convenient simple interfaces
574for reading certain kinds of names with completion.
575
576@menu
577* Basic Completion:: Low-level functions for completing strings.
578 (These are too low level to use the minibuffer.)
579* Minibuffer Completion:: Invoking the minibuffer with completion.
580* Completion Commands:: Minibuffer commands that do completion.
581* High-Level Completion:: Convenient special cases of completion
582 (reading buffer name, file name, etc.)
583* Reading File Names:: Using completion to read file names.
4ff1926e 584* Programmed Completion:: Writing your own completion-function.
3e01fd9d
RS
585@end menu
586
587@node Basic Completion
588@subsection Basic Completion Functions
589
7370e0a8
RS
590 The functions @code{try-completion}, @code{all-completions} and
591@code{test-completion} have nothing in themselves to do with
592minibuffers. We describe them in this chapter so as to keep them near
593the higher-level completion features that do use the minibuffer.
793da230 594
3e01fd9d
RS
595@defun try-completion string collection &optional predicate
596This function returns the longest common substring of all possible
597completions of @var{string} in @var{collection}. The value of
a41c174f
KS
598@var{collection} must be a list of strings or symbols, an alist, an
599obarray, a hash table, or a function that implements a virtual set of
600strings (see below).
3e01fd9d
RS
601
602Completion compares @var{string} against each of the permissible
603completions specified by @var{collection}; if the beginning of the
604permissible completion equals @var{string}, it matches. If no permissible
605completions match, @code{try-completion} returns @code{nil}. If only
606one permissible completion matches, and the match is exact, then
607@code{try-completion} returns @code{t}. Otherwise, the value is the
608longest initial sequence common to all the permissible completions that
609match.
610
611If @var{collection} is an alist (@pxref{Association Lists}), the
4b574f3d 612permissible completions are the elements of the alist that are either
a41c174f
KS
613strings, symbols, or conses whose @sc{car} is a string or symbol.
614Symbols are converted to strings using @code{symbol-name}.
615Other elements of the alist are ignored. (Remember that in Emacs Lisp,
616the elements of alists do not @emph{have} to be conses.) As all
617elements of the alist can be strings, this case actually includes
618lists of strings or symbols, even though we usually do not think of
619such lists as alists.
3e01fd9d
RS
620
621@cindex obarray in completion
622If @var{collection} is an obarray (@pxref{Creating Symbols}), the names
623of all symbols in the obarray form the set of permissible completions. The
624global variable @code{obarray} holds an obarray containing the names of
625all interned Lisp symbols.
626
627Note that the only valid way to make a new obarray is to create it
628empty and then add symbols to it one by one using @code{intern}.
629Also, you cannot intern a given symbol in more than one obarray.
630
4b574f3d
LT
631If @var{collection} is a hash table, then the keys that are strings
632are the possible completions. Other keys are ignored.
633
793da230
RS
634You can also use a symbol that is a function as @var{collection}. Then
635the function is solely responsible for performing completion;
3e01fd9d
RS
636@code{try-completion} returns whatever this function returns. The
637function is called with three arguments: @var{string}, @var{predicate}
638and @code{nil}. (The reason for the third argument is so that the same
639function can be used in @code{all-completions} and do the appropriate
640thing in either case.) @xref{Programmed Completion}.
641
7370e0a8 642If the argument @var{predicate} is non-@code{nil}, then it must be a
4b574f3d
LT
643function of one argument, unless @var{collection} is a hash table, in
644which case it should be a function of two arguments. It is used to
645test each possible match, and the match is accepted only if
646@var{predicate} returns non-@code{nil}. The argument given to
647@var{predicate} is either a string or a cons cell (the @sc{car} of
648which is a string) from the alist, or a symbol (@emph{not} a symbol
649name) from the obarray. If @var{collection} is a hash table,
650@var{predicate} is called with two arguments, the string key and the
651associated value.
652
653In addition, to be acceptable, a completion must also match all the
654regular expressions in @code{completion-regexp-list}. (Unless
655@var{collection} is a function, in which case that function has to
656handle @code{completion-regexp-list} itself.)
7370e0a8 657
3e01fd9d
RS
658In the first of the following examples, the string @samp{foo} is
659matched by three of the alist @sc{car}s. All of the matches begin with
660the characters @samp{fooba}, so that is the result. In the second
661example, there is only one possible match, and it is exact, so the value
662is @code{t}.
663
664@smallexample
665@group
177c0ea7 666(try-completion
3e01fd9d
RS
667 "foo"
668 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4)))
669 @result{} "fooba"
670@end group
671
672@group
673(try-completion "foo" '(("barfoo" 2) ("foo" 3)))
674 @result{} t
675@end group
676@end smallexample
677
678In the following example, numerous symbols begin with the characters
679@samp{forw}, and all of them begin with the word @samp{forward}. In
680most of the symbols, this is followed with a @samp{-}, but not in all,
681so no more than @samp{forward} can be completed.
682
683@smallexample
684@group
685(try-completion "forw" obarray)
686 @result{} "forward"
687@end group
688@end smallexample
689
690Finally, in the following example, only two of the three possible
691matches pass the predicate @code{test} (the string @samp{foobaz} is
692too short). Both of those begin with the string @samp{foobar}.
693
694@smallexample
695@group
177c0ea7 696(defun test (s)
3e01fd9d
RS
697 (> (length (car s)) 6))
698 @result{} test
699@end group
700@group
177c0ea7 701(try-completion
3e01fd9d 702 "foo"
177c0ea7 703 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
793da230 704 'test)
3e01fd9d
RS
705 @result{} "foobar"
706@end group
707@end smallexample
708@end defun
709
22697dac 710@defun all-completions string collection &optional predicate nospace
3e01fd9d 711This function returns a list of all possible completions of
4b574f3d
LT
712@var{string}. The arguments to this function (aside from
713@var{nospace}) are the same as those of @code{try-completion}. Also,
714this function uses @code{completion-regexp-list} in the same way that
715@code{try-completion} does. The optional argument @var{nospace} only
716matters if @var{string} is the empty string. In that case, if
717@var{nospace} is non-@code{nil}, completions that start with a space
718are ignored.
3e01fd9d
RS
719
720If @var{collection} is a function, it is called with three arguments:
721@var{string}, @var{predicate} and @code{t}; then @code{all-completions}
722returns whatever the function returns. @xref{Programmed Completion}.
723
724Here is an example, using the function @code{test} shown in the
725example for @code{try-completion}:
726
727@smallexample
728@group
177c0ea7 729(defun test (s)
3e01fd9d
RS
730 (> (length (car s)) 6))
731 @result{} test
732@end group
733
734@group
177c0ea7 735(all-completions
3e01fd9d
RS
736 "foo"
737 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
793da230 738 'test)
3e01fd9d
RS
739 @result{} ("foobar1" "foobar2")
740@end group
741@end smallexample
742@end defun
743
7370e0a8 744@defun test-completion string collection &optional predicate
facf1bca 745@anchor{Definition of test-completion}
7370e0a8
RS
746This function returns non-@code{nil} if @var{string} is a valid
747completion possibility specified by @var{collection} and
4b574f3d
LT
748@var{predicate}. The arguments are the same as in
749@code{try-completion}. For instance, if @var{collection} is a list of
750strings, this is true if @var{string} appears in the list and
751@var{predicate} is satisfied.
752
753@code{test-completion} uses @code{completion-regexp-list} in the same
754way that @code{try-completion} does.
755
756If @var{predicate} is non-@code{nil} and if @var{collection} contains
757several strings that are equal to each other, as determined by
758@code{compare-strings} according to @code{completion-ignore-case},
759then @var{predicate} should accept either all or none of them.
760Otherwise, the return value of @code{test-completion} is essentially
761unpredictable.
7370e0a8
RS
762
763If @var{collection} is a function, it is called with three arguments,
764the values @var{string}, @var{predicate} and @code{lambda}; whatever
765it returns, @code{test-completion} returns in turn.
766@end defun
767
3e01fd9d 768@defvar completion-ignore-case
7370e0a8
RS
769If the value of this variable is non-@code{nil}, Emacs does not
770consider case significant in completion.
3e01fd9d
RS
771@end defvar
772
4b574f3d
LT
773@defvar completion-regexp-list
774This is a list of regular expressions. The completion functions only
775consider a completion acceptable if it matches all regular expressions
776in this list, with @code{case-fold-search} (@pxref{Searching and Case})
777bound to the value of @code{completion-ignore-case}.
778@end defvar
779
4ff1926e
RS
780@defmac lazy-completion-table var fun &rest args
781This macro provides a way to initialize the variable @var{var} as a
7370e0a8
RS
782collection for completion in a lazy way, not computing its actual
783contents until they are first needed. You use this macro to produce a
784value that you store in @var{var}. The actual computation of the
785proper value is done the first time you do completion using @var{var}.
786It is done by calling @var{fun} with the arguments @var{args}. The
787value @var{fun} returns becomes the permanent value of @var{var}.
788
789Here are two examples of use:
4ff1926e
RS
790
791@example
792(defvar foo (lazy-completion-table foo make-my-alist 'global))
7370e0a8 793
4ff1926e
RS
794(make-local-variable 'bar)
795(setq bar (lazy-completion-table foo make-my-alist 'local)
796@end example
797@end defmac
798
3e01fd9d
RS
799@node Minibuffer Completion
800@subsection Completion and the Minibuffer
801
802 This section describes the basic interface for reading from the
803minibuffer with completion.
804
f9f59935 805@defun completing-read prompt collection &optional predicate require-match initial hist default inherit-input-method
3e01fd9d
RS
806This function reads a string in the minibuffer, assisting the user by
807providing completion. It activates the minibuffer with prompt
969fe9b5 808@var{prompt}, which must be a string.
3e01fd9d
RS
809
810The actual completion is done by passing @var{collection} and
4b574f3d
LT
811@var{predicate} to the function @code{try-completion}. This happens
812in certain commands bound in the local keymaps used for completion.
813Some of these commands also call @code{test-completion}. Thus, if
814@var{predicate} is non-@code{nil}, it should be compatible with
815@var{collection} and @code{completion-ignore-case}. @xref{Definition
816of test-completion}.
3e01fd9d 817
f9f59935
RS
818If @var{require-match} is @code{nil}, the exit commands work regardless
819of the input in the minibuffer. If @var{require-match} is @code{t}, the
820usual minibuffer exit commands won't exit unless the input completes to
821an element of @var{collection}. If @var{require-match} is neither
822@code{nil} nor @code{t}, then the exit commands won't exit unless the
823input already in the buffer matches an element of @var{collection}.
824
825However, empty input is always permitted, regardless of the value of
826@var{require-match}; in that case, @code{completing-read} returns
4b574f3d
LT
827@var{default}, or @code{""}, if @var{default} is @code{nil}. The
828value of @var{default} (if non-@code{nil}) is also available to the
829user through the history commands.
830
831The function @code{completing-read} uses
832@code{minibuffer-local-completion-map} as the keymap if
833@var{require-match} is @code{nil}, and uses
3e01fd9d 834@code{minibuffer-local-must-match-map} if @var{require-match} is
793da230 835non-@code{nil}. @xref{Completion Commands}.
3e01fd9d
RS
836
837The argument @var{hist} specifies which history list variable to use for
838saving the input and for minibuffer history commands. It defaults to
839@code{minibuffer-history}. @xref{Minibuffer History}.
840
79467ffe
RS
841The argument @var{initial} is mostly deprecated; we recommend using a
842non-@code{nil} value only in conjunction with specifying a cons cell
843for @var{hist}. @xref{Initial Input}. For default input, use
844@var{default} instead.
70c750c0 845
f9f59935 846If the argument @var{inherit-input-method} is non-@code{nil}, then the
1911e6e5 847minibuffer inherits the current input method (@pxref{Input
a9f0a989
RS
848Methods}) and the setting of @code{enable-multibyte-characters}
849(@pxref{Text Representations}) from whichever buffer was current before
850entering the minibuffer.
f9f59935 851
5d645852
RS
852If the built-in variable @code{completion-ignore-case} is
853non-@code{nil}, completion ignores case when comparing the input
854against the possible matches. @xref{Basic Completion}. In this mode
855of operation, @var{predicate} must also ignore case, or you will get
856surprising results.
3e01fd9d
RS
857
858Here's an example of using @code{completing-read}:
859
860@smallexample
861@group
862(completing-read
863 "Complete a foo: "
864 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
865 nil t "fo")
866@end group
867
868@group
177c0ea7 869;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
870;; @r{the following appears in the minibuffer:}
871
872---------- Buffer: Minibuffer ----------
873Complete a foo: fo@point{}
874---------- Buffer: Minibuffer ----------
875@end group
876@end smallexample
877
878@noindent
879If the user then types @kbd{@key{DEL} @key{DEL} b @key{RET}},
880@code{completing-read} returns @code{barfoo}.
881
882The @code{completing-read} function binds three variables to pass
793da230
RS
883information to the commands that actually do completion. These
884variables are @code{minibuffer-completion-table},
885@code{minibuffer-completion-predicate} and
886@code{minibuffer-completion-confirm}. For more information about them,
887see @ref{Completion Commands}.
3e01fd9d
RS
888@end defun
889
890@node Completion Commands
8241495d 891@subsection Minibuffer Commands that Do Completion
3e01fd9d 892
4b574f3d
LT
893 This section describes the keymaps, commands and user options used
894in the minibuffer to do completion. The description refers to the
6f6b0433 895situation when Partial Completion mode is disabled (as it is by
4b574f3d 896default). When enabled, this minor mode uses its own alternatives to
1b91d47f
LT
897some of the commands described below. @xref{Completion Options,,,
898emacs, The GNU Emacs Manual}, for a short description of Partial
899Completion mode.
3e01fd9d
RS
900
901@defvar minibuffer-local-completion-map
793da230 902@code{completing-read} uses this value as the local keymap when an
3e01fd9d
RS
903exact match of one of the completions is not required. By default, this
904keymap makes the following bindings:
905
906@table @asis
907@item @kbd{?}
908@code{minibuffer-completion-help}
909
910@item @key{SPC}
911@code{minibuffer-complete-word}
912
913@item @key{TAB}
914@code{minibuffer-complete}
915@end table
916
917@noindent
793da230 918with other characters bound as in @code{minibuffer-local-map}
4b574f3d 919(@pxref{Definition of minibuffer-local-map}).
3e01fd9d
RS
920@end defvar
921
922@defvar minibuffer-local-must-match-map
923@code{completing-read} uses this value as the local keymap when an
924exact match of one of the completions is required. Therefore, no keys
793da230 925are bound to @code{exit-minibuffer}, the command that exits the
3e01fd9d
RS
926minibuffer unconditionally. By default, this keymap makes the following
927bindings:
928
929@table @asis
930@item @kbd{?}
931@code{minibuffer-completion-help}
932
933@item @key{SPC}
934@code{minibuffer-complete-word}
935
936@item @key{TAB}
937@code{minibuffer-complete}
938
969fe9b5 939@item @kbd{C-j}
3e01fd9d
RS
940@code{minibuffer-complete-and-exit}
941
942@item @key{RET}
943@code{minibuffer-complete-and-exit}
944@end table
945
946@noindent
947with other characters bound as in @code{minibuffer-local-map}.
948@end defvar
949
950@defvar minibuffer-completion-table
4b574f3d
LT
951The value of this variable is the collection used for completion in
952the minibuffer. This is the global variable that contains what
3e01fd9d
RS
953@code{completing-read} passes to @code{try-completion}. It is used by
954minibuffer completion commands such as @code{minibuffer-complete-word}.
955@end defvar
956
957@defvar minibuffer-completion-predicate
958This variable's value is the predicate that @code{completing-read}
959passes to @code{try-completion}. The variable is also used by the other
960minibuffer completion functions.
961@end defvar
962
963@deffn Command minibuffer-complete-word
964This function completes the minibuffer contents by at most a single
965word. Even if the minibuffer contents have only one completion,
966@code{minibuffer-complete-word} does not add any characters beyond the
967first character that is not a word constituent. @xref{Syntax Tables}.
968@end deffn
969
970@deffn Command minibuffer-complete
971This function completes the minibuffer contents as far as possible.
972@end deffn
973
974@deffn Command minibuffer-complete-and-exit
975This function completes the minibuffer contents, and exits if
976confirmation is not required, i.e., if
2770e862 977@code{minibuffer-completion-confirm} is @code{nil}. If confirmation
793da230
RS
978@emph{is} required, it is given by repeating this command
979immediately---the command is programmed to work without confirmation
980when run twice in succession.
3e01fd9d
RS
981@end deffn
982
983@defvar minibuffer-completion-confirm
984When the value of this variable is non-@code{nil}, Emacs asks for
985confirmation of a completion before exiting the minibuffer. The
986function @code{minibuffer-complete-and-exit} checks the value of this
987variable before it exits.
988@end defvar
989
990@deffn Command minibuffer-completion-help
991This function creates a list of the possible completions of the
992current minibuffer contents. It works by calling @code{all-completions}
993using the value of the variable @code{minibuffer-completion-table} as
994the @var{collection} argument, and the value of
995@code{minibuffer-completion-predicate} as the @var{predicate} argument.
996The list of completions is displayed as text in a buffer named
997@samp{*Completions*}.
998@end deffn
999
1000@defun display-completion-list completions
1001This function displays @var{completions} to the stream in
3e099569 1002@code{standard-output}, usually a buffer. (@xref{Read and Print}, for more
3e01fd9d
RS
1003information about streams.) The argument @var{completions} is normally
1004a list of completions just returned by @code{all-completions}, but it
1005does not have to be. Each element may be a symbol or a string, either
4b574f3d
LT
1006of which is simply printed. It can also be a list of two strings,
1007which is printed as if the strings were concatenated. The first of
1008the two strings is the actual completion, the second string serves as
1009annotation.
3e01fd9d
RS
1010
1011This function is called by @code{minibuffer-completion-help}. The
1012most common way to use it is together with
1013@code{with-output-to-temp-buffer}, like this:
1014
1015@example
1016(with-output-to-temp-buffer "*Completions*"
1017 (display-completion-list
1018 (all-completions (buffer-string) my-alist)))
1019@end example
1020@end defun
1021
1022@defopt completion-auto-help
1023If this variable is non-@code{nil}, the completion commands
1024automatically display a list of possible completions whenever nothing
1025can be completed because the next character is not uniquely determined.
1026@end defopt
1027
1028@node High-Level Completion
1029@subsection High-Level Completion Functions
1030
1031 This section describes the higher-level convenient functions for
1032reading certain sorts of names with completion.
1033
bfe721d1
KH
1034 In most cases, you should not call these functions in the middle of a
1035Lisp function. When possible, do all minibuffer input as part of
a9f0a989
RS
1036reading the arguments for a command, in the @code{interactive}
1037specification. @xref{Defining Commands}.
bfe721d1 1038
3e01fd9d
RS
1039@defun read-buffer prompt &optional default existing
1040This function reads the name of a buffer and returns it as a string.
1041The argument @var{default} is the default name to use, the value to
1042return if the user exits with an empty minibuffer. If non-@code{nil},
1043it should be a string or a buffer. It is mentioned in the prompt, but
1044is not inserted in the minibuffer as initial input.
1045
1046If @var{existing} is non-@code{nil}, then the name specified must be
793da230
RS
1047that of an existing buffer. The usual commands to exit the minibuffer
1048do not exit if the text is not valid, and @key{RET} does completion to
4b574f3d
LT
1049attempt to find a valid name. If @var{existing} is neither @code{nil}
1050nor @code{t}, confirmation is required after completion. (However,
1051@var{default} is not checked for validity; it is returned, whatever it
1052is, if the user exits with the minibuffer empty.)
3e01fd9d
RS
1053
1054In the following example, the user enters @samp{minibuffer.t}, and
1055then types @key{RET}. The argument @var{existing} is @code{t}, and the
1056only buffer name starting with the given input is
1057@samp{minibuffer.texi}, so that name is the value.
1058
1059@example
1060(read-buffer "Buffer name? " "foo" t)
1061@group
177c0ea7 1062;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
1063;; @r{the following prompt appears,}
1064;; @r{with an empty minibuffer:}
1065@end group
1066
1067@group
1068---------- Buffer: Minibuffer ----------
1069Buffer name? (default foo) @point{}
1070---------- Buffer: Minibuffer ----------
1071@end group
1072
1073@group
1074;; @r{The user types @kbd{minibuffer.t @key{RET}}.}
1075 @result{} "minibuffer.texi"
1076@end group
1077@end example
1078@end defun
1079
f9f59935
RS
1080@defvar read-buffer-function
1081This variable specifies how to read buffer names. For example, if you
1082set this variable to @code{iswitchb-read-buffer}, all Emacs commands
1083that call @code{read-buffer} to read a buffer name will actually use the
1084@code{iswitchb} package to read it.
1085@end defvar
1086
1087@defun read-command prompt &optional default
3e01fd9d
RS
1088This function reads the name of a command and returns it as a Lisp
1089symbol. The argument @var{prompt} is used as in
1090@code{read-from-minibuffer}. Recall that a command is anything for
1091which @code{commandp} returns @code{t}, and a command name is a symbol
1092for which @code{commandp} returns @code{t}. @xref{Interactive Call}.
1093
f9f59935 1094The argument @var{default} specifies what to return if the user enters
969fe9b5
RS
1095null input. It can be a symbol or a string; if it is a string,
1096@code{read-command} interns it before returning it. If @var{default} is
1097@code{nil}, that means no default has been specified; then if the user
4b574f3d
LT
1098enters null input, the return value is @code{(intern "")}, that is, a
1099symbol whose name is an empty string.
f9f59935 1100
3e01fd9d
RS
1101@example
1102(read-command "Command name? ")
1103
1104@group
177c0ea7 1105;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
1106;; @r{the following prompt appears with an empty minibuffer:}
1107@end group
1108
1109@group
177c0ea7
JB
1110---------- Buffer: Minibuffer ----------
1111Command name?
3e01fd9d
RS
1112---------- Buffer: Minibuffer ----------
1113@end group
1114@end example
1115
1116@noindent
1117If the user types @kbd{forward-c @key{RET}}, then this function returns
1118@code{forward-char}.
1119
9e2b495b
RS
1120The @code{read-command} function is a simplified interface to
1121@code{completing-read}. It uses the variable @code{obarray} so as to
1122complete in the set of extant Lisp symbols, and it uses the
3e01fd9d
RS
1123@code{commandp} predicate so as to accept only command names:
1124
1125@cindex @code{commandp} example
1126@example
1127@group
1128(read-command @var{prompt})
1129@equiv{}
177c0ea7 1130(intern (completing-read @var{prompt} obarray
3e01fd9d
RS
1131 'commandp t nil))
1132@end group
1133@end example
1134@end defun
1135
f9f59935 1136@defun read-variable prompt &optional default
bdb3097a 1137@anchor{Definition of read-variable}
3e01fd9d
RS
1138This function reads the name of a user variable and returns it as a
1139symbol.
1140
f9f59935 1141The argument @var{default} specifies what to return if the user enters
969fe9b5
RS
1142null input. It can be a symbol or a string; if it is a string,
1143@code{read-variable} interns it before returning it. If @var{default}
1144is @code{nil}, that means no default has been specified; then if the
4b574f3d 1145user enters null input, the return value is @code{(intern "")}.
f9f59935 1146
3e01fd9d
RS
1147@example
1148@group
1149(read-variable "Variable name? ")
1150
177c0ea7
JB
1151;; @r{After evaluation of the preceding expression,}
1152;; @r{the following prompt appears,}
3e01fd9d
RS
1153;; @r{with an empty minibuffer:}
1154@end group
1155
1156@group
1157---------- Buffer: Minibuffer ----------
1158Variable name? @point{}
1159---------- Buffer: Minibuffer ----------
1160@end group
1161@end example
1162
1163@noindent
1164If the user then types @kbd{fill-p @key{RET}}, @code{read-variable}
1165returns @code{fill-prefix}.
1166
1167This function is similar to @code{read-command}, but uses the
1168predicate @code{user-variable-p} instead of @code{commandp}:
1169
1170@cindex @code{user-variable-p} example
1171@example
1172@group
1173(read-variable @var{prompt})
1174@equiv{}
1175(intern
1176 (completing-read @var{prompt} obarray
1177 'user-variable-p t nil))
1178@end group
1179@end example
1180@end defun
1181
969fe9b5 1182 See also the functions @code{read-coding-system} and
1911e6e5 1183@code{read-non-nil-coding-system}, in @ref{User-Chosen Coding Systems}.
f9f59935 1184
3e01fd9d
RS
1185@node Reading File Names
1186@subsection Reading File Names
1187
1188 Here is another high-level completion function, designed for reading a
1189file name. It provides special features including automatic insertion
1190of the default directory.
1191
1c7cdff5 1192@defun read-file-name prompt &optional directory default existing initial predicate
3e01fd9d 1193This function reads a file name in the minibuffer, prompting with
4b574f3d 1194@var{prompt} and providing completion.
3e01fd9d 1195
793da230
RS
1196If @var{existing} is non-@code{nil}, then the user must specify the name
1197of an existing file; @key{RET} performs completion to make the name
1198valid if possible, and then refuses to exit if it is not valid. If the
1199value of @var{existing} is neither @code{nil} nor @code{t}, then
1200@key{RET} also requires confirmation after completion. If
1201@var{existing} is @code{nil}, then the name of a nonexistent file is
1202acceptable.
3e01fd9d
RS
1203
1204The argument @var{directory} specifies the directory to use for
4b574f3d
LT
1205completion of relative file names. It should be an absolute directory
1206name. If @code{insert-default-directory} is non-@code{nil},
1207@var{directory} is also inserted in the minibuffer as initial input.
1208It defaults to the current buffer's value of @code{default-directory}.
3e01fd9d
RS
1209
1210@c Emacs 19 feature
6142d1d0
RS
1211If you specify @var{initial}, that is an initial file name to insert
1212in the buffer (after @var{directory}, if that is inserted). In this
793da230
RS
1213case, point goes at the beginning of @var{initial}. The default for
1214@var{initial} is @code{nil}---don't insert any file name. To see what
6142d1d0
RS
1215@var{initial} does, try the command @kbd{C-x C-v}. @strong{Please
1216note:} we recommend using @var{default} rather than @var{initial} in
1217most cases.
3e01fd9d 1218
4b574f3d
LT
1219If @var{default} is non-@code{nil}, then the function returns
1220@var{default} if the user exits the minibuffer with the same non-empty
1221contents that @code{read-file-name} inserted initially. The initial
1222minibuffer contents are always non-empty if
1223@code{insert-default-directory} is non-@code{nil}, as it is by
1224default. @var{default} is not checked for validity, regardless of the
1225value of @var{existing}. However, if @var{existing} is
1226non-@code{nil}, the initial minibuffer contents should be a valid file
1227(or directory) name. Otherwise @code{read-file-name} attempts
1228completion if the user exits without any editing, and does not return
1229@var{default}. @var{default} is also available through the history
1230commands.
1231
1232If @var{default} is @code{nil}, @code{read-file-name} tries to find a
1233substitute default to use in its place, which it treats in exactly the
1234same way as if it had been specified explicitly. If @var{default} is
1235@code{nil}, but @var{initial} is non-@code{nil}, then the default is
1236the absolute file name obtained from @var{directory} and
1237@var{initial}. If both @var{default} and @var{initial} are @code{nil}
1238and the buffer is visiting a file, @code{read-file-name} uses the
1239absolute file name of that file as default. If the buffer is not
1240visiting a file, then there is no default. In that case, if the user
1241types @key{RET} without any editing, @code{read-file-name} simply
1242returns the pre-inserted contents of the minibuffer.
1243
1244If the user types @key{RET} in an empty minibuffer, this function
1245returns an empty string, regardless of the value of @var{existing}.
1246This is, for instance, how the user can make the current buffer visit
1247no file using @code{M-x set-visited-file-name}.
1248
1c7cdff5
RS
1249If @var{predicate} is non-@code{nil}, it specifies a function of one
1250argument that decides which file names are acceptable completion
1251possibilities. A file name is an acceptable value if @var{predicate}
1252returns non-@code{nil} for it.
1253
4b574f3d
LT
1254@code{read-file-name} does not automatically expand file names. You
1255must call @code{expand-file-name} yourself if an absolute file name is
1256required.
1257
177c0ea7 1258Here is an example:
3e01fd9d
RS
1259
1260@example
1261@group
1262(read-file-name "The file is ")
1263
177c0ea7 1264;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
1265;; @r{the following appears in the minibuffer:}
1266@end group
1267
1268@group
1269---------- Buffer: Minibuffer ----------
1270The file is /gp/gnu/elisp/@point{}
1271---------- Buffer: Minibuffer ----------
1272@end group
1273@end example
1274
1275@noindent
1276Typing @kbd{manual @key{TAB}} results in the following:
1277
1278@example
1279@group
1280---------- Buffer: Minibuffer ----------
1281The file is /gp/gnu/elisp/manual.texi@point{}
1282---------- Buffer: Minibuffer ----------
1283@end group
1284@end example
1285
1286@c Wordy to avoid overfull hbox in smallbook mode.
1287@noindent
1288If the user types @key{RET}, @code{read-file-name} returns the file name
1289as the string @code{"/gp/gnu/elisp/manual.texi"}.
1290@end defun
1291
af300e69
RS
1292@defvar read-file-name-function
1293If non-@code{nil}, this should be a function that accepts the same
1294arguments as @code{read-file-name}. When @code{read-file-name} is
1295called, it calls this function with the supplied arguments instead of
1296doing its usual work.
1297@end defvar
1298
835da4ee
RS
1299@defvar read-file-name-completion-ignore-case
1300If this variable is non-@code{nil}, @code{read-file-name} ignores case
1301when performing completion.
1302@end defvar
1303
1c7cdff5
RS
1304@defun read-directory-name prompt &optional directory default existing initial
1305This function is like @code{read-file-name} but allows only directory
1306names as completion possibilities.
4b574f3d
LT
1307
1308If @var{default} is @code{nil} and @var{initial} is non-@code{nil},
1309@code{read-directory-name} constructs a substitute default by
1310combining @var{directory} (or the current buffer's default directory
1311if @var{directory} is @code{nil}) and @var{initial}. If both
1312@var{default} and @var{initial} are @code{nil}, this function uses the
1313current buffer's default directory as substitute default, ignoring
1314@var{directory}.
1c7cdff5
RS
1315@end defun
1316
3e01fd9d 1317@defopt insert-default-directory
4b574f3d
LT
1318This variable is used by @code{read-file-name}, and thus, indirectly,
1319by most commands reading file names. (This includes all commands that
1320use the code letters @samp{f} or @samp{F} in their interactive form.
1321@xref{Interactive Codes,, Code Characters for interactive}.) Its
1322value controls whether @code{read-file-name} starts by placing the
1323name of the default directory in the minibuffer, plus the initial file
1324name if any. If the value of this variable is @code{nil}, then
1325@code{read-file-name} does not place any initial input in the
1326minibuffer (unless you specify initial input with the @var{initial}
1327argument). In that case, the default directory is still used for
1328completion of relative file names, but is not displayed.
1329
1330If this variable is @code{nil} and the initial minibuffer contents are
1331empty, the user may have to explicitly fetch the next history element
1332to access a default value. If the variable is non-@code{nil}, the
1333initial minibuffer contents are always non-empty and the user can
1334always request a default value by immediately typing @key{RET} in an
1335unedited minibuffer. (See above.)
3e01fd9d
RS
1336
1337For example:
1338
1339@example
1340@group
1341;; @r{Here the minibuffer starts out with the default directory.}
1342(let ((insert-default-directory t))
1343 (read-file-name "The file is "))
1344@end group
1345
1346@group
1347---------- Buffer: Minibuffer ----------
1348The file is ~lewis/manual/@point{}
1349---------- Buffer: Minibuffer ----------
1350@end group
1351
1352@group
1353;; @r{Here the minibuffer is empty and only the prompt}
1354;; @r{appears on its line.}
1355(let ((insert-default-directory nil))
1356 (read-file-name "The file is "))
1357@end group
1358
1359@group
1360---------- Buffer: Minibuffer ----------
1361The file is @point{}
1362---------- Buffer: Minibuffer ----------
1363@end group
1364@end example
1365@end defopt
1366
1367@node Programmed Completion
1368@subsection Programmed Completion
1369@cindex programmed completion
1370
1371 Sometimes it is not possible to create an alist or an obarray
1372containing all the intended possible completions. In such a case, you
1373can supply your own function to compute the completion of a given string.
1374This is called @dfn{programmed completion}.
1375
1376 To use this feature, pass a symbol with a function definition as the
793da230
RS
1377@var{collection} argument to @code{completing-read}. The function
1378@code{completing-read} arranges to pass your completion function along
1379to @code{try-completion} and @code{all-completions}, which will then let
1380your function do all the work.
3e01fd9d
RS
1381
1382 The completion function should accept three arguments:
1383
1384@itemize @bullet
1385@item
1386The string to be completed.
1387
1388@item
1389The predicate function to filter possible matches, or @code{nil} if
1390none. Your function should call the predicate for each possible match,
1391and ignore the possible match if the predicate returns @code{nil}.
1392
1393@item
1394A flag specifying the type of operation.
1395@end itemize
1396
1397 There are three flag values for three operations:
1398
1399@itemize @bullet
1400@item
1401@code{nil} specifies @code{try-completion}. The completion function
1402should return the completion of the specified string, or @code{t} if the
d595eca0
RS
1403string is a unique and exact match already, or @code{nil} if the string
1404matches no possibility.
1405
1406If the string is an exact match for one possibility, but also matches
969fe9b5 1407other longer possibilities, the function should return the string, not
d595eca0 1408@code{t}.
3e01fd9d
RS
1409
1410@item
1411@code{t} specifies @code{all-completions}. The completion function
1412should return a list of all possible completions of the specified
1413string.
1414
1415@item
7370e0a8 1416@code{lambda} specifies @code{test-completion}. The completion
3e01fd9d
RS
1417function should return @code{t} if the specified string is an exact
1418match for some possibility; @code{nil} otherwise.
1419@end itemize
1420
1421 It would be consistent and clean for completion functions to allow
bfe721d1 1422lambda expressions (lists that are functions) as well as function
3e01fd9d 1423symbols as @var{collection}, but this is impossible. Lists as
7370e0a8
RS
1424completion tables already have other meanings, and it would be
1425unreliable to treat one differently just because it is also a possible
1426function. So you must arrange for any function you wish to use for
1427completion to be encapsulated in a symbol.
3e01fd9d
RS
1428
1429 Emacs uses programmed completion when completing file names.
1430@xref{File Name Completion}.
1431
4ff1926e
RS
1432@defmac dynamic-completion-table function
1433This macro is a convenient way to write a function that can act as
1434programmed completion function. The argument @var{function} should be
1435a function that takes one argument, a string, and returns an alist of
1436possible completions of it. You can think of
1437@code{dynamic-completion-table} as a transducer between that interface
1438and the interface for programmed completion functions.
1439@end defmac
1440
3e01fd9d
RS
1441@node Yes-or-No Queries
1442@section Yes-or-No Queries
1443@cindex asking the user questions
1444@cindex querying the user
1445@cindex yes-or-no questions
1446
1447 This section describes functions used to ask the user a yes-or-no
1448question. The function @code{y-or-n-p} can be answered with a single
1449character; it is useful for questions where an inadvertent wrong answer
1450will not have serious consequences. @code{yes-or-no-p} is suitable for
1451more momentous questions, since it requires three or four characters to
1452answer.
1453
3e099569
RS
1454 If either of these functions is called in a command that was invoked
1455using the mouse---more precisely, if @code{last-nonmenu-event}
1456(@pxref{Command Loop Info}) is either @code{nil} or a list---then it
1457uses a dialog box or pop-up menu to ask the question. Otherwise, it
1458uses keyboard input. You can force use of the mouse or use of keyboard
1459input by binding @code{last-nonmenu-event} to a suitable value around
1460the call.
1461
3e01fd9d
RS
1462 Strictly speaking, @code{yes-or-no-p} uses the minibuffer and
1463@code{y-or-n-p} does not; but it seems best to describe them together.
1464
1465@defun y-or-n-p prompt
793da230 1466This function asks the user a question, expecting input in the echo
3e01fd9d
RS
1467area. It returns @code{t} if the user types @kbd{y}, @code{nil} if the
1468user types @kbd{n}. This function also accepts @key{SPC} to mean yes
1469and @key{DEL} to mean no. It accepts @kbd{C-]} to mean ``quit'', like
1470@kbd{C-g}, because the question might look like a minibuffer and for
1471that reason the user might try to use @kbd{C-]} to get out. The answer
1472is a single character, with no @key{RET} needed to terminate it. Upper
1473and lower case are equivalent.
1474
793da230 1475``Asking the question'' means printing @var{prompt} in the echo area,
3e01fd9d
RS
1476followed by the string @w{@samp{(y or n) }}. If the input is not one of
1477the expected answers (@kbd{y}, @kbd{n}, @kbd{@key{SPC}},
1478@kbd{@key{DEL}}, or something that quits), the function responds
1479@samp{Please answer y or n.}, and repeats the request.
1480
793da230 1481This function does not actually use the minibuffer, since it does not
3e01fd9d
RS
1482allow editing of the answer. It actually uses the echo area (@pxref{The
1483Echo Area}), which uses the same screen space as the minibuffer. The
1484cursor moves to the echo area while the question is being asked.
1485
793da230 1486The answers and their meanings, even @samp{y} and @samp{n}, are not
3e01fd9d
RS
1487hardwired. The keymap @code{query-replace-map} specifies them.
1488@xref{Search and Replace}.
1489
793da230 1490In the following example, the user first types @kbd{q}, which is
3e01fd9d
RS
1491invalid. At the next prompt the user types @kbd{y}.
1492
1493@smallexample
1494@group
1495(y-or-n-p "Do you need a lift? ")
1496
177c0ea7 1497;; @r{After evaluation of the preceding expression,}
3e01fd9d
RS
1498;; @r{the following prompt appears in the echo area:}
1499@end group
1500
1501@group
1502---------- Echo area ----------
177c0ea7 1503Do you need a lift? (y or n)
3e01fd9d
RS
1504---------- Echo area ----------
1505@end group
1506
1507;; @r{If the user then types @kbd{q}, the following appears:}
1508
1509@group
1510---------- Echo area ----------
177c0ea7 1511Please answer y or n. Do you need a lift? (y or n)
3e01fd9d
RS
1512---------- Echo area ----------
1513@end group
1514
1515;; @r{When the user types a valid answer,}
1516;; @r{it is displayed after the question:}
1517
1518@group
1519---------- Echo area ----------
1520Do you need a lift? (y or n) y
1521---------- Echo area ----------
1522@end group
1523@end smallexample
1524
1525@noindent
1526We show successive lines of echo area messages, but only one actually
1527appears on the screen at a time.
1528@end defun
1529
48a58303
RS
1530@defun y-or-n-p-with-timeout prompt seconds default-value
1531Like @code{y-or-n-p}, except that if the user fails to answer within
1532@var{seconds} seconds, this function stops waiting and returns
1533@var{default-value}. It works by setting up a timer; see @ref{Timers}.
1534The argument @var{seconds} may be an integer or a floating point number.
1535@end defun
1536
3e01fd9d 1537@defun yes-or-no-p prompt
793da230
RS
1538This function asks the user a question, expecting input in the
1539minibuffer. It returns @code{t} if the user enters @samp{yes},
1540@code{nil} if the user types @samp{no}. The user must type @key{RET} to
1541finalize the response. Upper and lower case are equivalent.
3e01fd9d 1542
793da230 1543@code{yes-or-no-p} starts by displaying @var{prompt} in the echo area,
3e01fd9d
RS
1544followed by @w{@samp{(yes or no) }}. The user must type one of the
1545expected responses; otherwise, the function responds @samp{Please answer
1546yes or no.}, waits about two seconds and repeats the request.
1547
793da230 1548@code{yes-or-no-p} requires more work from the user than
3e01fd9d
RS
1549@code{y-or-n-p} and is appropriate for more crucial decisions.
1550
3e01fd9d
RS
1551Here is an example:
1552
1553@smallexample
1554@group
1555(yes-or-no-p "Do you really want to remove everything? ")
1556
177c0ea7
JB
1557;; @r{After evaluation of the preceding expression,}
1558;; @r{the following prompt appears,}
3e01fd9d
RS
1559;; @r{with an empty minibuffer:}
1560@end group
1561
1562@group
1563---------- Buffer: minibuffer ----------
177c0ea7 1564Do you really want to remove everything? (yes or no)
3e01fd9d
RS
1565---------- Buffer: minibuffer ----------
1566@end group
1567@end smallexample
1568
1569@noindent
1570If the user first types @kbd{y @key{RET}}, which is invalid because this
1571function demands the entire word @samp{yes}, it responds by displaying
1572these prompts, with a brief pause between them:
1573
1574@smallexample
1575@group
1576---------- Buffer: minibuffer ----------
1577Please answer yes or no.
1578Do you really want to remove everything? (yes or no)
1579---------- Buffer: minibuffer ----------
1580@end group
1581@end smallexample
1582@end defun
1583
1584@node Multiple Queries
1585@section Asking Multiple Y-or-N Questions
1586
793da230
RS
1587 When you have a series of similar questions to ask, such as ``Do you
1588want to save this buffer'' for each buffer in turn, you should use
1589@code{map-y-or-n-p} to ask the collection of questions, rather than
1590asking each question individually. This gives the user certain
1591convenient facilities such as the ability to answer the whole series at
1592once.
1593
2468d0c0 1594@defun map-y-or-n-p prompter actor list &optional help action-alist no-cursor-in-echo-area
f9f59935
RS
1595This function asks the user a series of questions, reading a
1596single-character answer in the echo area for each one.
3e01fd9d
RS
1597
1598The value of @var{list} specifies the objects to ask questions about.
1599It should be either a list of objects or a generator function. If it is
1600a function, it should expect no arguments, and should return either the
1601next object to ask about, or @code{nil} meaning stop asking questions.
1602
1603The argument @var{prompter} specifies how to ask each question. If
1604@var{prompter} is a string, the question text is computed like this:
1605
1606@example
1607(format @var{prompter} @var{object})
1608@end example
1609
1610@noindent
1611where @var{object} is the next object to ask about (as obtained from
1612@var{list}).
1613
1614If not a string, @var{prompter} should be a function of one argument
63ff95ee
MW
1615(the next object to ask about) and should return the question text. If
1616the value is a string, that is the question to ask the user. The
1617function can also return @code{t} meaning do act on this object (and
1618don't ask the user), or @code{nil} meaning ignore this object (and don't
1619ask the user).
3e01fd9d
RS
1620
1621The argument @var{actor} says how to act on the answers that the user
1622gives. It should be a function of one argument, and it is called with
1623each object that the user says yes for. Its argument is always an
1624object obtained from @var{list}.
1625
1626If the argument @var{help} is given, it should be a list of this form:
1627
1628@example
1629(@var{singular} @var{plural} @var{action})
1630@end example
1631
1632@noindent
1633where @var{singular} is a string containing a singular noun that
1634describes the objects conceptually being acted on, @var{plural} is the
1635corresponding plural noun, and @var{action} is a transitive verb
1636describing what @var{actor} does.
1637
1638If you don't specify @var{help}, the default is @code{("object"
1639"objects" "act on")}.
1640
1641Each time a question is asked, the user may enter @kbd{y}, @kbd{Y}, or
1642@key{SPC} to act on that object; @kbd{n}, @kbd{N}, or @key{DEL} to skip
1643that object; @kbd{!} to act on all following objects; @key{ESC} or
1644@kbd{q} to exit (skip all following objects); @kbd{.} (period) to act on
1645the current object and then exit; or @kbd{C-h} to get help. These are
1646the same answers that @code{query-replace} accepts. The keymap
1647@code{query-replace-map} defines their meaning for @code{map-y-or-n-p}
1648as well as for @code{query-replace}; see @ref{Search and Replace}.
1649
1650You can use @var{action-alist} to specify additional possible answers
1651and what they mean. It is an alist of elements of the form
1652@code{(@var{char} @var{function} @var{help})}, each of which defines one
1653additional answer. In this element, @var{char} is a character (the
1654answer); @var{function} is a function of one argument (an object from
1655@var{list}); @var{help} is a string.
1656
1657When the user responds with @var{char}, @code{map-y-or-n-p} calls
1658@var{function}. If it returns non-@code{nil}, the object is considered
1659``acted upon'', and @code{map-y-or-n-p} advances to the next object in
1660@var{list}. If it returns @code{nil}, the prompt is repeated for the
1661same object.
1662
2468d0c0
DL
1663Normally, @code{map-y-or-n-p} binds @code{cursor-in-echo-area} while
1664prompting. But if @var{no-cursor-in-echo-area} is non-@code{nil}, it
1665does not do that.
1666
3e099569
RS
1667If @code{map-y-or-n-p} is called in a command that was invoked using the
1668mouse---more precisely, if @code{last-nonmenu-event} (@pxref{Command
1669Loop Info}) is either @code{nil} or a list---then it uses a dialog box
1670or pop-up menu to ask the question. In this case, it does not use
1671keyboard input or the echo area. You can force use of the mouse or use
1672of keyboard input by binding @code{last-nonmenu-event} to a suitable
1673value around the call.
1674
3e01fd9d
RS
1675The return value of @code{map-y-or-n-p} is the number of objects acted on.
1676@end defun
1677
e75ecfec
KH
1678@node Reading a Password
1679@section Reading a Password
1680@cindex passwords, reading
1681
1682 To read a password to pass to another program, you can use the
1683function @code{read-passwd}.
1684
e75ecfec
KH
1685@defun read-passwd prompt &optional confirm default
1686This function reads a password, prompting with @var{prompt}. It does
1687not echo the password as the user types it; instead, it echoes @samp{.}
1688for each character in the password.
1689
1690The optional argument @var{confirm}, if non-@code{nil}, says to read the
1691password twice and insist it must be the same both times. If it isn't
1692the same, the user has to type it over and over until the last two
1693times match.
1694
1695The optional argument @var{default} specifies the default password to
1696return if the user enters empty input. If @var{default} is @code{nil},
1697then @code{read-passwd} returns the null string in that case.
1698@end defun
1699
3e01fd9d 1700@node Minibuffer Misc
3e01fd9d
RS
1701@section Minibuffer Miscellany
1702
1703 This section describes some basic functions and variables related to
1704minibuffers.
1705
1706@deffn Command exit-minibuffer
1707This command exits the active minibuffer. It is normally bound to
1708keys in minibuffer local keymaps.
1709@end deffn
1710
1711@deffn Command self-insert-and-exit
1712This command exits the active minibuffer after inserting the last
1713character typed on the keyboard (found in @code{last-command-char};
1714@pxref{Command Loop Info}).
1715@end deffn
1716
1717@deffn Command previous-history-element n
1718This command replaces the minibuffer contents with the value of the
1719@var{n}th previous (older) history element.
1720@end deffn
1721
1722@deffn Command next-history-element n
1723This command replaces the minibuffer contents with the value of the
1724@var{n}th more recent history element.
1725@end deffn
1726
2468d0c0 1727@deffn Command previous-matching-history-element pattern n
3e01fd9d 1728This command replaces the minibuffer contents with the value of the
2468d0c0
DL
1729@var{n}th previous (older) history element that matches @var{pattern} (a
1730regular expression).
3e01fd9d
RS
1731@end deffn
1732
2468d0c0
DL
1733@deffn Command next-matching-history-element pattern n
1734This command replaces the minibuffer contents with the value of the
1735@var{n}th next (newer) history element that matches @var{pattern} (a
1736regular expression).
3e01fd9d
RS
1737@end deffn
1738
bfe721d1
KH
1739@defun minibuffer-prompt
1740This function returns the prompt string of the currently active
1741minibuffer. If no minibuffer is active, it returns @code{nil}.
1742@end defun
1743
2468d0c0 1744@defun minibuffer-prompt-end
b3b044f2 1745@tindex minibuffer-prompt-end
2a1cf636 1746This function returns the current
8241495d 1747position of the end of the minibuffer prompt, if a minibuffer is
b3b044f2
MB
1748current. Otherwise, it returns the minimum valid buffer position.
1749@end defun
1750
1751@defun minibuffer-contents
1752@tindex minibuffer-contents
2a1cf636 1753This function returns the editable
b3b044f2
MB
1754contents of the minibuffer (that is, everything except the prompt) as
1755a string, if a minibuffer is current. Otherwise, it returns the
1756entire contents of the current buffer.
1757@end defun
1758
1759@defun minibuffer-contents-no-properties
1760@tindex minibuffer-contents-no-properties
1761This is like @code{minibuffer-contents}, except that it does not copy text
1762properties, just the characters themselves. @xref{Text Properties}.
1763@end defun
1764
1765@defun delete-minibuffer-contents
1766@tindex delete-minibuffer-contents
2a1cf636 1767This function erases the editable
b3b044f2
MB
1768contents of the minibuffer (that is, everything except the prompt), if
1769a minibuffer is current. Otherwise, it erases the entire buffer.
8241495d
RS
1770@end defun
1771
42d9d13a 1772@defun minibuffer-prompt-width
8241495d
RS
1773This function returns the current display-width of the minibuffer
1774prompt, if a minibuffer is current. Otherwise, it returns zero.
bfe721d1
KH
1775@end defun
1776
3e01fd9d
RS
1777@defvar minibuffer-setup-hook
1778This is a normal hook that is run whenever the minibuffer is entered.
793da230
RS
1779@xref{Hooks}.
1780@end defvar
1781
612b4d5c 1782@defvar minibuffer-exit-hook
793da230
RS
1783This is a normal hook that is run whenever the minibuffer is exited.
1784@xref{Hooks}.
3e01fd9d
RS
1785@end defvar
1786
1787@defvar minibuffer-help-form
facf1bca 1788@anchor{Definition of minibuffer-help-form}
3e01fd9d
RS
1789The current value of this variable is used to rebind @code{help-form}
1790locally inside the minibuffer (@pxref{Help Functions}).
1791@end defvar
1792
4b574f3d
LT
1793@defun minibufferp &optional buffer-or-name
1794This function returns non-@code{nil} if @var{buffer-or-name} is a
1795minibuffer. If @var{buffer-or-name} is omitted, it tests the current
1796buffer.
7370e0a8
RS
1797@end defun
1798
22697dac
KH
1799@defun active-minibuffer-window
1800This function returns the currently active minibuffer window, or
1801@code{nil} if none is currently active.
1802@end defun
1803
3e01fd9d 1804@defun minibuffer-window &optional frame
b1895e73 1805@anchor{Definition of minibuffer-window}
22697dac
KH
1806This function returns the minibuffer window used for frame @var{frame}.
1807If @var{frame} is @code{nil}, that stands for the current frame. Note
1808that the minibuffer window used by a frame need not be part of that
1809frame---a frame that has no minibuffer of its own necessarily uses some
1810other frame's minibuffer window.
3e01fd9d
RS
1811@end defun
1812
41495ddd
RS
1813@defun set-minibuffer-window window
1814This function specifies @var{window} as the minibuffer window to use.
1815This affects where the minibuffer is displayed if you put text in it
1816without invoking the usual minibuffer commands. It has no effect on
1817the usual minibuffer input functions because they all start by
1818choosing the minibuffer window according to the current frame.
1819@end defun
1820
3e01fd9d 1821@c Emacs 19 feature
4b574f3d
LT
1822@defun window-minibuffer-p &optional window
1823This function returns non-@code{nil} if @var{window} is a minibuffer
1824window.
1825@var{window} defaults to the selected window.
3e01fd9d
RS
1826@end defun
1827
1828It is not correct to determine whether a given window is a minibuffer by
1829comparing it with the result of @code{(minibuffer-window)}, because
1830there can be more than one minibuffer window if there is more than one
1831frame.
1832
1833@defun minibuffer-window-active-p window
1834This function returns non-@code{nil} if @var{window}, assumed to be
1835a minibuffer window, is currently active.
1836@end defun
1837
1838@defvar minibuffer-scroll-window
f96bad52 1839@anchor{Definition of minibuffer-scroll-window}
3e01fd9d
RS
1840If the value of this variable is non-@code{nil}, it should be a window
1841object. When the function @code{scroll-other-window} is called in the
1842minibuffer, it scrolls this window.
1843@end defvar
1844
f460db36
RS
1845@defun minibuffer-selected-window
1846This function returns the window which was selected when the
1847minibuffer was entered. If selected window is not a minibuffer
1848window, it returns @code{nil}.
1849@end defun
1850
3e01fd9d
RS
1851Finally, some functions and variables deal with recursive minibuffers
1852(@pxref{Recursive Editing}):
1853
1854@defun minibuffer-depth
1855This function returns the current depth of activations of the
1856minibuffer, a nonnegative integer. If no minibuffers are active, it
1857returns zero.
1858@end defun
1859
1860@defopt enable-recursive-minibuffers
1861If this variable is non-@code{nil}, you can invoke commands (such as
969fe9b5
RS
1862@code{find-file}) that use minibuffers even while the minibuffer window
1863is active. Such invocation produces a recursive editing level for a new
3e01fd9d
RS
1864minibuffer. The outer-level minibuffer is invisible while you are
1865editing the inner one.
1866
969fe9b5
RS
1867If this variable is @code{nil}, you cannot invoke minibuffer
1868commands when the minibuffer window is active, not even if you switch to
1869another window to do it.
3e01fd9d
RS
1870@end defopt
1871
1872@c Emacs 19 feature
1873If a command name has a property @code{enable-recursive-minibuffers}
793da230 1874that is non-@code{nil}, then the command can use the minibuffer to read
4b574f3d
LT
1875arguments even if it is invoked from the minibuffer. A command can
1876also achieve this by binding @code{enable-recursive-minibuffers}
1877to @code{t} in the interactive declaration (@pxref{Using Interactive}).
1878The minibuffer command @code{next-matching-history-element} (normally
1879@kbd{M-s} in the minibuffer) does the latter.
9a191eba 1880
4b574f3d 1881@defun minibuffer-message string
9a191eba 1882This function displays @var{string} temporarily at the end of the
4b574f3d
LT
1883minibuffer text, for two seconds, or until the next input event
1884arrives, whichever comes first.
9a191eba 1885@end defun
ab5796a9
MB
1886
1887@ignore
1888 arch-tag: bba7f945-9078-477f-a2ce-18818a6e1218
1889@end ignore