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