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