]> code.delx.au - gnu-emacs/blob - man/mini.texi
*** empty log message ***
[gnu-emacs] / man / mini.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
3 @c 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Minibuffer, M-x, Basic, Top
6 @chapter The Minibuffer
7 @cindex minibuffer
8
9 The @dfn{minibuffer} is the facility used by Emacs commands to read
10 arguments more complicated than a single number. Minibuffer arguments
11 can be file names, buffer names, Lisp function names, Emacs command
12 names, Lisp expressions, and many other things, depending on the command
13 reading the argument. You can use the usual Emacs editing commands in
14 the minibuffer to edit the argument text.
15
16 @cindex prompt
17 When the minibuffer is in use, it appears in the echo area, and the
18 terminal's cursor moves there. The beginning of the minibuffer line
19 displays a @dfn{prompt} in a special color, to say what kind of input
20 you should supply and how it will be used. Often this prompt is
21 derived from the name of the command that the argument is for. The
22 prompt normally ends with a colon.
23
24 @cindex default argument
25 Sometimes a @dfn{default argument} appears in parentheses before the
26 colon; it too is part of the prompt. The default will be used as the
27 argument value if you enter an empty argument (that is, just type
28 @key{RET}). For example, commands that read buffer names always show a
29 default, which is the name of the buffer that will be used if you type
30 just @key{RET}.
31
32 The simplest way to enter a minibuffer argument is to type the text
33 you want, terminated by @key{RET} which exits the minibuffer. You can
34 cancel the command that wants the argument, and get out of the
35 minibuffer, by typing @kbd{C-g}.
36
37 Since the minibuffer uses the screen space of the echo area, it can
38 conflict with other ways Emacs customarily uses the echo area. Here is how
39 Emacs handles such conflicts:
40
41 @itemize @bullet
42 @item
43 If a command gets an error while you are in the minibuffer, this does
44 not cancel the minibuffer. However, the echo area is needed for the
45 error message and therefore the minibuffer itself is hidden for a
46 while. It comes back after a few seconds, or as soon as you type
47 anything.
48
49 @item
50 If in the minibuffer you use a command whose purpose is to display a
51 message in the echo area, such as @kbd{C-x =}, the message hides the
52 minibuffer for a while. The minibuffer contents come back after a few
53 seconds, or as soon as you type anything.
54
55 @item
56 Echoing of keystrokes does not take place while the minibuffer is in
57 use.
58 @end itemize
59
60 @menu
61 * File: Minibuffer File. Entering file names with the minibuffer.
62 * Edit: Minibuffer Edit. How to edit in the minibuffer.
63 * Completion:: An abbreviation facility for minibuffer input.
64 * Minibuffer History:: Reusing recent minibuffer arguments.
65 * Repetition:: Re-executing commands that used the minibuffer.
66 @end menu
67
68 @node Minibuffer File
69 @section Minibuffers for File Names
70
71 Sometimes the minibuffer starts out with text in it. For example, when
72 you are supposed to give a file name, the minibuffer starts out containing
73 the @dfn{default directory}, which ends with a slash. This is to inform
74 you which directory the file will be found in if you do not specify a
75 directory.
76
77 @c Separate paragraph to clean up ugly page break--rms
78 @need 1500
79 For example, the minibuffer might start out with these contents:
80
81 @example
82 Find File: /u2/emacs/src/
83 @end example
84
85 @noindent
86 where @samp{Find File:@: } is the prompt. Typing @kbd{buffer.c} as
87 input specifies the file @file{/u2/emacs/src/buffer.c}. To find files
88 in nearby directories, use @kbd{..}; thus, if you type
89 @kbd{../lisp/simple.el}, you will get the file named
90 @file{/u2/emacs/lisp/simple.el}. Alternatively, you can kill with
91 @kbd{M-@key{DEL}} the directory names you don't want (@pxref{Words}).
92
93 If you don't want any of the default, you can kill it with @kbd{C-a
94 C-k}. But you don't need to kill the default; you can simply ignore it.
95 Insert an absolute file name, one starting with a slash or a tilde,
96 after the default directory. For example, to specify the file
97 @file{/etc/termcap}, just insert that name, giving these minibuffer
98 contents:
99
100 @example
101 Find File: /u2/emacs/src//etc/termcap
102 @end example
103
104 @noindent
105 @cindex // in file name
106 @cindex double slash in file name
107 @cindex slashes repeated in file name
108 GNU Emacs gives a special meaning to a double slash (which is not
109 normally a useful thing to write): it means, ``ignore everything before
110 the second slash in the pair.'' Thus, @samp{/u2/emacs/src/} is ignored
111 in the example above, and you get the file @file{/etc/termcap}.
112 By default the ignored part of the file name is made dim if the
113 terminal allows it. This is affected by the
114 @code{file-name-shadow-mode} minor mode.
115
116 If you set @code{insert-default-directory} to @code{nil}, the default
117 directory is not inserted in the minibuffer. This way, the minibuffer
118 starts out empty. But the name you type, if relative, is still
119 interpreted with respect to the same default directory.
120
121 @node Minibuffer Edit
122 @section Editing in the Minibuffer
123
124 The minibuffer is an Emacs buffer (albeit a peculiar one), and the usual
125 Emacs commands are available for editing the text of an argument you are
126 entering.
127
128 Since @key{RET} in the minibuffer is defined to exit the minibuffer,
129 you can't use it to insert a newline in the minibuffer. To do that,
130 type @kbd{C-o} or @kbd{C-q C-j}. (On text terminals, newline is
131 really the @acronym{ASCII} character control-J.)
132
133 The minibuffer has its own window which always has space on the screen
134 but acts as if it were not there when the minibuffer is not in use. When
135 the minibuffer is in use, its window is just like the others; you can
136 switch to another window with @kbd{C-x o}, edit text in other windows and
137 perhaps even visit more files, before returning to the minibuffer to submit
138 the argument. You can kill text in another window, return to the
139 minibuffer window, and then yank the text to use it in the argument.
140 @xref{Windows}.
141
142 @cindex height of minibuffer
143 @cindex size of minibuffer
144 @cindex growing minibuffer
145 @cindex resizing minibuffer
146 There are some restrictions on the use of the minibuffer window,
147 however. You cannot switch buffers in it---the minibuffer and its
148 window are permanently attached. Also, you cannot split or kill the
149 minibuffer window. But you can make it taller in the normal fashion
150 with @kbd{C-x ^}.
151
152 @vindex resize-mini-windows
153 The minibuffer window expands vertically as necessary to hold the
154 text that you put in the minibuffer. If @code{resize-mini-windows} is
155 @code{t} (the default), the window is always resized to fit the size
156 of the text it displays. If its value is the symbol @code{grow-only},
157 the window grows when the size of displayed text increases, but
158 shrinks (back to the normal size) only when the minibuffer becomes
159 inactive. If its value is @code{nil}, you have to adjust the height
160 yourself.
161
162 @vindex max-mini-window-height
163 The variable @code{max-mini-window-height} controls the maximum
164 height for resizing the minibuffer window: a floating-point number
165 specifies a fraction of the frame's height; an integer specifies the
166 maximum number of lines; @code{nil} means do not resize the minibuffer
167 window automatically. The default value is 0.25.
168
169 If, while in the minibuffer, you issue a command that displays help
170 text of any sort in another window, you can use the @kbd{C-M-v}
171 command while in the minibuffer to scroll the help text.
172 (@kbd{M-@key{PAGEUP}} and @kbd{M-@key{PAGEDOWN}} also operate on that
173 help text.) This lasts until you exit the minibuffer. This feature
174 is especially useful when you display a buffer listing possible
175 completions. @xref{Other Window}.
176
177 @vindex enable-recursive-minibuffers
178 Emacs normally disallows most commands that use the minibuffer while
179 the minibuffer is active. This rule is to prevent recursive minibuffers
180 from confusing novice users. If you want to be able to use such
181 commands in the minibuffer, set the variable
182 @code{enable-recursive-minibuffers} to a non-@code{nil} value.
183
184 @node Completion
185 @section Completion
186 @cindex completion
187
188 For certain kinds of arguments, you can use @dfn{completion} to enter
189 the argument value. Completion means that you type part of the
190 argument, then Emacs visibly fills in the rest, or as much as
191 can be determined from the part you have typed.
192
193 When completion is available, certain keys---@key{TAB}, @key{RET}, and
194 @key{SPC}---are rebound to complete the text in the minibuffer before point
195 into a longer string that it stands for, by matching it against a set of
196 @dfn{completion alternatives} provided by the command reading the
197 argument. @kbd{?} is defined to display a list of possible completions
198 of what you have inserted.
199
200 For example, when @kbd{M-x} uses the minibuffer to read the name of a
201 command, it provides a list of all available Emacs command names to
202 complete against. The completion keys match the minibuffer text
203 against all the command names, find any additional name characters
204 implied by the ones already present in the minibuffer, and add those
205 characters to the ones you have given. This is what makes it possible
206 to type @kbd{M-x ins @key{SPC} b @key{RET}} instead of @kbd{M-x
207 insert-buffer @key{RET}} (for example).
208
209 Case is normally significant in completion, because it is significant
210 in most of the names that you can complete (buffer names, file names and
211 command names). Thus, @samp{fo} does not complete to @samp{Foo}.
212 Completion does ignore case distinctions for certain arguments in which
213 case does not matter.
214
215 Completion acts only on the text before point. If there is text in
216 the minibuffer after point---i.e., if you move point backward after
217 typing some text into the minibuffer---it remains unchanged.
218
219 @menu
220 * Example: Completion Example. Examples of using completion.
221 * Commands: Completion Commands. A list of completion commands.
222 * Strict Completion:: Different types of completion.
223 * Options: Completion Options. Options for completion.
224 @end menu
225
226 @node Completion Example
227 @subsection Completion Example
228
229 @kindex TAB @r{(completion)}
230 @findex minibuffer-complete
231 A concrete example may help here. If you type @kbd{M-x au @key{TAB}},
232 the @key{TAB} looks for alternatives (in this case, command names) that
233 start with @samp{au}. There are several, including
234 @code{auto-fill-mode} and @code{auto-save-mode}---but they are all the
235 same as far as @code{auto-}, so the @samp{au} in the minibuffer changes
236 to @samp{auto-}.@refill
237
238 If you type @key{TAB} again immediately, there are multiple
239 possibilities for the very next character---it could be any of
240 @samp{cfilrs}---so no more characters are added; instead, @key{TAB}
241 displays a list of all possible completions in another window.
242
243 If you go on to type @kbd{f @key{TAB}}, this @key{TAB} sees
244 @samp{auto-f}. The only command name starting this way is
245 @code{auto-fill-mode}, so completion fills in the rest of that. You now
246 have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
247 @key{TAB} f @key{TAB}}. Note that @key{TAB} has this effect because in
248 the minibuffer it is bound to the command @code{minibuffer-complete}
249 when completion is available.
250
251 @node Completion Commands
252 @subsection Completion Commands
253
254 Here is a list of the completion commands defined in the minibuffer
255 when completion is available.
256
257 @table @kbd
258 @item @key{TAB}
259 Complete the text before point in the minibuffer as much as possible
260 (@code{minibuffer-complete}).
261 @item @key{SPC}
262 Complete the minibuffer text before point, but don't go beyond one word
263 (@code{minibuffer-complete-word}).
264 @item @key{RET}
265 Submit the text in the minibuffer as the argument, possibly completing
266 first as described
267 @iftex
268 in the next subsection (@code{minibuffer-complete-and-exit}).
269 @end iftex
270 @ifnottex
271 in the next node (@code{minibuffer-complete-and-exit}). @xref{Strict
272 Completion}.
273 @end ifnottex
274 @item ?
275 Display a list of all possible completions of the text in the minibuffer
276 (@code{minibuffer-completion-help}).
277 @end table
278
279 @kindex SPC
280 @findex minibuffer-complete-word
281 @key{SPC} completes much like @key{TAB}, but never goes beyond the
282 next hyphen or space. If you have @samp{auto-f} in the minibuffer and
283 type @key{SPC}, it finds that the completion is @samp{auto-fill-mode},
284 but it stops completing after @samp{fill-}. This gives
285 @samp{auto-fill-}. Another @key{SPC} at this point completes all the
286 way to @samp{auto-fill-mode}. The command that implements this
287 behavior is called @code{minibuffer-complete-word}.
288
289 Here are some commands you can use to choose a completion from a
290 window that displays a list of completions:
291
292 @table @kbd
293 @findex mouse-choose-completion
294 @item Mouse-1
295 @itemx Mouse-2
296 Clicking mouse button 1 or 2 on a completion in the list of possible
297 completions chooses that completion (@code{mouse-choose-completion}).
298 You normally use this command while point is in the minibuffer, but you
299 must click in the list of completions, not in the minibuffer itself.
300
301 @findex switch-to-completions
302 @item @key{PRIOR}
303 @itemx M-v
304 Typing @key{PRIOR} or @key{PAGE-UP}, or @kbd{M-v}, while in the
305 minibuffer, selects the window showing the completion list buffer
306 (@code{switch-to-completions}). This paves the way for using the
307 commands below. (Selecting that window in the usual ways has the same
308 effect, but this way is more convenient.)
309
310 @findex choose-completion
311 @item @key{RET}
312 Typing @key{RET} @emph{in the completion list buffer} chooses the
313 completion that point is in or next to (@code{choose-completion}). To
314 use this command, you must first switch windows to the window that shows
315 the list of completions.
316
317 @findex next-completion
318 @item @key{RIGHT}
319 Typing the right-arrow key @key{RIGHT} @emph{in the completion list
320 buffer} moves point to the following completion (@code{next-completion}).
321
322 @findex previous-completion
323 @item @key{LEFT}
324 Typing the left-arrow key @key{LEFT} @emph{in the completion list
325 buffer} moves point toward the beginning of the buffer, to the previous
326 completion (@code{previous-completion}).
327 @end table
328
329 @node Strict Completion
330 @subsection Strict Completion
331
332 There are three different ways that @key{RET} can work in completing
333 minibuffers, depending on how the argument will be used.
334
335 @itemize @bullet
336 @item
337 @dfn{Strict} completion is used when it is meaningless to give any
338 argument except one of the known alternatives. For example, when
339 @kbd{C-x k} reads the name of a buffer to kill, it is meaningless to
340 give anything but the name of an existing buffer. In strict
341 completion, @key{RET} refuses to exit if the text in the minibuffer
342 does not complete to an exact match.
343
344 @item
345 @dfn{Cautious} completion is similar to strict completion, except that
346 @key{RET} exits only if the text was an exact match already, not
347 needing completion. If the text is not an exact match, @key{RET} does
348 not exit, but it does complete the text. If it completes to an exact
349 match, a second @key{RET} will exit.
350
351 Cautious completion is used for reading file names for files that must
352 already exist.
353
354 @item
355 @dfn{Permissive} completion is used when any string whatever is
356 meaningful, and the list of completion alternatives is just a guide.
357 For example, when @kbd{C-x C-f} reads the name of a file to visit, any
358 file name is allowed, in case you want to create a file. In
359 permissive completion, @key{RET} takes the text in the minibuffer
360 exactly as given, without completing it.
361 @end itemize
362
363 The completion commands display a list of all possible completions in
364 a window whenever there is more than one possibility for the very next
365 character. Also, typing @kbd{?} explicitly requests such a list. If
366 the list of completions is long, you can scroll it with @kbd{C-M-v}
367 (@pxref{Other Window}).
368
369 @node Completion Options
370 @subsection Completion Options
371
372 @vindex completion-ignored-extensions
373 @cindex ignored file names, in completion
374 When completion is done on file names, certain file names are usually
375 ignored. The variable @code{completion-ignored-extensions} contains a
376 list of strings; a file whose name ends in any of those strings is
377 ignored as a possible completion. The standard value of this variable
378 has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"}
379 and @code{"~"}. The effect is that, for example, @samp{foo} can
380 complete to @samp{foo.c} even though @samp{foo.o} exists as well.
381 However, if @emph{all} the possible completions end in ``ignored''
382 strings, then they are not ignored. Ignored extensions do not apply to
383 lists of completions---those always mention all possible completions.
384
385 If an element of the list in @code{completion-ignored-extensions} ends
386 in a slash @file{/}, it indicates a subdirectory that should be ignored
387 when completing file names. (Elements of
388 @code{completion-ignored-extensions} which do not end in a slash are
389 never considered when a completion candidate is a directory; thus,
390 completion returns directories whose names end in @file{.elc} even
391 though there's an element @code{".elc"} in the list.)
392
393 @vindex completion-auto-help
394 Normally, a completion command that cannot determine even one
395 additional character automatically displays a list of all possible
396 completions. If the variable @code{completion-auto-help} is set to
397 @code{nil}, this automatic display is disabled, so you must type
398 @kbd{?} to display the list of completions.
399
400 @cindex Partial Completion mode
401 @vindex partial-completion-mode
402 @findex partial-completion-mode
403 Partial Completion mode implements a more powerful kind of
404 completion that can complete multiple words in parallel. For example,
405 it can complete the command name abbreviation @code{p-b} into
406 @code{print-buffer}, because no other command starts with two words
407 whose initials are @samp{p} and @samp{b}.
408
409 Partial completion of directories in file names uses @samp{*} to
410 indicate the places for completion; thus, @file{/u*/b*/f*} might
411 complete to @file{/usr/bin/foo}.
412
413 To enable this mode, use the command @kbd{M-x
414 partial-completion-mode}, or customize the variable
415 @code{partial-completion-mode}. This binds the partial completion
416 commands to @key{TAB}, @key{SPC}, @key{RET}, and @kbd{?}. The usual
417 completion commands are available on @kbd{M-@key{TAB}} (or
418 @kbd{C-M-i}), @kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
419
420 @vindex PC-include-file-path
421 @vindex PC-disable-includes
422 Another feature of Partial Completion mode is to extend
423 @code{find-file} so that @samp{<@var{include}>} stands for the
424 file named @var{include} in some directory in the path
425 @code{PC-include-file-path}. If you set @code{PC-disable-includes} to
426 non-@code{nil}, this feature is disabled.
427
428 @cindex Icomplete mode
429 @findex icomplete-mode
430 Icomplete mode presents a constantly-updated display that tells you
431 what completions are available for the text you've entered so far. The
432 command to enable or disable this minor mode is @kbd{M-x
433 icomplete-mode}.
434
435 @node Minibuffer History
436 @section Minibuffer History
437 @cindex minibuffer history
438 @cindex history of minibuffer input
439
440 Every argument that you enter with the minibuffer is saved on a
441 @dfn{minibuffer history list} so that you can use it again later in
442 another argument. Special commands load the text of an earlier argument
443 in the minibuffer. They discard the old minibuffer contents, so you can
444 think of them as moving through the history of previous arguments.
445
446 @table @kbd
447 @item @key{UP}
448 @itemx M-p
449 Move to the next earlier argument string saved in the minibuffer history
450 (@code{previous-history-element}).
451 @item @key{DOWN}
452 @itemx M-n
453 Move to the next later argument string saved in the minibuffer history
454 (@code{next-history-element}).
455 @item M-r @var{regexp} @key{RET}
456 Move to an earlier saved argument in the minibuffer history that has a
457 match for @var{regexp} (@code{previous-matching-history-element}).
458 @item M-s @var{regexp} @key{RET}
459 Move to a later saved argument in the minibuffer history that has a
460 match for @var{regexp} (@code{next-matching-history-element}).
461 @end table
462
463 @kindex M-p @r{(minibuffer history)}
464 @kindex M-n @r{(minibuffer history)}
465 @findex next-history-element
466 @findex previous-history-element
467 The simplest way to reuse the saved arguments in the history list is
468 to move through the history list one element at a time. While in the
469 minibuffer, use @kbd{M-p} or up-arrow
470 (@code{previous-history-element}) to ``move to'' the next earlier
471 minibuffer input, and use @kbd{M-n} or down-arrow
472 (@code{next-history-element}) to ``move to'' the next later input.
473 These commands don't move the cursor, they bring different saved
474 strings into the minibuffer. But you can think of them as ``moving''
475 through the history list.
476
477 The previous input that you fetch from the history entirely replaces
478 the contents of the minibuffer. To use it as the argument, exit the
479 minibuffer as usual with @key{RET}. You can also edit the text before
480 you reuse it; this does not change the history element that you
481 ``moved'' to, but your new argument does go at the end of the history
482 list in its own right.
483
484 For many minibuffer arguments there is a ``default'' value. In some
485 cases, the minibuffer history commands know the default value. Then you
486 can insert the default value into the minibuffer as text by using
487 @kbd{M-n} to move ``into the future'' in the history. Eventually we
488 hope to make this feature available whenever the minibuffer has a
489 default value.
490
491 @findex previous-matching-history-element
492 @findex next-matching-history-element
493 @kindex M-r @r{(minibuffer history)}
494 @kindex M-s @r{(minibuffer history)}
495 There are also commands to search forward or backward through the
496 history; they search for history elements that match a regular
497 expression that you specify with the minibuffer. @kbd{M-r}
498 (@code{previous-matching-history-element}) searches older elements in
499 the history, while @kbd{M-s} (@code{next-matching-history-element})
500 searches newer elements. By special dispensation, these commands can
501 use the minibuffer to read their arguments even though you are already
502 in the minibuffer when you issue them. As with incremental searching,
503 an upper-case letter in the regular expression makes the search
504 case-sensitive (@pxref{Search Case}).
505
506 @ignore
507 We may change the precise way these commands read their arguments.
508 Perhaps they will search for a match for the string given so far in the
509 minibuffer; perhaps they will search for a literal match rather than a
510 regular expression match; perhaps they will only accept matches at the
511 beginning of a history element; perhaps they will read the string to
512 search for incrementally like @kbd{C-s}. To find out what interface is
513 actually available, type @kbd{C-h f previous-matching-history-element}.
514 @end ignore
515
516 All uses of the minibuffer record your input on a history list, but
517 there are separate history lists for different kinds of arguments. For
518 example, there is a list for file names, used by all the commands that
519 read file names. (As a special feature, this history list records
520 the absolute file name, no more and no less, even if that is not how
521 you entered the file name.)
522
523 There are several other very specific history lists, including one for
524 command names read by @kbd{M-x}, one for buffer names, one for arguments
525 of commands like @code{query-replace}, and one for compilation commands
526 read by @code{compile}. Finally, there is one ``miscellaneous'' history
527 list that most minibuffer arguments use.
528
529 @vindex history-length
530 The variable @code{history-length} specifies the maximum length of a
531 minibuffer history list; once a list gets that long, the oldest element
532 is deleted each time an element is added. If the value of
533 @code{history-length} is @code{t}, though, there is no maximum length
534 and elements are never deleted.
535
536 @vindex history-delete-duplicates
537 The variable @code{history-delete-duplicates} specifies whether to
538 delete duplicates in history. If the value of @code{history-delete-duplicates}
539 is @code{t}, that means when adding a new history element, all
540 previous identical elements are deleted.
541
542 @node Repetition
543 @section Repeating Minibuffer Commands
544 @cindex command history
545 @cindex history of commands
546
547 Every command that uses the minibuffer at least once is recorded on a
548 special history list, together with the values of its arguments, so that
549 you can repeat the entire command. In particular, every use of
550 @kbd{M-x} is recorded there, since @kbd{M-x} uses the minibuffer to read
551 the command name.
552
553 @findex list-command-history
554 @table @kbd
555 @item C-x @key{ESC} @key{ESC}
556 Re-execute a recent minibuffer command (@code{repeat-complex-command}).
557 @item M-x list-command-history
558 Display the entire command history, showing all the commands
559 @kbd{C-x @key{ESC} @key{ESC}} can repeat, most recent first.
560 @end table
561
562 @kindex C-x ESC ESC
563 @findex repeat-complex-command
564 @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent
565 minibuffer-using command. With no argument, it repeats the last such
566 command. A numeric argument specifies which command to repeat; one
567 means the last one, and larger numbers specify earlier ones.
568
569 @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command
570 into a Lisp expression and then entering a minibuffer initialized with
571 the text for that expression. If you type just @key{RET}, the command
572 is repeated as before. You can also change the command by editing the
573 Lisp expression. Whatever expression you finally submit is what will be
574 executed. The repeated command is added to the front of the command
575 history unless it is identical to the most recently executed command
576 already there.
577
578 Even if you don't understand Lisp syntax, it will probably be obvious
579 which command is displayed for repetition. If you do not change the
580 text, it will repeat exactly as before.
581
582 Once inside the minibuffer for @kbd{C-x @key{ESC} @key{ESC}}, you can
583 use the minibuffer history commands (@kbd{M-p}, @kbd{M-n}, @kbd{M-r},
584 @kbd{M-s}; @pxref{Minibuffer History}) to move through the history list
585 of saved entire commands. After finding the desired previous command,
586 you can edit its expression as usual and then resubmit it by typing
587 @key{RET} as usual.
588
589 @vindex isearch-resume-in-command-history
590 Incremental search does not, strictly speaking, use the minibuffer,
591 but it does something similar. Although it behaves like a complex command,
592 it normally does not appear in the history list for @kbd{C-x
593 @key{ESC} @key{ESC}}. You can make it appear in the history by
594 setting @code{isearch-resume-in-command-history} to a non-@code{nil}
595 value. @xref{Incremental Search}.
596
597 @vindex command-history
598 The list of previous minibuffer-using commands is stored as a Lisp
599 list in the variable @code{command-history}. Each element is a Lisp
600 expression which describes one command and its arguments. Lisp programs
601 can re-execute a command by calling @code{eval} with the
602 @code{command-history} element.
603
604 @ignore
605 arch-tag: ba913cfd-b70e-400f-b663-22b2c309227f
606 @end ignore