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