]> code.delx.au - gnu-emacs/blob - doc/lispref/minibuf.texi
More small edits for doc/lispref/minibuf.texi
[gnu-emacs] / doc / lispref / minibuf.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990-1995, 1998-1999, 2001-2012
4 @c Free Software Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../../info/minibuf
7 @node Minibuffers, Command Loop, Read and Print, Top
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
14 read arguments more complicated than the single numeric prefix
15 argument. These arguments include file names, buffer names, and
16 command names (as in @kbd{M-x}). The minibuffer is displayed on the
17 bottom line of the frame, in the same place as the echo area
18 (@pxref{The Echo Area}), but only while it is in use for reading an
19 argument.
20
21 @menu
22 * Intro to Minibuffers:: Basic information about minibuffers.
23 * Text from Minibuffer:: How to read a straight text string.
24 * Object from Minibuffer:: How to read a Lisp object or expression.
25 * Minibuffer History:: Recording previous minibuffer inputs
26 so the user can reuse them.
27 * Initial Input:: Specifying initial contents for the minibuffer.
28 * Completion:: How to invoke and customize completion.
29 * Yes-or-No Queries:: Asking a question with a simple answer.
30 * Multiple Queries:: Asking a series of similar questions.
31 * Reading a Password:: Reading a password from the terminal.
32 * Minibuffer Commands:: Commands used as key bindings in minibuffers.
33 * Minibuffer Windows:: Operating on the special minibuffer windows.
34 * Minibuffer Contents:: How such commands access the minibuffer text.
35 * Recursive Mini:: Whether recursive entry to minibuffer is allowed.
36 * Minibuffer Misc:: Various customization hooks and variables.
37 @end menu
38
39 @node Intro to Minibuffers
40 @section Introduction to Minibuffers
41
42 In most ways, a minibuffer is a normal Emacs buffer. Most operations
43 @emph{within} a buffer, such as editing commands, work normally in a
44 minibuffer. However, many operations for managing buffers do not apply
45 to minibuffers. The name of a minibuffer always has the form @w{@samp{
46 *Minibuf-@var{number}*}}, and it cannot be changed. Minibuffers are
47 displayed only in special windows used only for minibuffers; these
48 windows always appear at the bottom of a frame. (Sometimes frames have
49 no minibuffer window, and sometimes a special kind of frame contains
50 nothing but a minibuffer window; see @ref{Minibuffers and Frames}.)
51
52 The text in the minibuffer always starts with the @dfn{prompt string},
53 the text that was specified by the program that is using the minibuffer
54 to tell the user what sort of input to type. This text is marked
55 read-only so you won't accidentally delete or change it. It is also
56 marked as a field (@pxref{Fields}), so that certain motion functions,
57 including @code{beginning-of-line}, @code{forward-word},
58 @code{forward-sentence}, and @code{forward-paragraph}, stop at the
59 boundary between the prompt and the actual text.
60
61 The minibuffer's window is normally a single line; it grows
62 automatically if the contents require more space. You can explicitly
63 @c FIXME? Works in 23.4, not 24.0.95. (Bug#11276)
64 resize it temporarily with the window sizing commands; it reverts to
65 its normal size when the minibuffer is exited. You can resize it
66 @c FIXME? Doesn't work in any version of Emacs?
67 permanently by using the window sizing commands in the frame's other
68 window, when the minibuffer is not active. If the frame contains just
69 a minibuffer, you can change the minibuffer's size by changing the
70 frame's size.
71
72 Use of the minibuffer reads input events, and that alters the values
73 of variables such as @code{this-command} and @code{last-command}
74 (@pxref{Command Loop Info}). Your program should bind them around the
75 code that uses the minibuffer, if you do not want that to change them.
76
77 Under some circumstances, a command can use a minibuffer even if
78 there is an active minibuffer; such a minibuffer is called a
79 @dfn{recursive minibuffer}. The first minibuffer is named
80 @w{@samp{ *Minibuf-1*}}. Recursive minibuffers are named by
81 incrementing the number at the end of the name. (The names begin with
82 a space so that they won't show up in normal buffer lists.) Of
83 several recursive minibuffers, the innermost (or most recently
84 entered) is the active minibuffer. We usually call this ``the''
85 minibuffer. You can permit or forbid recursive minibuffers by setting
86 the variable @code{enable-recursive-minibuffers}, or by putting
87 properties of that name on command symbols (@xref{Recursive Mini}.)
88
89 Like other buffers, a minibuffer uses a local keymap
90 (@pxref{Keymaps}) to specify special key bindings. The function that
91 invokes the minibuffer also sets up its local map according to the job
92 to be done. @xref{Text from Minibuffer}, for the non-completion
93 minibuffer local maps. @xref{Completion Commands}, for the minibuffer
94 local maps for completion.
95
96 @cindex inactive minibuffer
97 When a minibuffer is inactive, its major mode is
98 @code{minibuffer-inactive-mode}, with keymap
99 @code{minibuffer-inactive-mode-map}. This is only really useful if
100 the minibuffer is in a separate frame. @xref{Minibuffers and Frames}.
101
102 When Emacs is running in batch mode, any request to read from the
103 minibuffer actually reads a line from the standard input descriptor that
104 was supplied when Emacs was started.
105
106 @node Text from Minibuffer
107 @section Reading Text Strings with the Minibuffer
108
109 The most basic primitive for minibuffer input is
110 @code{read-from-minibuffer}, which can be used to read either a string
111 or a Lisp object in textual form. The function @code{read-regexp} is
112 used for reading regular expressions (@pxref{Regular Expressions}),
113 which are a special kind of string. There are also specialized
114 functions for reading commands, variables, file names, etc.@:
115 (@pxref{Completion}).
116
117 In most cases, you should not call minibuffer input functions in the
118 middle of a Lisp function. Instead, do all minibuffer input as part of
119 reading the arguments for a command, in the @code{interactive}
120 specification. @xref{Defining Commands}.
121
122 @defun read-from-minibuffer prompt &optional initial keymap read history default inherit-input-method
123 This function is the most general way to get input from the
124 minibuffer. By default, it accepts arbitrary text and returns it as a
125 string; however, if @var{read} is non-@code{nil}, then it uses
126 @code{read} to convert the text into a Lisp object (@pxref{Input
127 Functions}).
128
129 The first thing this function does is to activate a minibuffer and
130 display it with @var{prompt} (which must be a string) as the
131 prompt. Then the user can edit text in the minibuffer.
132
133 When the user types a command to exit the minibuffer,
134 @code{read-from-minibuffer} constructs the return value from the text in
135 the minibuffer. Normally it returns a string containing that text.
136 However, if @var{read} is non-@code{nil}, @code{read-from-minibuffer}
137 reads the text and returns the resulting Lisp object, unevaluated.
138 (@xref{Input Functions}, for information about reading.)
139
140 The argument @var{default} specifies default values to make available
141 through the history commands. It should be a string, a list of
142 strings, or @code{nil}. The string or strings become the minibuffer's
143 ``future history'', available to the user with @kbd{M-n}.
144
145 If @var{read} is non-@code{nil}, then @var{default} is also used
146 as the input to @code{read}, if the user enters empty input.
147 If @var{default} is a list of strings, the first string is used as the input.
148 If @var{default} is @code{nil}, empty input results in an @code{end-of-file} error.
149 However, in the usual case (where @var{read} is @code{nil}),
150 @code{read-from-minibuffer} ignores @var{default} when the user enters
151 empty input and returns an empty string, @code{""}. In this respect,
152 it differs from all the other minibuffer input functions in this chapter.
153
154 If @var{keymap} is non-@code{nil}, that keymap is the local keymap to
155 use in the minibuffer. If @var{keymap} is omitted or @code{nil}, the
156 value of @code{minibuffer-local-map} is used as the keymap. Specifying
157 a keymap is the most important way to customize the minibuffer for
158 various applications such as completion.
159
160 The argument @var{history} specifies a history list variable to use
161 for saving the input and for history commands used in the minibuffer.
162 It defaults to @code{minibuffer-history}. You can optionally specify
163 a starting position in the history list as well. @xref{Minibuffer History}.
164
165 If the variable @code{minibuffer-allow-text-properties} is
166 non-@code{nil}, then the string that is returned includes whatever text
167 properties were present in the minibuffer. Otherwise all the text
168 properties are stripped when the value is returned.
169
170 If the argument @var{inherit-input-method} is non-@code{nil}, then the
171 minibuffer inherits the current input method (@pxref{Input Methods}) and
172 the setting of @code{enable-multibyte-characters} (@pxref{Text
173 Representations}) from whichever buffer was current before entering the
174 minibuffer.
175
176 Use of @var{initial} is mostly deprecated; we recommend using
177 a non-@code{nil} value only in conjunction with specifying a cons cell
178 for @var{history}. @xref{Initial Input}.
179 @end defun
180
181 @defun read-string prompt &optional initial history default inherit-input-method
182 This function reads a string from the minibuffer and returns it. The
183 arguments @var{prompt}, @var{initial}, @var{history} and
184 @var{inherit-input-method} are used as in @code{read-from-minibuffer}.
185 The keymap used is @code{minibuffer-local-map}.
186
187 The optional argument @var{default} is used as in
188 @code{read-from-minibuffer}, except that, if non-@code{nil}, it also
189 specifies a default value to return if the user enters null input. As
190 in @code{read-from-minibuffer} it should be a string, a list of
191 strings, or @code{nil}, which is equivalent to an empty string. When
192 @var{default} is a string, that string is the default value. When it
193 is a list of strings, the first string is the default value. (All
194 these strings are available to the user in the ``future minibuffer
195 history''.)
196
197 This function works by calling the
198 @code{read-from-minibuffer} function:
199
200 @smallexample
201 @group
202 (read-string @var{prompt} @var{initial} @var{history} @var{default} @var{inherit})
203 @equiv{}
204 (let ((value
205 (read-from-minibuffer @var{prompt} @var{initial} nil nil
206 @var{history} @var{default} @var{inherit})))
207 (if (and (equal value "") @var{default})
208 (if (consp @var{default}) (car @var{default}) @var{default})
209 value))
210 @end group
211 @end smallexample
212 @end defun
213
214 @defun read-regexp prompt &optional default
215 This function reads a regular expression as a string from the
216 minibuffer and returns it. The argument @var{prompt} is used as in
217 @code{read-from-minibuffer}. The keymap used is
218 @code{minibuffer-local-map}, and @code{regexp-history} is used as the
219 history list (@pxref{Minibuffer History, regexp-history}).
220
221 The optional argument @var{default} specifies a default value to
222 return if the user enters null input; it should be a string, or
223 @code{nil}, which is equivalent to an empty string.
224
225 In addition, @code{read-regexp} collects a few useful candidates for
226 input and passes them to @code{read-from-minibuffer}, to make them
227 available to the user as the ``future minibuffer history list''
228 (@pxref{Minibuffer History, future list,, emacs, The GNU Emacs
229 Manual}). These candidates are:
230
231 @itemize @minus
232 @item
233 The word or symbol at point.
234 @item
235 The last regexp used in an incremental search.
236 @item
237 The last string used in an incremental search.
238 @item
239 The last string or pattern used in query-replace commands.
240 @end itemize
241
242 This function works by calling the @code{read-from-minibuffer}
243 function, after computing the list of defaults as described above.
244 @end defun
245
246 @defvar minibuffer-allow-text-properties
247 If this variable is @code{nil}, then @code{read-from-minibuffer}
248 and @code{read-string} strip all text properties from the minibuffer
249 input before returning it. However,
250 @code{read-no-blanks-input} (see below), as well as
251 @code{read-minibuffer} and related functions (@pxref{Object from
252 Minibuffer,, Reading Lisp Objects With the Minibuffer}), and all
253 functions that do minibuffer input with completion, discard text
254 properties unconditionally, regardless of the value of this variable.
255 @end defvar
256
257 @defvar minibuffer-local-map
258 This
259 @anchor{Definition of minibuffer-local-map}
260 @c avoid page break at anchor; work around Texinfo deficiency
261 is the default local keymap for reading from the minibuffer. By
262 default, it makes the following bindings:
263
264 @table @asis
265 @item @kbd{C-j}
266 @code{exit-minibuffer}
267
268 @item @key{RET}
269 @code{exit-minibuffer}
270
271 @item @kbd{C-g}
272 @code{abort-recursive-edit}
273
274 @item @kbd{M-n}
275 @itemx @key{DOWN}
276 @code{next-history-element}
277
278 @item @kbd{M-p}
279 @itemx @key{UP}
280 @code{previous-history-element}
281
282 @item @kbd{M-s}
283 @code{next-matching-history-element}
284
285 @item @kbd{M-r}
286 @code{previous-matching-history-element}
287
288 @ignore
289 @c Does not seem worth/appropriate mentioning.
290 @item @kbd{C-@key{TAB}}
291 @code{file-cache-minibuffer-complete}
292 @end ignore
293 @end table
294 @end defvar
295
296 @c In version 18, initial is required
297 @c Emacs 19 feature
298 @defun read-no-blanks-input prompt &optional initial inherit-input-method
299 This function reads a string from the minibuffer, but does not allow
300 whitespace characters as part of the input: instead, those characters
301 terminate the input. The arguments @var{prompt}, @var{initial}, and
302 @var{inherit-input-method} are used as in @code{read-from-minibuffer}.
303
304 This is a simplified interface to the @code{read-from-minibuffer}
305 function, and passes the value of the @code{minibuffer-local-ns-map}
306 keymap as the @var{keymap} argument for that function. Since the keymap
307 @code{minibuffer-local-ns-map} does not rebind @kbd{C-q}, it @emph{is}
308 possible to put a space into the string, by quoting it.
309
310 This function discards text properties, regardless of the value of
311 @code{minibuffer-allow-text-properties}.
312
313 @smallexample
314 @group
315 (read-no-blanks-input @var{prompt} @var{initial})
316 @equiv{}
317 (let (minibuffer-allow-text-properties)
318 (read-from-minibuffer @var{prompt} @var{initial} minibuffer-local-ns-map))
319 @end group
320 @end smallexample
321 @end defun
322
323 @c Slightly unfortunate name, suggesting it might be related to the
324 @c Nextstep port...
325 @defvar minibuffer-local-ns-map
326 This built-in variable is the keymap used as the minibuffer local keymap
327 in the function @code{read-no-blanks-input}. By default, it makes the
328 following bindings, in addition to those of @code{minibuffer-local-map}:
329
330 @table @asis
331 @item @key{SPC}
332 @cindex @key{SPC} in minibuffer
333 @code{exit-minibuffer}
334
335 @item @key{TAB}
336 @cindex @key{TAB} in minibuffer
337 @code{exit-minibuffer}
338
339 @item @kbd{?}
340 @cindex @kbd{?} in minibuffer
341 @code{self-insert-and-exit}
342 @end table
343 @end defvar
344
345 @node Object from Minibuffer
346 @section Reading Lisp Objects with the Minibuffer
347
348 This section describes functions for reading Lisp objects with the
349 minibuffer.
350
351 @defun read-minibuffer prompt &optional initial
352 This function reads a Lisp object using the minibuffer, and returns it
353 without evaluating it. The arguments @var{prompt} and @var{initial} are
354 used as in @code{read-from-minibuffer}.
355
356 This is a simplified interface to the
357 @code{read-from-minibuffer} function:
358
359 @smallexample
360 @group
361 (read-minibuffer @var{prompt} @var{initial})
362 @equiv{}
363 (let (minibuffer-allow-text-properties)
364 (read-from-minibuffer @var{prompt} @var{initial} nil t))
365 @end group
366 @end smallexample
367
368 Here is an example in which we supply the string @code{"(testing)"} as
369 initial input:
370
371 @smallexample
372 @group
373 (read-minibuffer
374 "Enter an expression: " (format "%s" '(testing)))
375
376 ;; @r{Here is how the minibuffer is displayed:}
377 @end group
378
379 @group
380 ---------- Buffer: Minibuffer ----------
381 Enter an expression: (testing)@point{}
382 ---------- Buffer: Minibuffer ----------
383 @end group
384 @end smallexample
385
386 @noindent
387 The user can type @key{RET} immediately to use the initial input as a
388 default, or can edit the input.
389 @end defun
390
391 @defun eval-minibuffer prompt &optional initial
392 This function reads a Lisp expression using the minibuffer, evaluates
393 it, then returns the result. The arguments @var{prompt} and
394 @var{initial} are used as in @code{read-from-minibuffer}.
395
396 This function simply evaluates the result of a call to
397 @code{read-minibuffer}:
398
399 @smallexample
400 @group
401 (eval-minibuffer @var{prompt} @var{initial})
402 @equiv{}
403 (eval (read-minibuffer @var{prompt} @var{initial}))
404 @end group
405 @end smallexample
406 @end defun
407
408 @defun edit-and-eval-command prompt form
409 This function reads a Lisp expression in the minibuffer, evaluates it,
410 then returns the result. The difference between this command and
411 @code{eval-minibuffer} is that here the initial @var{form} is not
412 optional and it is treated as a Lisp object to be converted to printed
413 representation rather than as a string of text. It is printed with
414 @code{prin1}, so if it is a string, double-quote characters (@samp{"})
415 appear in the initial text. @xref{Output Functions}.
416
417 In the following example, we offer the user an expression with initial
418 text that is already a valid form:
419
420 @smallexample
421 @group
422 (edit-and-eval-command "Please edit: " '(forward-word 1))
423
424 ;; @r{After evaluation of the preceding expression,}
425 ;; @r{the following appears in the minibuffer:}
426 @end group
427
428 @group
429 ---------- Buffer: Minibuffer ----------
430 Please edit: (forward-word 1)@point{}
431 ---------- Buffer: Minibuffer ----------
432 @end group
433 @end smallexample
434
435 @noindent
436 Typing @key{RET} right away would exit the minibuffer and evaluate the
437 expression, thus moving point forward one word.
438 @end defun
439
440 @node Minibuffer History
441 @section Minibuffer History
442 @cindex minibuffer history
443 @cindex history list
444
445 A @dfn{minibuffer history list} records previous minibuffer inputs
446 so the user can reuse them conveniently. It is a variable whose value
447 is a list of strings (previous inputs), most recent first.
448
449 There are many separate minibuffer history lists, used for different
450 kinds of inputs. It's the Lisp programmer's job to specify the right
451 history list for each use of the minibuffer.
452
453 You specify a minibuffer history list with the optional @var{history}
454 argument to @code{read-from-minibuffer} or @code{completing-read}.
455 Here are the possible values for it:
456
457 @table @asis
458 @item @var{variable}
459 Use @var{variable} (a symbol) as the history list.
460
461 @item (@var{variable} . @var{startpos})
462 Use @var{variable} (a symbol) as the history list, and assume that the
463 initial history position is @var{startpos} (a nonnegative integer).
464
465 Specifying 0 for @var{startpos} is equivalent to just specifying the
466 symbol @var{variable}. @code{previous-history-element} will display
467 the most recent element of the history list in the minibuffer. If you
468 specify a positive @var{startpos}, the minibuffer history functions
469 behave as if @code{(elt @var{variable} (1- @var{startpos}))} were the
470 history element currently shown in the minibuffer.
471
472 For consistency, you should also specify that element of the history
473 as the initial minibuffer contents, using the @var{initial} argument
474 to the minibuffer input function (@pxref{Initial Input}).
475 @end table
476
477 If you don't specify @var{history}, then the default history list
478 @code{minibuffer-history} is used. For other standard history lists,
479 see below. You can also create your own history list variable; just
480 initialize it to @code{nil} before the first use.
481
482 Both @code{read-from-minibuffer} and @code{completing-read} add new
483 elements to the history list automatically, and provide commands to
484 allow the user to reuse items on the list. The only thing your program
485 needs to do to use a history list is to initialize it and to pass its
486 name to the input functions when you wish. But it is safe to modify the
487 list by hand when the minibuffer input functions are not using it.
488
489 Emacs functions that add a new element to a history list can also
490 delete old elements if the list gets too long. The variable
491 @code{history-length} specifies the maximum length for most history
492 lists. To specify a different maximum length for a particular history
493 list, put the length in the @code{history-length} property of the
494 history list symbol. The variable @code{history-delete-duplicates}
495 specifies whether to delete duplicates in history.
496
497 @defun add-to-history history-var newelt &optional maxelt keep-all
498 This function adds a new element @var{newelt}, if it isn't the empty
499 string, to the history list stored in the variable @var{history-var},
500 and returns the updated history list. It limits the list length to
501 the value of @var{maxelt} (if non-@code{nil}) or @code{history-length}
502 (described below). The possible values of @var{maxelt} have the same
503 meaning as the values of @code{history-length}.
504
505 Normally, @code{add-to-history} removes duplicate members from the
506 history list if @code{history-delete-duplicates} is non-@code{nil}.
507 However, if @var{keep-all} is non-@code{nil}, that says not to remove
508 duplicates, and to add @var{newelt} to the list even if it is empty.
509 @end defun
510
511 @defvar history-add-new-input
512 If the value of this variable is @code{nil}, standard functions that
513 read from the minibuffer don't add new elements to the history list.
514 This lets Lisp programs explicitly manage input history by using
515 @code{add-to-history}. By default, @code{history-add-new-input} is
516 non-@code{nil}.
517 @end defvar
518
519 @defopt history-length
520 The value of this variable specifies the maximum length for all
521 history lists that don't specify their own maximum lengths. If the
522 value is @code{t}, that means there is no maximum (don't delete old
523 elements). If a history list variable's symbol has a non-@code{nil}
524 @code{history-length} property, it overrides this variable for that
525 particular history list.
526 @end defopt
527
528 @defopt history-delete-duplicates
529 If the value of this variable is @code{t}, that means when adding a
530 new history element, all previous identical elements are deleted.
531 @end defopt
532
533 Here are some of the standard minibuffer history list variables:
534
535 @defvar minibuffer-history
536 The default history list for minibuffer history input.
537 @end defvar
538
539 @defvar query-replace-history
540 A history list for arguments to @code{query-replace} (and similar
541 arguments to other commands).
542 @end defvar
543
544 @defvar file-name-history
545 A history list for file-name arguments.
546 @end defvar
547
548 @defvar buffer-name-history
549 A history list for buffer-name arguments.
550 @end defvar
551
552 @defvar regexp-history
553 A history list for regular expression arguments.
554 @end defvar
555
556 @defvar extended-command-history
557 A history list for arguments that are names of extended commands.
558 @end defvar
559
560 @defvar shell-command-history
561 A history list for arguments that are shell commands.
562 @end defvar
563
564 @defvar read-expression-history
565 A history list for arguments that are Lisp expressions to evaluate.
566 @end defvar
567
568 @defvar face-name-history
569 A history list for arguments that are faces.
570 @end defvar
571
572 @c Less common: coding-system-history, input-method-history,
573 @c command-history, grep-history, grep-find-history,
574 @c read-envvar-name-history, setenv-history, yes-or-no-p-history.
575
576 @node Initial Input
577 @section Initial Input
578
579 Several of the functions for minibuffer input have an argument called
580 @var{initial}. This is a mostly-deprecated
581 feature for specifying that the minibuffer should start out with
582 certain text, instead of empty as usual.
583
584 If @var{initial} is a string, the minibuffer starts out containing the
585 text of the string, with point at the end, when the user starts to
586 edit the text. If the user simply types @key{RET} to exit the
587 minibuffer, it will use the initial input string to determine the
588 value to return.
589
590 @strong{We discourage use of a non-@code{nil} value for
591 @var{initial}}, because initial input is an intrusive interface.
592 History lists and default values provide a much more convenient method
593 to offer useful default inputs to the user.
594
595 There is just one situation where you should specify a string for an
596 @var{initial} argument. This is when you specify a cons cell for the
597 @var{history} argument. @xref{Minibuffer History}.
598
599 @var{initial} can also be a cons cell of the form @code{(@var{string}
600 . @var{position})}. This means to insert @var{string} in the
601 minibuffer but put point at @var{position} within the string's text.
602
603 As a historical accident, @var{position} was implemented
604 inconsistently in different functions. In @code{completing-read},
605 @var{position}'s value is interpreted as origin-zero; that is, a value
606 of 0 means the beginning of the string, 1 means after the first
607 character, etc. In @code{read-minibuffer}, and the other
608 non-completion minibuffer input functions that support this argument,
609 1 means the beginning of the string, 2 means after the first character,
610 etc.
611
612 Use of a cons cell as the value for @var{initial} arguments is deprecated.
613
614 @node Completion
615 @section Completion
616 @cindex completion
617
618 @dfn{Completion} is a feature that fills in the rest of a name
619 starting from an abbreviation for it. Completion works by comparing the
620 user's input against a list of valid names and determining how much of
621 the name is determined uniquely by what the user has typed. For
622 example, when you type @kbd{C-x b} (@code{switch-to-buffer}) and then
623 type the first few letters of the name of the buffer to which you wish
624 to switch, and then type @key{TAB} (@code{minibuffer-complete}), Emacs
625 extends the name as far as it can.
626
627 Standard Emacs commands offer completion for names of symbols, files,
628 buffers, and processes; with the functions in this section, you can
629 implement completion for other kinds of names.
630
631 The @code{try-completion} function is the basic primitive for
632 completion: it returns the longest determined completion of a given
633 initial string, with a given set of strings to match against.
634
635 The function @code{completing-read} provides a higher-level interface
636 for completion. A call to @code{completing-read} specifies how to
637 determine the list of valid names. The function then activates the
638 minibuffer with a local keymap that binds a few keys to commands useful
639 for completion. Other functions provide convenient simple interfaces
640 for reading certain kinds of names with completion.
641
642 @menu
643 * Basic Completion:: Low-level functions for completing strings.
644 * Minibuffer Completion:: Invoking the minibuffer with completion.
645 * Completion Commands:: Minibuffer commands that do completion.
646 * High-Level Completion:: Convenient special cases of completion
647 (reading buffer name, file name, etc.).
648 * Reading File Names:: Using completion to read file names and
649 shell commands.
650 * Completion Variables:: Variables controlling completion behavior.
651 * Programmed Completion:: Writing your own completion function.
652 * Completion in Buffers:: Completing text in ordinary buffers.
653 @end menu
654
655 @node Basic Completion
656 @subsection Basic Completion Functions
657
658 The following completion functions have nothing in themselves to do
659 with minibuffers. We describe them here to keep them near the
660 higher-level completion features that do use the minibuffer.
661
662 @defun try-completion string collection &optional predicate
663 This function returns the longest common substring of all possible
664 completions of @var{string} in @var{collection}.
665
666 @cindex completion table
667 The @var{collection} argument is called the @dfn{completion table}.
668 Its value must be a list of strings, an alist whose keys are strings
669 or symbols, an obarray, a hash table, or a completion function.
670
671 Completion compares @var{string} against each of the permissible
672 completions specified by @var{collection}. If no permissible
673 completions match, @code{try-completion} returns @code{nil}. If there
674 is just one matching completion, and the match is exact, it returns
675 @code{t}. Otherwise, it returns the longest initial sequence common
676 to all possible matching completions.
677
678 If @var{collection} is an alist (@pxref{Association Lists}), the
679 permissible completions are the elements of the alist that are either
680 strings, or conses whose @sc{car} is a string or symbol.
681 Symbols are converted to strings using @code{symbol-name}. Other
682 elements of the alist are ignored. (Remember that in Emacs Lisp, the
683 elements of alists do not @emph{have} to be conses.) In particular, a
684 list of strings is allowed, even though we usually do not
685 think of such lists as alists.
686
687 @cindex obarray in completion
688 If @var{collection} is an obarray (@pxref{Creating Symbols}), the names
689 of all symbols in the obarray form the set of permissible completions. The
690 global variable @code{obarray} holds an obarray containing the names of
691 all interned Lisp symbols.
692
693 Note that the only valid way to make a new obarray is to create it
694 empty and then add symbols to it one by one using @code{intern}.
695 Also, you cannot intern a given symbol in more than one obarray.
696
697 If @var{collection} is a hash table, then the keys that are strings
698 are the possible completions. Other keys are ignored.
699
700 You can also use a function as @var{collection}. Then the function is
701 solely responsible for performing completion; @code{try-completion}
702 returns whatever this function returns. The function is called with
703 three arguments: @var{string}, @var{predicate} and @code{nil} (the
704 reason for the third argument is so that the same function can be used
705 in @code{all-completions} and do the appropriate thing in either
706 case). @xref{Programmed Completion}.
707
708 If the argument @var{predicate} is non-@code{nil}, then it must be a
709 function of one argument, unless @var{collection} is a hash table, in
710 which case it should be a function of two arguments. It is used to
711 test each possible match, and the match is accepted only if
712 @var{predicate} returns non-@code{nil}. The argument given to
713 @var{predicate} is either a string or a cons cell (the @sc{car} of
714 which is a string) from the alist, or a symbol (@emph{not} a symbol
715 name) from the obarray. If @var{collection} is a hash table,
716 @var{predicate} is called with two arguments, the string key and the
717 associated value.
718
719 In addition, to be acceptable, a completion must also match all the
720 regular expressions in @code{completion-regexp-list}. (Unless
721 @var{collection} is a function, in which case that function has to
722 handle @code{completion-regexp-list} itself.)
723
724 In the first of the following examples, the string @samp{foo} is
725 matched by three of the alist @sc{car}s. All of the matches begin with
726 the characters @samp{fooba}, so that is the result. In the second
727 example, there is only one possible match, and it is exact, so the value
728 is @code{t}.
729
730 @smallexample
731 @group
732 (try-completion
733 "foo"
734 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4)))
735 @result{} "fooba"
736 @end group
737
738 @group
739 (try-completion "foo" '(("barfoo" 2) ("foo" 3)))
740 @result{} t
741 @end group
742 @end smallexample
743
744 In the following example, numerous symbols begin with the characters
745 @samp{forw}, and all of them begin with the word @samp{forward}. In
746 most of the symbols, this is followed with a @samp{-}, but not in all,
747 so no more than @samp{forward} can be completed.
748
749 @smallexample
750 @group
751 (try-completion "forw" obarray)
752 @result{} "forward"
753 @end group
754 @end smallexample
755
756 Finally, in the following example, only two of the three possible
757 matches pass the predicate @code{test} (the string @samp{foobaz} is
758 too short). Both of those begin with the string @samp{foobar}.
759
760 @smallexample
761 @group
762 (defun test (s)
763 (> (length (car s)) 6))
764 @result{} test
765 @end group
766 @group
767 (try-completion
768 "foo"
769 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
770 'test)
771 @result{} "foobar"
772 @end group
773 @end smallexample
774 @end defun
775
776 @defun all-completions string collection &optional predicate nospace
777 This function returns a list of all possible completions of
778 @var{string}. The arguments to this function (aside from
779 @var{nospace}) are the same as those of @code{try-completion}. Also,
780 this function uses @code{completion-regexp-list} in the same way that
781 @code{try-completion} does.
782
783 The optional argument @var{nospace} is obsolete. If it is
784 non-@code{nil}, completions that start with a space are ignored unless
785 @var{string} starts with a space.
786
787 If @var{collection} is a function, it is called with three arguments:
788 @var{string}, @var{predicate} and @code{t}; then @code{all-completions}
789 returns whatever the function returns. @xref{Programmed Completion}.
790
791 Here is an example, using the function @code{test} shown in the
792 example for @code{try-completion}:
793
794 @smallexample
795 @group
796 (defun test (s)
797 (> (length (car s)) 6))
798 @result{} test
799 @end group
800
801 @group
802 (all-completions
803 "foo"
804 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
805 'test)
806 @result{} ("foobar1" "foobar2")
807 @end group
808 @end smallexample
809 @end defun
810
811 @defun test-completion string collection &optional predicate
812 @anchor{Definition of test-completion}
813 This function returns non-@code{nil} if @var{string} is a valid
814 completion alternative specified by @var{collection} and
815 @var{predicate}. The arguments are the same as in
816 @code{try-completion}. For instance, if @var{collection} is a list of
817 strings, this is true if @var{string} appears in the list and
818 @var{predicate} is satisfied.
819
820 This function uses @code{completion-regexp-list} in the same
821 way that @code{try-completion} does.
822
823 If @var{predicate} is non-@code{nil} and if @var{collection} contains
824 several strings that are equal to each other, as determined by
825 @code{compare-strings} according to @code{completion-ignore-case},
826 then @var{predicate} should accept either all or none of them.
827 Otherwise, the return value of @code{test-completion} is essentially
828 unpredictable.
829
830 If @var{collection} is a function, it is called with three arguments,
831 the values @var{string}, @var{predicate} and @code{lambda}; whatever
832 it returns, @code{test-completion} returns in turn.
833 @end defun
834
835 @defun completion-boundaries string collection predicate suffix
836 This function returns the boundaries of the field on which @var{collection}
837 will operate, assuming that @var{string} holds the text before point
838 and @var{suffix} holds the text after point.
839
840 Normally completion operates on the whole string, so for all normal
841 collections, this will always return @code{(0 . (length
842 @var{suffix}))}. But more complex completion such as completion on
843 files is done one field at a time. For example, completion of
844 @code{"/usr/sh"} will include @code{"/usr/share/"} but not
845 @code{"/usr/share/doc"} even if @code{"/usr/share/doc"} exists.
846 Also @code{all-completions} on @code{"/usr/sh"} will not include
847 @code{"/usr/share/"} but only @code{"share/"}. So if @var{string} is
848 @code{"/usr/sh"} and @var{suffix} is @code{"e/doc"},
849 @code{completion-boundaries} will return @code{(5 . 1)} which tells us
850 that the @var{collection} will only return completion information that
851 pertains to the area after @code{"/usr/"} and before @code{"/doc"}.
852 @end defun
853
854 If you store a completion alist in a variable, you should mark the
855 variable as ``risky'' with a non-@code{nil}
856 @code{risky-local-variable} property. @xref{File Local Variables}.
857
858 @defvar completion-ignore-case
859 If the value of this variable is non-@code{nil}, case is not
860 considered significant in completion. Within @code{read-file-name},
861 this variable is overridden by
862 @code{read-file-name-completion-ignore-case} (@pxref{Reading File
863 Names}); within @code{read-buffer}, it is overridden by
864 @code{read-buffer-completion-ignore-case} (@pxref{High-Level
865 Completion}).
866 @end defvar
867
868 @defvar completion-regexp-list
869 This is a list of regular expressions. The completion functions only
870 consider a completion acceptable if it matches all regular expressions
871 in this list, with @code{case-fold-search} (@pxref{Searching and Case})
872 bound to the value of @code{completion-ignore-case}.
873 @end defvar
874
875 @defmac lazy-completion-table var fun
876 This macro provides a way to initialize the variable @var{var} as a
877 collection for completion in a lazy way, not computing its actual
878 contents until they are first needed. You use this macro to produce a
879 value that you store in @var{var}. The actual computation of the
880 proper value is done the first time you do completion using @var{var}.
881 It is done by calling @var{fun} with no arguments. The
882 value @var{fun} returns becomes the permanent value of @var{var}.
883
884 Here is a usage example:
885
886 @smallexample
887 (defvar foo (lazy-completion-table foo make-my-alist))
888 @end smallexample
889 @end defmac
890
891 @node Minibuffer Completion
892 @subsection Completion and the Minibuffer
893 @cindex minibuffer completion
894 @cindex reading from minibuffer with completion
895
896 This section describes the basic interface for reading from the
897 minibuffer with completion.
898
899 @defun completing-read prompt collection &optional predicate require-match initial history default inherit-input-method
900 This function reads a string in the minibuffer, assisting the user by
901 providing completion. It activates the minibuffer with prompt
902 @var{prompt}, which must be a string.
903
904 The actual completion is done by passing the completion table
905 @var{collection} and the completion predicate @var{predicate} to the
906 function @code{try-completion} (@pxref{Basic Completion}). This
907 happens in certain commands bound in the local keymaps used for
908 completion. Some of these commands also call @code{test-completion}.
909 Thus, if @var{predicate} is non-@code{nil}, it should be compatible
910 with @var{collection} and @code{completion-ignore-case}.
911 @xref{Definition of test-completion}.
912
913 The value of the optional argument @var{require-match} determines how
914 the user may exit the minibuffer:
915
916 @itemize @bullet
917 @item
918 If @code{nil}, the usual minibuffer exit commands work regardless of
919 the input in the minibuffer.
920
921 @item
922 If @code{t}, the usual minibuffer exit commands won't exit unless the
923 input completes to an element of @var{collection}.
924
925 @item
926 If @code{confirm}, the user can exit with any input, but is asked for
927 confirmation if the input is not an element of @var{collection}.
928
929 @item
930 If @code{confirm-after-completion}, the user can exit with any input,
931 but is asked for confirmation if the preceding command was a
932 completion command (i.e., one of the commands in
933 @code{minibuffer-confirm-exit-commands}) and the resulting input is
934 not an element of @var{collection}. @xref{Completion Commands}.
935
936 @item
937 Any other value of @var{require-match} behaves like @code{t}, except
938 that the exit commands won't exit if it performs completion.
939 @end itemize
940
941 However, empty input is always permitted, regardless of the value of
942 @var{require-match}; in that case, @code{completing-read} returns the
943 first element of @var{default}, if it is a list; @code{""}, if
944 @var{default} is @code{nil}; or @var{default}. The string or strings
945 in @var{default} are also available to the user through the history
946 commands.
947
948 The function @code{completing-read} uses
949 @code{minibuffer-local-completion-map} as the keymap if
950 @var{require-match} is @code{nil}, and uses
951 @code{minibuffer-local-must-match-map} if @var{require-match} is
952 non-@code{nil}. @xref{Completion Commands}.
953
954 The argument @var{history} specifies which history list variable to use for
955 saving the input and for minibuffer history commands. It defaults to
956 @code{minibuffer-history}. @xref{Minibuffer History}.
957
958 The argument @var{initial} is mostly deprecated; we recommend using a
959 non-@code{nil} value only in conjunction with specifying a cons cell
960 for @var{history}. @xref{Initial Input}. For default input, use
961 @var{default} instead.
962
963 If the argument @var{inherit-input-method} is non-@code{nil}, then the
964 minibuffer inherits the current input method (@pxref{Input
965 Methods}) and the setting of @code{enable-multibyte-characters}
966 (@pxref{Text Representations}) from whichever buffer was current before
967 entering the minibuffer.
968
969 If the built-in variable @code{completion-ignore-case} is
970 non-@code{nil}, completion ignores case when comparing the input
971 against the possible matches. @xref{Basic Completion}. In this mode
972 of operation, @var{predicate} must also ignore case, or you will get
973 surprising results.
974
975 Here's an example of using @code{completing-read}:
976
977 @smallexample
978 @group
979 (completing-read
980 "Complete a foo: "
981 '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
982 nil t "fo")
983 @end group
984
985 @group
986 ;; @r{After evaluation of the preceding expression,}
987 ;; @r{the following appears in the minibuffer:}
988
989 ---------- Buffer: Minibuffer ----------
990 Complete a foo: fo@point{}
991 ---------- Buffer: Minibuffer ----------
992 @end group
993 @end smallexample
994
995 @noindent
996 If the user then types @kbd{@key{DEL} @key{DEL} b @key{RET}},
997 @code{completing-read} returns @code{barfoo}.
998
999 The @code{completing-read} function binds variables to pass
1000 information to the commands that actually do completion.
1001 They are described in the following section.
1002 @end defun
1003
1004 @defvar completing-read-function
1005 The value of this variable must be a function, which is called by
1006 @code{completing-read} to actually do its work. It should accept the
1007 same arguments as @code{completing-read}. This can be bound to a
1008 different function to completely override the normal behavior of
1009 @code{completing-read}.
1010 @end defvar
1011
1012 @node Completion Commands
1013 @subsection Minibuffer Commands that Do Completion
1014
1015 This section describes the keymaps, commands and user options used
1016 in the minibuffer to do completion.
1017
1018 @defvar minibuffer-completion-table
1019 The value of this variable is the completion table used for completion
1020 in the minibuffer. This is the global variable that contains what
1021 @code{completing-read} passes to @code{try-completion}. It is used by
1022 minibuffer completion commands such as
1023 @code{minibuffer-complete-word}.
1024 @end defvar
1025
1026 @defvar minibuffer-completion-predicate
1027 This variable's value is the predicate that @code{completing-read}
1028 passes to @code{try-completion}. The variable is also used by the other
1029 minibuffer completion functions.
1030 @end defvar
1031
1032 @defvar minibuffer-completion-confirm
1033 This variable determines whether Emacs asks for confirmation before
1034 exiting the minibuffer; @code{completing-read} binds this variable,
1035 and the function @code{minibuffer-complete-and-exit} checks the value
1036 before exiting. If the value is @code{nil}, confirmation is not
1037 required. If the value is @code{confirm}, the user may exit with an
1038 input that is not a valid completion alternative, but Emacs asks for
1039 confirmation. If the value is @code{confirm-after-completion}, the
1040 user may exit with an input that is not a valid completion
1041 alternative, but Emacs asks for confirmation if the user submitted the
1042 input right after any of the completion commands in
1043 @code{minibuffer-confirm-exit-commands}.
1044 @end defvar
1045
1046 @defvar minibuffer-confirm-exit-commands
1047 This variable holds a list of commands that cause Emacs to ask for
1048 confirmation before exiting the minibuffer, if the @var{require-match}
1049 argument to @code{completing-read} is @code{confirm-after-completion}.
1050 The confirmation is requested if the user attempts to exit the
1051 minibuffer immediately after calling any command in this list.
1052 @end defvar
1053
1054 @deffn Command minibuffer-complete-word
1055 This function completes the minibuffer contents by at most a single
1056 word. Even if the minibuffer contents have only one completion,
1057 @code{minibuffer-complete-word} does not add any characters beyond the
1058 first character that is not a word constituent. @xref{Syntax Tables}.
1059 @end deffn
1060
1061 @deffn Command minibuffer-complete
1062 This function completes the minibuffer contents as far as possible.
1063 @end deffn
1064
1065 @deffn Command minibuffer-complete-and-exit
1066 This function completes the minibuffer contents, and exits if
1067 confirmation is not required, i.e., if
1068 @code{minibuffer-completion-confirm} is @code{nil}. If confirmation
1069 @emph{is} required, it is given by repeating this command
1070 immediately---the command is programmed to work without confirmation
1071 when run twice in succession.
1072 @end deffn
1073
1074 @deffn Command minibuffer-completion-help
1075 This function creates a list of the possible completions of the
1076 current minibuffer contents. It works by calling @code{all-completions}
1077 using the value of the variable @code{minibuffer-completion-table} as
1078 the @var{collection} argument, and the value of
1079 @code{minibuffer-completion-predicate} as the @var{predicate} argument.
1080 The list of completions is displayed as text in a buffer named
1081 @file{*Completions*}.
1082 @end deffn
1083
1084 @defun display-completion-list completions &optional common-substring
1085 This function displays @var{completions} to the stream in
1086 @code{standard-output}, usually a buffer. (@xref{Read and Print}, for more
1087 information about streams.) The argument @var{completions} is normally
1088 a list of completions just returned by @code{all-completions}, but it
1089 does not have to be. Each element may be a symbol or a string, either
1090 of which is simply printed. It can also be a list of two strings,
1091 which is printed as if the strings were concatenated. The first of
1092 the two strings is the actual completion, the second string serves as
1093 annotation.
1094
1095 The argument @var{common-substring} is the prefix that is common to
1096 all the completions. With normal Emacs completion, it is usually the
1097 same as the string that was completed. @code{display-completion-list}
1098 uses this to highlight text in the completion list for better visual
1099 feedback. This is not needed in the minibuffer; for minibuffer
1100 completion, you can pass @code{nil}.
1101
1102 This function is called by @code{minibuffer-completion-help}. The
1103 most common way to use it is together with
1104 @code{with-output-to-temp-buffer}, like this:
1105
1106 @example
1107 (with-output-to-temp-buffer "*Completions*"
1108 (display-completion-list
1109 (all-completions (buffer-string) my-alist)
1110 (buffer-string)))
1111 @end example
1112 @end defun
1113
1114 @defopt completion-auto-help
1115 If this variable is non-@code{nil}, the completion commands
1116 automatically display a list of possible completions whenever nothing
1117 can be completed because the next character is not uniquely determined.
1118 @end defopt
1119
1120 @defvar minibuffer-local-completion-map
1121 @code{completing-read} uses this value as the local keymap when an
1122 exact match of one of the completions is not required. By default, this
1123 keymap makes the following bindings:
1124
1125 @table @asis
1126 @item @kbd{?}
1127 @code{minibuffer-completion-help}
1128
1129 @item @key{SPC}
1130 @code{minibuffer-complete-word}
1131
1132 @item @key{TAB}
1133 @code{minibuffer-complete}
1134 @end table
1135
1136 @noindent
1137 with other characters bound as in @code{minibuffer-local-map}
1138 (@pxref{Definition of minibuffer-local-map}).
1139 @end defvar
1140
1141 @defvar minibuffer-local-must-match-map
1142 @code{completing-read} uses this value as the local keymap when an
1143 exact match of one of the completions is required. Therefore, no keys
1144 are bound to @code{exit-minibuffer}, the command that exits the
1145 minibuffer unconditionally. By default, this keymap makes the following
1146 bindings:
1147
1148 @table @asis
1149 @item @kbd{?}
1150 @code{minibuffer-completion-help}
1151
1152 @item @key{SPC}
1153 @code{minibuffer-complete-word}
1154
1155 @item @key{TAB}
1156 @code{minibuffer-complete}
1157
1158 @item @kbd{C-j}
1159 @code{minibuffer-complete-and-exit}
1160
1161 @item @key{RET}
1162 @code{minibuffer-complete-and-exit}
1163 @end table
1164
1165 @noindent
1166 with other characters bound as in @code{minibuffer-local-map}.
1167 @end defvar
1168
1169 @defvar minibuffer-local-filename-completion-map
1170 This is like @code{minibuffer-local-completion-map}
1171 except that it does not bind @key{SPC}. This keymap is used by the
1172 function @code{read-file-name}.
1173 @end defvar
1174
1175 @defvar minibuffer-local-filename-must-match-map
1176 This is like @code{minibuffer-local-must-match-map}
1177 except that it does not bind @key{SPC}. This keymap is used by the
1178 function @code{read-file-name}.
1179 @end defvar
1180
1181 @node High-Level Completion
1182 @subsection High-Level Completion Functions
1183
1184 This section describes the higher-level convenient functions for
1185 reading certain sorts of names with completion.
1186
1187 In most cases, you should not call these functions in the middle of a
1188 Lisp function. When possible, do all minibuffer input as part of
1189 reading the arguments for a command, in the @code{interactive}
1190 specification. @xref{Defining Commands}.
1191
1192 @defun read-buffer prompt &optional default require-match
1193 This function reads the name of a buffer and returns it as a string.
1194 The argument @var{default} is the default name to use, the value to
1195 return if the user exits with an empty minibuffer. If non-@code{nil},
1196 it should be a string, a list of strings, or a buffer. If it is
1197 a list, the default value is the first element of this list. It is
1198 mentioned in the prompt, but is not inserted in the minibuffer as
1199 initial input.
1200
1201 The argument @var{prompt} should be a string ending with a colon and a
1202 space. If @var{default} is non-@code{nil}, the function inserts it in
1203 @var{prompt} before the colon to follow the convention for reading from
1204 the minibuffer with a default value (@pxref{Programming Tips}).
1205
1206 The optional argument @var{require-match} has the same meaning as in
1207 @code{completing-read}. @xref{Minibuffer Completion}.
1208
1209 In the following example, the user enters @samp{minibuffer.t}, and
1210 then types @key{RET}. The argument @var{require-match} is @code{t},
1211 and the only buffer name starting with the given input is
1212 @samp{minibuffer.texi}, so that name is the value.
1213
1214 @example
1215 (read-buffer "Buffer name: " "foo" t)
1216 @group
1217 ;; @r{After evaluation of the preceding expression,}
1218 ;; @r{the following prompt appears,}
1219 ;; @r{with an empty minibuffer:}
1220 @end group
1221
1222 @group
1223 ---------- Buffer: Minibuffer ----------
1224 Buffer name (default foo): @point{}
1225 ---------- Buffer: Minibuffer ----------
1226 @end group
1227
1228 @group
1229 ;; @r{The user types @kbd{minibuffer.t @key{RET}}.}
1230 @result{} "minibuffer.texi"
1231 @end group
1232 @end example
1233 @end defun
1234
1235 @defopt read-buffer-function
1236 This variable specifies how to read buffer names. The function is
1237 called with the arguments passed to @code{read-buffer}. For example,
1238 if you set this variable to @code{iswitchb-read-buffer}, all Emacs
1239 commands that call @code{read-buffer} to read a buffer name will
1240 actually use the @code{iswitchb} package to read it.
1241 @end defopt
1242
1243 @defopt read-buffer-completion-ignore-case
1244 If this variable is non-@code{nil}, @code{read-buffer} ignores case
1245 when performing completion.
1246 @end defopt
1247
1248 @defun read-command prompt &optional default
1249 This function reads the name of a command and returns it as a Lisp
1250 symbol. The argument @var{prompt} is used as in
1251 @code{read-from-minibuffer}. Recall that a command is anything for
1252 which @code{commandp} returns @code{t}, and a command name is a symbol
1253 for which @code{commandp} returns @code{t}. @xref{Interactive Call}.
1254
1255 The argument @var{default} specifies what to return if the user enters
1256 null input. It can be a symbol, a string or a list of strings. If it
1257 is a string, @code{read-command} interns it before returning it.
1258 If it is a list, @code{read-command} returns the first element of this list.
1259 If @var{default} is @code{nil}, that means no default has been
1260 specified; then if the user enters null input, the return value is
1261 @code{(intern "")}, that is, a symbol whose name is an empty string.
1262
1263 @example
1264 (read-command "Command name? ")
1265
1266 @group
1267 ;; @r{After evaluation of the preceding expression,}
1268 ;; @r{the following prompt appears with an empty minibuffer:}
1269 @end group
1270
1271 @group
1272 ---------- Buffer: Minibuffer ----------
1273 Command name?
1274 ---------- Buffer: Minibuffer ----------
1275 @end group
1276 @end example
1277
1278 @noindent
1279 If the user types @kbd{forward-c @key{RET}}, then this function returns
1280 @code{forward-char}.
1281
1282 The @code{read-command} function is a simplified interface to
1283 @code{completing-read}. It uses the variable @code{obarray} so as to
1284 complete in the set of extant Lisp symbols, and it uses the
1285 @code{commandp} predicate so as to accept only command names:
1286
1287 @cindex @code{commandp} example
1288 @example
1289 @group
1290 (read-command @var{prompt})
1291 @equiv{}
1292 (intern (completing-read @var{prompt} obarray
1293 'commandp t nil))
1294 @end group
1295 @end example
1296 @end defun
1297
1298 @defun read-variable prompt &optional default
1299 @anchor{Definition of read-variable}
1300 This function reads the name of a user variable and returns it as a
1301 symbol.
1302
1303 The argument @var{default} specifies the default value to return if
1304 the user enters null input. It can be a symbol, a string, or a list
1305 of strings. If it is a string, @code{read-variable} interns it to
1306 make the default value. If it is a list, @code{read-variable} interns
1307 the first element. If @var{default} is @code{nil}, that means no
1308 default has been specified; then if the user enters null input, the
1309 return value is @code{(intern "")}.
1310
1311 @example
1312 @group
1313 (read-variable "Variable name? ")
1314
1315 ;; @r{After evaluation of the preceding expression,}
1316 ;; @r{the following prompt appears,}
1317 ;; @r{with an empty minibuffer:}
1318 @end group
1319
1320 @group
1321 ---------- Buffer: Minibuffer ----------
1322 Variable name? @point{}
1323 ---------- Buffer: Minibuffer ----------
1324 @end group
1325 @end example
1326
1327 @noindent
1328 If the user then types @kbd{fill-p @key{RET}}, @code{read-variable}
1329 returns @code{fill-prefix}.
1330
1331 In general, @code{read-variable} is similar to @code{read-command},
1332 but uses the predicate @code{user-variable-p} instead of
1333 @code{commandp}:
1334
1335 @cindex @code{user-variable-p} example
1336 @example
1337 @group
1338 (read-variable @var{prompt})
1339 @equiv{}
1340 (intern
1341 (completing-read @var{prompt} obarray
1342 'user-variable-p t nil))
1343 @end group
1344 @end example
1345 @end defun
1346
1347 @deffn Command read-color &optional prompt convert allow-empty display
1348 This function reads a string that is a color specification, either the
1349 color's name or an RGB hex value such as @code{#RRRGGGBBB}. It
1350 prompts with @var{prompt} (default: @code{"Color (name or #RGB triplet):"})
1351 and provides completion for color names, but not for hex RGB values.
1352 In addition to names of standard colors, completion candidates include
1353 the foreground and background colors at point.
1354
1355 Valid RGB values are described in @ref{Color Names}.
1356
1357 The function's return value is the string typed by the user in the
1358 minibuffer. However, when called interactively or if the optional
1359 argument @var{convert} is non-@code{nil}, it converts any input color
1360 name into the corresponding RGB value string and instead returns that.
1361 This function requires a valid color specification to be input.
1362 Empty color names are allowed when @code{allow-empty} is
1363 non-@code{nil} and the user enters null input.
1364
1365 Interactively, or when @var{display} is non-@code{nil}, the return
1366 value is also displayed in the echo area.
1367 @end deffn
1368
1369 See also the functions @code{read-coding-system} and
1370 @code{read-non-nil-coding-system}, in @ref{User-Chosen Coding Systems},
1371 and @code{read-input-method-name}, in @ref{Input Methods}.
1372
1373 @node Reading File Names
1374 @subsection Reading File Names
1375 @cindex read file names
1376 @cindex prompt for file name
1377
1378 The high-level completion functions @code{read-file-name},
1379 @code{read-directory-name}, and @code{read-shell-command} are designed
1380 to read file names, directory names, and shell commands respectively.
1381 They provide special features, including automatic insertion of the
1382 default directory.
1383
1384 @defun read-file-name prompt &optional directory default require-match initial predicate
1385 This function reads a file name, prompting with @var{prompt} and
1386 providing completion.
1387
1388 As an exception, this function reads a file name using a graphical
1389 file dialog instead of the minibuffer, if (i) it is invoked via a
1390 mouse command, and (ii) the selected frame is on a graphical display
1391 supporting such dialogs, and (iii) the variable @code{use-dialog-box}
1392 is non-@code{nil} (@pxref{Dialog Boxes,, Dialog Boxes, emacs, The GNU
1393 Emacs Manual}), and (iv) the @var{directory} argument, described
1394 below, does not specify a remote file (@pxref{Remote Files,, Remote
1395 Files, emacs, The GNU Emacs Manual}). The exact behavior when using a
1396 graphical file dialog is platform-dependent. Here, we simply document
1397 the behavior when using the minibuffer.
1398
1399 @code{read-file-name} does not automatically expand the returned file
1400 name. You must call @code{expand-file-name} yourself if an absolute
1401 file name is required.
1402
1403 The optional argument @var{require-match} has the same meaning as in
1404 @code{completing-read}. @xref{Minibuffer Completion}.
1405
1406 The argument @var{directory} specifies the directory to use for
1407 completing relative file names. It should be an absolute directory
1408 name. If @code{insert-default-directory} is non-@code{nil},
1409 @var{directory} is also inserted in the minibuffer as initial input.
1410 It defaults to the current buffer's value of @code{default-directory}.
1411
1412 If you specify @var{initial}, that is an initial file name to insert
1413 in the buffer (after @var{directory}, if that is inserted). In this
1414 case, point goes at the beginning of @var{initial}. The default for
1415 @var{initial} is @code{nil}---don't insert any file name. To see what
1416 @var{initial} does, try the command @kbd{C-x C-v}. @strong{Please
1417 note:} we recommend using @var{default} rather than @var{initial} in
1418 most cases.
1419
1420 If @var{default} is non-@code{nil}, then the function returns
1421 @var{default} if the user exits the minibuffer with the same non-empty
1422 contents that @code{read-file-name} inserted initially. The initial
1423 minibuffer contents are always non-empty if
1424 @code{insert-default-directory} is non-@code{nil}, as it is by
1425 default. @var{default} is not checked for validity, regardless of the
1426 value of @var{require-match}. However, if @var{require-match} is
1427 non-@code{nil}, the initial minibuffer contents should be a valid file
1428 (or directory) name. Otherwise @code{read-file-name} attempts
1429 completion if the user exits without any editing, and does not return
1430 @var{default}. @var{default} is also available through the history
1431 commands.
1432
1433 If @var{default} is @code{nil}, @code{read-file-name} tries to find a
1434 substitute default to use in its place, which it treats in exactly the
1435 same way as if it had been specified explicitly. If @var{default} is
1436 @code{nil}, but @var{initial} is non-@code{nil}, then the default is
1437 the absolute file name obtained from @var{directory} and
1438 @var{initial}. If both @var{default} and @var{initial} are @code{nil}
1439 and the buffer is visiting a file, @code{read-file-name} uses the
1440 absolute file name of that file as default. If the buffer is not
1441 visiting a file, then there is no default. In that case, if the user
1442 types @key{RET} without any editing, @code{read-file-name} simply
1443 returns the pre-inserted contents of the minibuffer.
1444
1445 If the user types @key{RET} in an empty minibuffer, this function
1446 returns an empty string, regardless of the value of
1447 @var{require-match}. This is, for instance, how the user can make the
1448 current buffer visit no file using @code{M-x set-visited-file-name}.
1449
1450 If @var{predicate} is non-@code{nil}, it specifies a function of one
1451 argument that decides which file names are acceptable completion
1452 alternatives. A file name is an acceptable value if @var{predicate}
1453 returns non-@code{nil} for it.
1454
1455 Here is an example of using @code{read-file-name}:
1456
1457 @example
1458 @group
1459 (read-file-name "The file is ")
1460
1461 ;; @r{After evaluation of the preceding expression,}
1462 ;; @r{the following appears in the minibuffer:}
1463 @end group
1464
1465 @group
1466 ---------- Buffer: Minibuffer ----------
1467 The file is /gp/gnu/elisp/@point{}
1468 ---------- Buffer: Minibuffer ----------
1469 @end group
1470 @end example
1471
1472 @noindent
1473 Typing @kbd{manual @key{TAB}} results in the following:
1474
1475 @example
1476 @group
1477 ---------- Buffer: Minibuffer ----------
1478 The file is /gp/gnu/elisp/manual.texi@point{}
1479 ---------- Buffer: Minibuffer ----------
1480 @end group
1481 @end example
1482
1483 @c Wordy to avoid overfull hbox in smallbook mode.
1484 @noindent
1485 If the user types @key{RET}, @code{read-file-name} returns the file name
1486 as the string @code{"/gp/gnu/elisp/manual.texi"}.
1487 @end defun
1488
1489 @defvar read-file-name-function
1490 If non-@code{nil}, this should be a function that accepts the same
1491 arguments as @code{read-file-name}. When @code{read-file-name} is
1492 called, it calls this function with the supplied arguments instead of
1493 doing its usual work.
1494 @end defvar
1495
1496 @defopt read-file-name-completion-ignore-case
1497 If this variable is non-@code{nil}, @code{read-file-name} ignores case
1498 when performing completion.
1499 @end defopt
1500
1501 @defun read-directory-name prompt &optional directory default require-match initial
1502 This function is like @code{read-file-name} but allows only directory
1503 names as completion alternatives.
1504
1505 If @var{default} is @code{nil} and @var{initial} is non-@code{nil},
1506 @code{read-directory-name} constructs a substitute default by
1507 combining @var{directory} (or the current buffer's default directory
1508 if @var{directory} is @code{nil}) and @var{initial}. If both
1509 @var{default} and @var{initial} are @code{nil}, this function uses
1510 @var{directory} as substitute default, or the current buffer's default
1511 directory if @var{directory} is @code{nil}.
1512 @end defun
1513
1514 @defopt insert-default-directory
1515 This variable is used by @code{read-file-name}, and thus, indirectly,
1516 by most commands reading file names. (This includes all commands that
1517 use the code letters @samp{f} or @samp{F} in their interactive form.
1518 @xref{Interactive Codes,, Code Characters for interactive}.) Its
1519 value controls whether @code{read-file-name} starts by placing the
1520 name of the default directory in the minibuffer, plus the initial file
1521 name if any. If the value of this variable is @code{nil}, then
1522 @code{read-file-name} does not place any initial input in the
1523 minibuffer (unless you specify initial input with the @var{initial}
1524 argument). In that case, the default directory is still used for
1525 completion of relative file names, but is not displayed.
1526
1527 If this variable is @code{nil} and the initial minibuffer contents are
1528 empty, the user may have to explicitly fetch the next history element
1529 to access a default value. If the variable is non-@code{nil}, the
1530 initial minibuffer contents are always non-empty and the user can
1531 always request a default value by immediately typing @key{RET} in an
1532 unedited minibuffer. (See above.)
1533
1534 For example:
1535
1536 @example
1537 @group
1538 ;; @r{Here the minibuffer starts out with the default directory.}
1539 (let ((insert-default-directory t))
1540 (read-file-name "The file is "))
1541 @end group
1542
1543 @group
1544 ---------- Buffer: Minibuffer ----------
1545 The file is ~lewis/manual/@point{}
1546 ---------- Buffer: Minibuffer ----------
1547 @end group
1548
1549 @group
1550 ;; @r{Here the minibuffer is empty and only the prompt}
1551 ;; @r{appears on its line.}
1552 (let ((insert-default-directory nil))
1553 (read-file-name "The file is "))
1554 @end group
1555
1556 @group
1557 ---------- Buffer: Minibuffer ----------
1558 The file is @point{}
1559 ---------- Buffer: Minibuffer ----------
1560 @end group
1561 @end example
1562 @end defopt
1563
1564 @defun read-shell-command prompt &optional initial history &rest args
1565 This function reads a shell command from the minibuffer, prompting
1566 with @var{prompt} and providing intelligent completion. It completes
1567 the first word of the command using candidates that are appropriate
1568 for command names, and the rest of the command words as file names.
1569
1570 This function uses @code{minibuffer-local-shell-command-map} as the
1571 keymap for minibuffer input. The @var{history} argument specifies the
1572 history list to use; if is omitted or @code{nil}, it defaults to
1573 @code{shell-command-history} (@pxref{Minibuffer History,
1574 shell-command-history}). The optional argument @var{initial}
1575 specifies the initial content of the minibuffer (@pxref{Initial
1576 Input}). The rest of @var{args}, if present, are used as the
1577 @var{default} and @var{inherit-input-method} arguments in
1578 @code{read-from-minibuffer} (@pxref{Text from Minibuffer}).
1579 @end defun
1580
1581 @defvar minibuffer-local-shell-command-map
1582 This keymap is used by @code{read-shell-command} for completing
1583 command and file names that are part of a shell command.
1584 @end defvar
1585
1586 @node Completion Variables
1587 @subsection Completion Variables
1588
1589 Here are some variables which can be used to alter the default
1590 completion behavior.
1591
1592 @cindex completion styles
1593 @defopt completion-styles
1594 The value of this variable is a list of completion style (symbols) to
1595 use for performing completion. A @dfn{completion style} is a set of
1596 rules for generating completions. Each symbol in occurring this list
1597 must have a corresponding entry in @code{completion-styles-alist}.
1598 @end defopt
1599
1600 @defvar completion-styles-alist
1601 This variable stores a list of available completion styles. Each
1602 element in the list has the form
1603
1604 @example
1605 (@var{style} @var{try-completion} @var{all-completions} @var{doc})
1606 @end example
1607
1608 @noindent
1609 Here, @var{style} is the name of the completion style (a symbol),
1610 which may be used in the @code{completion-styles} variable to refer to
1611 this style; @var{try-completion} is the function that does the
1612 completion; @var{all-completions} is the function that lists the
1613 completions; and @var{doc} is a string describing the completion
1614 style.
1615
1616 The @var{try-completion} and @var{all-completions} functions should
1617 each accept four arguments: @var{string}, @var{collection},
1618 @var{predicate}, and @var{point}. The @var{string}, @var{collection},
1619 and @var{predicate} arguments have the same meanings as in
1620 @code{try-completion} (@pxref{Basic Completion}), and the @var{point}
1621 argument is the position of point within @var{string}. Each function
1622 should return a non-@code{nil} value if it performed its job, and
1623 @code{nil} if it did not (e.g.@: if there is no way to complete
1624 @var{string} according to the completion style).
1625
1626 When the user calls a completion command like
1627 @code{minibuffer-complete} (@pxref{Completion Commands}), Emacs looks
1628 for the first style listed in @code{completion-styles} and calls its
1629 @var{try-completion} function. If this function returns @code{nil},
1630 Emacs moves to the next listed completion style and calls its
1631 @var{try-completion} function, and so on until one of the
1632 @var{try-completion} functions successfully performs completion and
1633 returns a non-@code{nil} value. A similar procedure is used for
1634 listing completions, via the @var{all-completions} functions.
1635
1636 @xref{Completion Styles,,, emacs, The GNU Emacs Manual}, for a
1637 description of the available completion styles.
1638 @end defvar
1639
1640 @defopt completion-category-overrides
1641 This variable specifies special completion styles and other completion
1642 behaviors to use when completing certain types of text. Its value
1643 should be a list of the form @code{(@var{category} . @var{alist})}.
1644 @var{category} is a symbol describing what is being completed;
1645 currently, the @code{buffer} and @code{file} categories are defined,
1646 but others can be defined via specialized completion functions
1647 (@pxref{Programmed Completion}). @var{alist} is an association list
1648 describing how completion should behave for the corresponding
1649 category. The following alist keys are supported:
1650
1651 @table @code
1652 @item styles
1653 The value should be a list of completion styles (symbols).
1654
1655 @item cycle
1656 The value should be a value for @code{completion-cycle-threshold}
1657 (@pxref{Completion Options,,, emacs, The GNU Emacs Manual}) for this
1658 category.
1659 @end table
1660
1661 @noindent
1662 Additional alist entries may be defined in the future.
1663 @end defopt
1664
1665 @defvar completion-extra-properties
1666 This variable is used to specify extra properties of the current
1667 completion command. It is intended to be let-bound by specialized
1668 completion commands. Its value should be a list of property and value
1669 pairs. The following properties are supported:
1670
1671 @table @code
1672 @item :annotation-function
1673 The value should be a function to add annotations in the completions
1674 buffer. This function must accept one argument, a completion, and
1675 should either return @code{nil} or a string to be displayed next to
1676 the completion.
1677
1678 @item :exit-function
1679 The value should be a function to run after performing completion.
1680 The function should accept two arguments, @var{string} and
1681 @var{status}, where @var{string} is the text to which the field was
1682 completed and @var{status} indicates what kind of operation happened:
1683 @code{finished} if text is now complete, @code{sole} if the text
1684 cannot be further completed but completion is not finished, or
1685 @code{exact} if the text is a valid completion but may be further
1686 completed.
1687 @end table
1688 @end defvar
1689
1690 @node Programmed Completion
1691 @subsection Programmed Completion
1692 @cindex programmed completion
1693
1694 Sometimes it is not possible or convenient to create an alist or
1695 an obarray containing all the intended possible completions ahead
1696 of time. In such a case, you can supply your own function to compute
1697 the completion of a given string. This is called @dfn{programmed
1698 completion}. Emacs uses programmed completion when completing file
1699 names (@pxref{File Name Completion}), among many other cases.
1700
1701 To use this feature, pass a function as the @var{collection}
1702 argument to @code{completing-read}. The function
1703 @code{completing-read} arranges to pass your completion function along
1704 to @code{try-completion}, @code{all-completions}, and other basic
1705 completion functions, which will then let your function do all
1706 the work.
1707
1708 The completion function should accept three arguments:
1709
1710 @itemize @bullet
1711 @item
1712 The string to be completed.
1713
1714 @item
1715 A predicate function with which to filter possible matches, or
1716 @code{nil} if none. The function should call the predicate for each
1717 possible match, and ignore the match if the predicate returns
1718 @code{nil}.
1719
1720 @item
1721 A flag specifying the type of completion operation to perform. This
1722 is one of the following four values:
1723
1724 @table @code
1725 @item nil
1726 This specifies a @code{try-completion} operation. The function should
1727 return @code{t} if the specified string is a unique and exact match;
1728 if there is more than one match, it should return the common substring
1729 of all matches (if the string is an exact match for one completion
1730 alternative but also matches other longer alternatives, the return
1731 value is the string); if there are no matches, it should return
1732 @code{nil}.
1733
1734 @item t
1735 This specifies an @code{all-completions} operation. The function
1736 should return a list of all possible completions of the specified
1737 string.
1738
1739 @item lambda
1740 This specifies a @code{test-completion} operation. The function
1741 should return @code{t} if the specified string is an exact match for
1742 some completion alternative; @code{nil} otherwise.
1743
1744 @item (boundaries . @var{suffix})
1745 This specifies a @code{completion-boundaries} operation. The function
1746 should return @code{(boundaries @var{start} . @var{end})}, where
1747 @var{start} is the position of the beginning boundary in the specified
1748 string, and @var{end} is the position of the end boundary in
1749 @var{suffix}.
1750
1751 @item metadata
1752 This specifies a request for information about the state of the
1753 current completion. The function should return an alist, as described
1754 below. The alist may contain any number of elements.
1755 @end table
1756
1757 @noindent
1758 If the flag has any other value, the completion function should return
1759 @code{nil}.
1760 @end itemize
1761
1762 The following is a list of metadata entries that a completion function
1763 may return in response to a @code{metadata} flag argument:
1764
1765 @table @code
1766 @item category
1767 The value should be a symbol describing what kind of text the
1768 completion function is trying to complete. If the symbol matches one
1769 of the keys in @code{completion-category-overrides}, the usual
1770 completion behavior is overridden. @xref{Completion Variables}.
1771
1772 @item annotation-function
1773 The value should be a function for @dfn{annotating} completions. The
1774 function should take one argument, @var{string}, which is a possible
1775 completion. It should return a string, which is displayed after the
1776 completion @var{string} in the @file{*Completions*} buffer.
1777
1778 @item display-sort-function
1779 The value should be a function for sorting completions. The function
1780 should take one argument, a list of completion strings, and return a
1781 sorted list of completion strings. It is allowed to alter the input
1782 list destructively.
1783
1784 @item cycle-sort-function
1785 The value should be a function for sorting completions, when
1786 @code{completion-cycle-threshold} is non-@code{nil} and the user is
1787 cycling through completion alternatives. @xref{Completion Options,,,
1788 emacs, The GNU Emacs Manual}. Its argument list and return value are
1789 the same as for @code{display-sort-function}.
1790 @end table
1791
1792 @defun completion-table-dynamic function
1793 This function is a convenient way to write a function that can act as
1794 programmed completion function. The argument @var{function} should be
1795 a function that takes one argument, a string, and returns an alist of
1796 possible completions of it. You can think of
1797 @code{completion-table-dynamic} as a transducer between that interface
1798 and the interface for programmed completion functions.
1799 @end defun
1800
1801 @node Completion in Buffers
1802 @subsection Completion in Ordinary Buffers
1803 @cindex inline completion
1804
1805 @findex completion-at-point
1806 Although completion is usually done in the minibuffer, the
1807 completion facility can also be used on the text in ordinary Emacs
1808 buffers. In many major modes, in-buffer completion is performed by
1809 the @kbd{C-M-i} or @kbd{M-@key{TAB}} command, bound to
1810 @code{completion-at-point}. @xref{Symbol Completion,,, emacs, The GNU
1811 Emacs Manual}. This command uses the abnormal hook variable
1812 @code{completion-at-point-functions}:
1813
1814 @defvar completion-at-point-functions
1815 The value of this abnormal hook should be a list of functions, which
1816 are used to compute a completion table for completing the text at
1817 point. It can be used by major modes to provide mode-specific
1818 completion tables (@pxref{Major Mode Conventions}).
1819
1820 When the command @code{completion-at-point} runs, it calls the
1821 functions in the list one by one, without any argument. Each function
1822 should return @code{nil} if it is unable to produce a completion table
1823 for the text at point. Otherwise it should return a list of the form
1824
1825 @example
1826 (@var{start} @var{end} @var{collection} . @var{props})
1827 @end example
1828
1829 @noindent
1830 @var{start} and @var{end} delimit the text to complete (which should
1831 enclose point). @var{collection} is a completion table for completing
1832 that text, in a form suitable for passing as the second argument to
1833 @code{try-completion} (@pxref{Basic Completion}); completion
1834 alternatives will be generated from this completion table in the usual
1835 way, via the completion styles defined in @code{completion-styles}
1836 (@pxref{Completion Variables}). @var{props} is a property list for
1837 additional information; any of the properties in
1838 @code{completion-extra-properties} are recognized (@pxref{Completion
1839 Variables}), as well as the following additional ones:
1840
1841 @table @code
1842 @item :predicate
1843 The value should be a predicate that completion candidates need to
1844 satisfy.
1845
1846 @item :exclusive
1847 If the value is @code{no}, then if the completion table fails to match
1848 the text at point, then @code{completion-at-point} moves on to the
1849 next function in @code{completion-at-point-functions} instead of
1850 reporting a completion failure.
1851 @end table
1852
1853 A function in @code{completion-at-point-functions} may also return a
1854 function. In that case, that returned function is called, with no
1855 argument, and it is entirely responsible for performing the
1856 completion. We discourage this usage; it is intended to help convert
1857 old code to using @code{completion-at-point}.
1858
1859 The first function in @code{completion-at-point-functions} to return a
1860 non-@code{nil} value is used by @code{completion-at-point}. The
1861 remaining functions are not called. The exception to this is when
1862 there is a @code{:exclusive} specification, as described above.
1863 @end defvar
1864
1865 The following function provides a convenient way to perform
1866 completion on an arbitrary stretch of text in an Emacs buffer:
1867
1868 @defun completion-in-region start end collection &optional predicate
1869 This function completes the text in the current buffer between the
1870 positions @var{start} and @var{end}, using @var{collection}. The
1871 argument @var{collection} has the same meaning as in
1872 @code{try-completion} (@pxref{Basic Completion}).
1873
1874 This function inserts the completion text directly into the current
1875 buffer. Unlike @code{completing-read} (@pxref{Minibuffer
1876 Completion}), it does not activate the minibuffer.
1877
1878 For this function to work, point must be somewhere between @var{start}
1879 and @var{end}.
1880 @end defun
1881
1882
1883 @node Yes-or-No Queries
1884 @section Yes-or-No Queries
1885 @cindex asking the user questions
1886 @cindex querying the user
1887 @cindex yes-or-no questions
1888
1889 This section describes functions used to ask the user a yes-or-no
1890 question. The function @code{y-or-n-p} can be answered with a single
1891 character; it is useful for questions where an inadvertent wrong answer
1892 will not have serious consequences. @code{yes-or-no-p} is suitable for
1893 more momentous questions, since it requires three or four characters to
1894 answer.
1895
1896 If either of these functions is called in a command that was invoked
1897 using the mouse---more precisely, if @code{last-nonmenu-event}
1898 (@pxref{Command Loop Info}) is either @code{nil} or a list---then it
1899 uses a dialog box or pop-up menu to ask the question. Otherwise, it
1900 uses keyboard input. You can force use either of the mouse or of keyboard
1901 input by binding @code{last-nonmenu-event} to a suitable value around
1902 the call.
1903
1904 Strictly speaking, @code{yes-or-no-p} uses the minibuffer and
1905 @code{y-or-n-p} does not; but it seems best to describe them together.
1906
1907 @defun y-or-n-p prompt
1908 This function asks the user a question, expecting input in the echo
1909 area. It returns @code{t} if the user types @kbd{y}, @code{nil} if the
1910 user types @kbd{n}. This function also accepts @key{SPC} to mean yes
1911 and @key{DEL} to mean no. It accepts @kbd{C-]} to mean ``quit'', like
1912 @kbd{C-g}, because the question might look like a minibuffer and for
1913 that reason the user might try to use @kbd{C-]} to get out. The answer
1914 is a single character, with no @key{RET} needed to terminate it. Upper
1915 and lower case are equivalent.
1916
1917 ``Asking the question'' means printing @var{prompt} in the echo area,
1918 followed by the string @w{@samp{(y or n) }}. If the input is not one of
1919 the expected answers (@kbd{y}, @kbd{n}, @kbd{@key{SPC}},
1920 @kbd{@key{DEL}}, or something that quits), the function responds
1921 @samp{Please answer y or n.}, and repeats the request.
1922
1923 This function does not actually use the minibuffer, since it does not
1924 allow editing of the answer. It actually uses the echo area (@pxref{The
1925 Echo Area}), which uses the same screen space as the minibuffer. The
1926 cursor moves to the echo area while the question is being asked.
1927
1928 The answers and their meanings, even @samp{y} and @samp{n}, are not
1929 hardwired. The keymap @code{query-replace-map} specifies them.
1930 @xref{Search and Replace}.
1931
1932 In the following example, the user first types @kbd{q}, which is
1933 invalid. At the next prompt the user types @kbd{y}.
1934
1935 @c Need an interactive example, because otherwise the return value
1936 @c obscures the display of the valid answer.
1937 @smallexample
1938 @group
1939 (defun ask ()
1940 (interactive)
1941 (y-or-n-p "Do you need a lift? "))
1942
1943 ;; @r{After evaluation of the preceding definition, @kbd{M-x ask}}
1944 ;; @r{causes the following prompt to appear in the echo area:}
1945 @end group
1946
1947 @group
1948 ---------- Echo area ----------
1949 Do you need a lift? (y or n)
1950 ---------- Echo area ----------
1951 @end group
1952
1953 ;; @r{If the user then types @kbd{q}, the following appears:}
1954
1955 @group
1956 ---------- Echo area ----------
1957 Please answer y or n. Do you need a lift? (y or n)
1958 ---------- Echo area ----------
1959 @end group
1960
1961 ;; @r{When the user types a valid answer,}
1962 ;; @r{it is displayed after the question:}
1963
1964 @group
1965 ---------- Echo area ----------
1966 Do you need a lift? (y or n) y
1967 ---------- Echo area ----------
1968 @end group
1969 @end smallexample
1970
1971 @noindent
1972 We show successive lines of echo area messages, but only one actually
1973 appears on the screen at a time.
1974 @end defun
1975
1976 @defun y-or-n-p-with-timeout prompt seconds default
1977 Like @code{y-or-n-p}, except that if the user fails to answer within
1978 @var{seconds} seconds, this function stops waiting and returns
1979 @var{default}. It works by setting up a timer; see @ref{Timers}.
1980 The argument @var{seconds} may be an integer or a floating point number.
1981 @end defun
1982
1983 @defun yes-or-no-p prompt
1984 This function asks the user a question, expecting input in the
1985 minibuffer. It returns @code{t} if the user enters @samp{yes},
1986 @code{nil} if the user types @samp{no}. The user must type @key{RET} to
1987 finalize the response. Upper and lower case are equivalent.
1988
1989 @code{yes-or-no-p} starts by displaying @var{prompt} in the echo area,
1990 followed by @w{@samp{(yes or no) }}. The user must type one of the
1991 expected responses; otherwise, the function responds @samp{Please answer
1992 yes or no.}, waits about two seconds and repeats the request.
1993
1994 @code{yes-or-no-p} requires more work from the user than
1995 @code{y-or-n-p} and is appropriate for more crucial decisions.
1996
1997 Here is an example:
1998
1999 @smallexample
2000 @group
2001 (yes-or-no-p "Do you really want to remove everything? ")
2002
2003 ;; @r{After evaluation of the preceding expression,}
2004 ;; @r{the following prompt appears,}
2005 ;; @r{with an empty minibuffer:}
2006 @end group
2007
2008 @group
2009 ---------- Buffer: minibuffer ----------
2010 Do you really want to remove everything? (yes or no)
2011 ---------- Buffer: minibuffer ----------
2012 @end group
2013 @end smallexample
2014
2015 @noindent
2016 If the user first types @kbd{y @key{RET}}, which is invalid because this
2017 function demands the entire word @samp{yes}, it responds by displaying
2018 these prompts, with a brief pause between them:
2019
2020 @smallexample
2021 @group
2022 ---------- Buffer: minibuffer ----------
2023 Please answer yes or no.
2024 Do you really want to remove everything? (yes or no)
2025 ---------- Buffer: minibuffer ----------
2026 @end group
2027 @end smallexample
2028 @end defun
2029
2030 @node Multiple Queries
2031 @section Asking Multiple Y-or-N Questions
2032
2033 When you have a series of similar questions to ask, such as ``Do you
2034 want to save this buffer'' for each buffer in turn, you should use
2035 @code{map-y-or-n-p} to ask the collection of questions, rather than
2036 asking each question individually. This gives the user certain
2037 convenient facilities such as the ability to answer the whole series at
2038 once.
2039
2040 @defun map-y-or-n-p prompter actor list &optional help action-alist no-cursor-in-echo-area
2041 This function asks the user a series of questions, reading a
2042 single-character answer in the echo area for each one.
2043
2044 The value of @var{list} specifies the objects to ask questions about.
2045 It should be either a list of objects or a generator function. If it is
2046 a function, it should expect no arguments, and should return either the
2047 next object to ask about, or @code{nil}, meaning to stop asking questions.
2048
2049 The argument @var{prompter} specifies how to ask each question. If
2050 @var{prompter} is a string, the question text is computed like this:
2051
2052 @example
2053 (format @var{prompter} @var{object})
2054 @end example
2055
2056 @noindent
2057 where @var{object} is the next object to ask about (as obtained from
2058 @var{list}).
2059
2060 If not a string, @var{prompter} should be a function of one argument
2061 (the next object to ask about) and should return the question text. If
2062 the value is a string, that is the question to ask the user. The
2063 function can also return @code{t}, meaning do act on this object (and
2064 don't ask the user), or @code{nil}, meaning ignore this object (and don't
2065 ask the user).
2066
2067 The argument @var{actor} says how to act on the answers that the user
2068 gives. It should be a function of one argument, and it is called with
2069 each object that the user says yes for. Its argument is always an
2070 object obtained from @var{list}.
2071
2072 If the argument @var{help} is given, it should be a list of this form:
2073
2074 @example
2075 (@var{singular} @var{plural} @var{action})
2076 @end example
2077
2078 @noindent
2079 where @var{singular} is a string containing a singular noun that
2080 describes the objects conceptually being acted on, @var{plural} is the
2081 corresponding plural noun, and @var{action} is a transitive verb
2082 describing what @var{actor} does.
2083
2084 If you don't specify @var{help}, the default is @code{("object"
2085 "objects" "act on")}.
2086
2087 Each time a question is asked, the user may enter @kbd{y}, @kbd{Y}, or
2088 @key{SPC} to act on that object; @kbd{n}, @kbd{N}, or @key{DEL} to skip
2089 that object; @kbd{!} to act on all following objects; @key{ESC} or
2090 @kbd{q} to exit (skip all following objects); @kbd{.} (period) to act on
2091 the current object and then exit; or @kbd{C-h} to get help. These are
2092 the same answers that @code{query-replace} accepts. The keymap
2093 @code{query-replace-map} defines their meaning for @code{map-y-or-n-p}
2094 as well as for @code{query-replace}; see @ref{Search and Replace}.
2095
2096 You can use @var{action-alist} to specify additional possible answers
2097 and what they mean. It is an alist of elements of the form
2098 @code{(@var{char} @var{function} @var{help})}, each of which defines one
2099 additional answer. In this element, @var{char} is a character (the
2100 answer); @var{function} is a function of one argument (an object from
2101 @var{list}); @var{help} is a string.
2102
2103 When the user responds with @var{char}, @code{map-y-or-n-p} calls
2104 @var{function}. If it returns non-@code{nil}, the object is considered
2105 ``acted upon'', and @code{map-y-or-n-p} advances to the next object in
2106 @var{list}. If it returns @code{nil}, the prompt is repeated for the
2107 same object.
2108
2109 Normally, @code{map-y-or-n-p} binds @code{cursor-in-echo-area} while
2110 prompting. But if @var{no-cursor-in-echo-area} is non-@code{nil}, it
2111 does not do that.
2112
2113 If @code{map-y-or-n-p} is called in a command that was invoked using the
2114 mouse---more precisely, if @code{last-nonmenu-event} (@pxref{Command
2115 Loop Info}) is either @code{nil} or a list---then it uses a dialog box
2116 or pop-up menu to ask the question. In this case, it does not use
2117 keyboard input or the echo area. You can force use either of the mouse or
2118 of keyboard input by binding @code{last-nonmenu-event} to a suitable
2119 value around the call.
2120
2121 The return value of @code{map-y-or-n-p} is the number of objects acted on.
2122 @end defun
2123 @c FIXME An example of this would be more useful than all the
2124 @c preceding examples of simple things.
2125
2126 @node Reading a Password
2127 @section Reading a Password
2128 @cindex passwords, reading
2129
2130 To read a password to pass to another program, you can use the
2131 function @code{read-passwd}.
2132
2133 @defun read-passwd prompt &optional confirm default
2134 This function reads a password, prompting with @var{prompt}. It does
2135 not echo the password as the user types it; instead, it echoes @samp{.}
2136 for each character in the password.
2137
2138 The optional argument @var{confirm}, if non-@code{nil}, says to read the
2139 password twice and insist it must be the same both times. If it isn't
2140 the same, the user has to type it over and over until the last two
2141 times match.
2142
2143 The optional argument @var{default} specifies the default password to
2144 return if the user enters empty input. If @var{default} is @code{nil},
2145 then @code{read-passwd} returns the null string in that case.
2146 @end defun
2147
2148 @node Minibuffer Commands
2149 @section Minibuffer Commands
2150
2151 This section describes some commands meant for use in the
2152 minibuffer.
2153
2154 @deffn Command exit-minibuffer
2155 This command exits the active minibuffer. It is normally bound to
2156 keys in minibuffer local keymaps.
2157 @end deffn
2158
2159 @deffn Command self-insert-and-exit
2160 This command exits the active minibuffer after inserting the last
2161 character typed on the keyboard (found in @code{last-command-event};
2162 @pxref{Command Loop Info}).
2163 @end deffn
2164
2165 @deffn Command previous-history-element n
2166 This command replaces the minibuffer contents with the value of the
2167 @var{n}th previous (older) history element.
2168 @end deffn
2169
2170 @deffn Command next-history-element n
2171 This command replaces the minibuffer contents with the value of the
2172 @var{n}th more recent history element.
2173 @end deffn
2174
2175 @deffn Command previous-matching-history-element pattern n
2176 This command replaces the minibuffer contents with the value of the
2177 @var{n}th previous (older) history element that matches @var{pattern} (a
2178 regular expression).
2179 @end deffn
2180
2181 @deffn Command next-matching-history-element pattern n
2182 This command replaces the minibuffer contents with the value of the
2183 @var{n}th next (newer) history element that matches @var{pattern} (a
2184 regular expression).
2185 @end deffn
2186
2187 @deffn Command previous-complete-history-element n
2188 This command replaces the minibuffer contents with the value of the
2189 @var{n}th previous (older) history element that completes the current
2190 contents of the minibuffer before the point.
2191 @end deffn
2192
2193 @deffn Command next-complete-history-element n
2194 This command replaces the minibuffer contents with the value of the
2195 @var{n}th next (newer) history element that completes the current
2196 contents of the minibuffer before the point.
2197 @end deffn
2198
2199
2200 @node Minibuffer Windows
2201 @section Minibuffer Windows
2202 @cindex minibuffer windows
2203
2204 These functions access and select minibuffer windows
2205 and test whether they are active.
2206
2207 @defun active-minibuffer-window
2208 This function returns the currently active minibuffer window, or
2209 @code{nil} if there is none.
2210 @end defun
2211
2212 @defun minibuffer-window &optional frame
2213 @anchor{Definition of minibuffer-window}
2214 This function returns the minibuffer window used for frame @var{frame}.
2215 If @var{frame} is @code{nil}, that stands for the current frame. Note
2216 that the minibuffer window used by a frame need not be part of that
2217 frame---a frame that has no minibuffer of its own necessarily uses some
2218 other frame's minibuffer window.
2219 @end defun
2220
2221 @defun set-minibuffer-window window
2222 This function specifies @var{window} as the minibuffer window to use.
2223 This affects where the minibuffer is displayed if you put text in it
2224 without invoking the usual minibuffer commands. It has no effect on
2225 the usual minibuffer input functions because they all start by
2226 choosing the minibuffer window according to the current frame.
2227 @end defun
2228
2229 @c Emacs 19 feature
2230 @defun window-minibuffer-p &optional window
2231 This function returns non-@code{nil} if @var{window} is a minibuffer
2232 window.
2233 @var{window} defaults to the selected window.
2234 @end defun
2235
2236 It is not correct to determine whether a given window is a minibuffer by
2237 comparing it with the result of @code{(minibuffer-window)}, because
2238 there can be more than one minibuffer window if there is more than one
2239 frame.
2240
2241 @defun minibuffer-window-active-p window
2242 This function returns non-@code{nil} if @var{window} is the currently
2243 active minibuffer window.
2244 @end defun
2245
2246 @node Minibuffer Contents
2247 @section Minibuffer Contents
2248
2249 These functions access the minibuffer prompt and contents.
2250
2251 @defun minibuffer-prompt
2252 This function returns the prompt string of the currently active
2253 minibuffer. If no minibuffer is active, it returns @code{nil}.
2254 @end defun
2255
2256 @defun minibuffer-prompt-end
2257 This function returns the current
2258 position of the end of the minibuffer prompt, if a minibuffer is
2259 current. Otherwise, it returns the minimum valid buffer position.
2260 @end defun
2261
2262 @defun minibuffer-prompt-width
2263 This function returns the current display-width of the minibuffer
2264 prompt, if a minibuffer is current. Otherwise, it returns zero.
2265 @end defun
2266
2267 @defun minibuffer-contents
2268 This function returns the editable
2269 contents of the minibuffer (that is, everything except the prompt) as
2270 a string, if a minibuffer is current. Otherwise, it returns the
2271 entire contents of the current buffer.
2272 @end defun
2273
2274 @defun minibuffer-contents-no-properties
2275 This is like @code{minibuffer-contents}, except that it does not copy text
2276 properties, just the characters themselves. @xref{Text Properties}.
2277 @end defun
2278
2279 @defun minibuffer-completion-contents
2280 This is like @code{minibuffer-contents}, except that it returns only
2281 the contents before point. That is the part that completion commands
2282 operate on. @xref{Minibuffer Completion}.
2283 @end defun
2284
2285 @defun delete-minibuffer-contents
2286 This function erases the editable contents of the minibuffer (that is,
2287 everything except the prompt), if a minibuffer is current. Otherwise,
2288 it erases the entire current buffer.
2289 @end defun
2290
2291 @node Recursive Mini
2292 @section Recursive Minibuffers
2293 @cindex recursive minibuffers
2294
2295 These functions and variables deal with recursive minibuffers
2296 (@pxref{Recursive Editing}):
2297
2298 @defun minibuffer-depth
2299 This function returns the current depth of activations of the
2300 minibuffer, a nonnegative integer. If no minibuffers are active, it
2301 returns zero.
2302 @end defun
2303
2304 @defopt enable-recursive-minibuffers
2305 If this variable is non-@code{nil}, you can invoke commands (such as
2306 @code{find-file}) that use minibuffers even while the minibuffer window
2307 is active. Such invocation produces a recursive editing level for a new
2308 minibuffer. The outer-level minibuffer is invisible while you are
2309 editing the inner one.
2310
2311 If this variable is @code{nil}, you cannot invoke minibuffer
2312 commands when the minibuffer window is active, not even if you switch to
2313 another window to do it.
2314 @end defopt
2315
2316 @c Emacs 19 feature
2317 If a command name has a property @code{enable-recursive-minibuffers}
2318 that is non-@code{nil}, then the command can use the minibuffer to read
2319 arguments even if it is invoked from the minibuffer. A command can
2320 also achieve this by binding @code{enable-recursive-minibuffers}
2321 to @code{t} in the interactive declaration (@pxref{Using Interactive}).
2322 The minibuffer command @code{next-matching-history-element} (normally
2323 @kbd{M-s} in the minibuffer) does the latter.
2324
2325 @node Minibuffer Misc
2326 @section Minibuffer Miscellany
2327
2328 @defun minibufferp &optional buffer-or-name
2329 This function returns non-@code{nil} if @var{buffer-or-name} is a
2330 minibuffer. If @var{buffer-or-name} is omitted, it tests the current
2331 buffer.
2332 @end defun
2333
2334 @defvar minibuffer-setup-hook
2335 This is a normal hook that is run whenever the minibuffer is entered.
2336 @xref{Hooks}.
2337 @end defvar
2338
2339 @defvar minibuffer-exit-hook
2340 This is a normal hook that is run whenever the minibuffer is exited.
2341 @xref{Hooks}.
2342 @end defvar
2343
2344 @defvar minibuffer-help-form
2345 @anchor{Definition of minibuffer-help-form}
2346 The current value of this variable is used to rebind @code{help-form}
2347 locally inside the minibuffer (@pxref{Help Functions}).
2348 @end defvar
2349
2350 @defvar minibuffer-scroll-window
2351 @anchor{Definition of minibuffer-scroll-window}
2352 If the value of this variable is non-@code{nil}, it should be a window
2353 object. When the function @code{scroll-other-window} is called in the
2354 minibuffer, it scrolls this window.
2355 @end defvar
2356
2357 @defun minibuffer-selected-window
2358 This function returns the window that was selected when the
2359 minibuffer was entered. If selected window is not a minibuffer
2360 window, it returns @code{nil}.
2361 @end defun
2362
2363 @defopt max-mini-window-height
2364 This variable specifies the maximum height for resizing minibuffer
2365 windows. If a float, it specifies a fraction of the height of the
2366 frame. If an integer, it specifies a number of lines.
2367 @end defopt
2368
2369 @vindex minibuffer-message-timeout
2370 @defun minibuffer-message string &rest args
2371 This function displays @var{string} temporarily at the end of the
2372 minibuffer text, for a few seconds, or until the next input event
2373 arrives, whichever comes first. The variable
2374 @code{minibuffer-message-timeout} specifies the number of seconds to
2375 wait in the absence of input. It defaults to 2. If @var{args} is
2376 non-@code{nil}, the actual message is obtained by passing @var{string}
2377 and @var{args} through @code{format}. @xref{Formatting Strings}.
2378 @end defun
2379
2380 @deffn Command minibuffer-inactive-mode
2381 This is the major mode used in inactive minibuffers. It uses
2382 keymap @code{minibuffer-inactive-mode-map}. This can be useful
2383 if the minibuffer is in a separate frame. @xref{Minibuffers and Frames}.
2384 @end deffn