(debug): Call with-timeout-suspend and with-timeout-unsuspend.
[bpt/emacs.git] / man / kmacro.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 Keyboard Macros, Files, Fixit, Top
6 @chapter Keyboard Macros
7 @cindex defining keyboard macros
8 @cindex keyboard macro
9
10 In this chapter we describe how a sequence of editing commands can
11 be recorded and repeated multiple times.
12
13 A @dfn{keyboard macro} is a command defined by the user to stand for
14 another sequence of keys. For example, if you discover that you are
15 about to type @kbd{C-n C-d} forty times, you can speed your work by
16 defining a keyboard macro to do @kbd{C-n C-d} and calling it with a
17 repeat count of forty.
18
19 You define a keyboard macro while executing the commands which are the
20 definition. Put differently, as you define a keyboard macro, the
21 definition is being executed for the first time. This way, you can see
22 what the effects of your commands are, so that you don't have to figure
23 them out in your head. When you are finished, the keyboard macro is
24 defined and also has been, in effect, executed once. You can then do the
25 whole thing over again by invoking the macro.
26
27 Keyboard macros differ from ordinary Emacs commands in that they are
28 written in the Emacs command language rather than in Lisp. This makes it
29 easier for the novice to write them, and makes them more convenient as
30 temporary hacks. However, the Emacs command language is not powerful
31 enough as a programming language to be useful for writing anything
32 intelligent or general. For such things, Lisp must be used.
33
34 @menu
35 * Basic Keyboard Macro:: Defining and running keyboard macros.
36 * Keyboard Macro Ring:: Where previous keyboard macros are saved.
37 * Keyboard Macro Counter:: Inserting incrementing numbers in macros.
38 * Keyboard Macro Query:: Making keyboard macros do different things each time.
39 * Save Keyboard Macro:: Giving keyboard macros names; saving them in files.
40 * Edit Keyboard Macro:: Editing keyboard macros.
41 * Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard
42 macro.
43 @end menu
44
45 @node Basic Keyboard Macro
46 @section Basic Use
47
48 @table @kbd
49 @item C-x (
50 @itemx @key{F3}
51 Start defining a keyboard macro (@code{kmacro-start-macro}).
52 @item C-x )
53 End the definition of a keyboard macro (@code{kmacro-end-macro}).
54 @item C-x e
55 Execute the most recent keyboard macro (@code{kmacro-end-and-call-macro}).
56 First end the definition of the keyboard macro, if currently defining it.
57 To immediately execute the keyboard macro again, just repeat the @kbd{e}.
58 @item @key{F4}
59 If a keyboard macro is being defined, end the definition; otherwise,
60 execute the most recent keyboard macro
61 (@code{kmacro-end-or-call-macro}).
62 @item C-u C-x (
63 Re-execute last keyboard macro, then add more keys to its definition.
64 @item C-u C-u C-x (
65 Add more keys to the last keyboard macro without re-executing it.
66 @item C-x q
67 When this point is reached during macro execution, ask for confirmation
68 (@code{kbd-macro-query}).
69 @item C-x C-k n
70 Give a command name (for the duration of the session) to the most
71 recently defined keyboard macro (@code{kmacro-name-last-macro}).
72 @item C-x C-k b
73 Bind the most recently defined keyboard macro to a key sequence (for
74 the duration of the session) (@code{kmacro-bind-to-key}).
75 @item M-x insert-kbd-macro
76 Insert in the buffer a keyboard macro's definition, as Lisp code.
77 @item C-x C-k e
78 Edit a previously defined keyboard macro (@code{edit-kbd-macro}).
79 @item C-x C-k r
80 Run the last keyboard macro on each line that begins in the region
81 (@code{apply-macro-to-region-lines}).
82 @end table
83
84 @kindex C-x (
85 @kindex C-x )
86 @kindex C-x e
87 @findex kmacro-start-macro
88 @findex kmacro-end-macro
89 @findex kmacro-end-and-call-macro
90 To start defining a keyboard macro, type the @kbd{C-x (} command
91 (@code{kmacro-start-macro}). From then on, your keys continue to be
92 executed, but also become part of the definition of the macro. @samp{Def}
93 appears in the mode line to remind you of what is going on. When you are
94 finished, the @kbd{C-x )} command (@code{kmacro-end-macro}) terminates the
95 definition (without becoming part of it!). For example,
96
97 @example
98 C-x ( M-f foo C-x )
99 @end example
100
101 @noindent
102 defines a macro to move forward a word and then insert @samp{foo}.
103
104 The macro thus defined can be invoked again with the @kbd{C-x e}
105 command (@code{kmacro-end-and-call-macro}), which may be given a
106 repeat count as a numeric argument to execute the macro many times.
107 If you enter @kbd{C-x e} while defining a macro, the macro is
108 terminated and executed immediately.
109
110 After executing the macro with @kbd{C-x e}, you can use @kbd{e}
111 repeatedly to immediately repeat the macro one or more times. For example,
112
113 @example
114 C-x ( xyz C-x e e e
115 @end example
116
117 @noindent
118 inserts @samp{xyzxyzxyzxyz} in the current buffer.
119
120 @kbd{C-x )} can also be given a repeat count as an argument, in
121 which case it repeats the macro that many times right after defining
122 it, but defining the macro counts as the first repetition (since it is
123 executed as you define it). Therefore, giving @kbd{C-x )} an argument
124 of 4 executes the macro immediately 3 additional times. An argument
125 of zero to @kbd{C-x e} or @kbd{C-x )} means repeat the macro
126 indefinitely (until it gets an error or you type @kbd{C-g} or, on
127 MS-DOS, @kbd{C-@key{BREAK}}).
128
129 The key @key{F4} is like a combination of @kbd{C-x )} and @kbd{C-x
130 e}. If you're defining a macro, @key{F4} ends the definition.
131 Otherwise it executes the last macro.
132
133 If you wish to repeat an operation at regularly spaced places in the
134 text, define a macro and include as part of the macro the commands to move
135 to the next place you want to use it. For example, if you want to change
136 each line, you should position point at the start of a line, and define a
137 macro to change that line and leave point at the start of the next line.
138 Then repeating the macro will operate on successive lines.
139
140 When a command reads an argument with the minibuffer, your
141 minibuffer input becomes part of the macro along with the command. So
142 when you replay the macro, the command gets the same argument as
143 when you entered the macro. For example,
144
145 @example
146 C-x ( C-a C-@key{SPC} C-n M-w C-x b f o o @key{RET} C-y C-x b @key{RET} C-x )
147 @end example
148
149 @noindent
150 defines a macro that copies the current line into the buffer
151 @samp{foo}, then returns to the original buffer.
152
153 You can use function keys in a keyboard macro, just like keyboard
154 keys. You can even use mouse events, but be careful about that: when
155 the macro replays the mouse event, it uses the original mouse position
156 of that event, the position that the mouse had while you were defining
157 the macro. The effect of this may be hard to predict. (Using the
158 current mouse position would be even less predictable.)
159
160 One thing that doesn't always work well in a keyboard macro is the
161 command @kbd{C-M-c} (@code{exit-recursive-edit}). When this command
162 exits a recursive edit that started within the macro, it works as you'd
163 expect. But if it exits a recursive edit that started before you
164 invoked the keyboard macro, it also necessarily exits the keyboard macro
165 as part of the process.
166
167 After you have terminated the definition of a keyboard macro, you can add
168 to the end of its definition by typing @kbd{C-u C-x (}. This is equivalent
169 to plain @kbd{C-x (} followed by retyping the whole definition so far. As
170 a consequence it re-executes the macro as previously defined.
171
172 You can also add to the end of the definition of the last keyboard
173 macro without re-executing it by typing @kbd{C-u C-u C-x (}.
174
175 The variable @code{kmacro-execute-before-append} specifies whether
176 a single @kbd{C-u} prefix causes the existing macro to be re-executed
177 before appending to it.
178
179 @findex apply-macro-to-region-lines
180 @kindex C-x C-k r
181 The command @kbd{C-x C-k r} (@code{apply-macro-to-region-lines})
182 repeats the last defined keyboard macro on each line that begins in
183 the region. It does this line by line, by moving point to the
184 beginning of the line and then executing the macro.
185
186 @node Keyboard Macro Ring
187 @section The Keyboard Macro Ring
188
189 All defined keyboard macros are recorded in the ``keyboard macro ring'',
190 a list of sequences of keys. There is only one keyboard macro ring,
191 shared by all buffers.
192
193 All commands which operate on the keyboard macro ring use the
194 same @kbd{C-x C-k} prefix. Most of these commands can be executed and
195 repeated immediately after each other without repeating the @kbd{C-x
196 C-k} prefix. For example,
197
198 @example
199 C-x C-k C-p C-p C-k C-k C-k C-n C-n C-k C-p C-k C-d
200 @end example
201
202 @noindent
203 will rotate the keyboard macro ring to the ``second previous'' macro,
204 execute the resulting head macro three times, rotate back to the
205 original head macro, execute that once, rotate to the ``previous''
206 macro, execute that, and finally delete it from the macro ring.
207
208 @findex kmacro-end-or-call-macro-repeat
209 @kindex C-x C-k C-k
210 The command @kbd{C-x C-k C-k} (@code{kmacro-end-or-call-macro-repeat})
211 executes the keyboard macro at the head of the macro ring. You can
212 repeat the macro immediately by typing another @kbd{C-k}, or you can
213 rotate the macro ring immediately by typing @kbd{C-n} or @kbd{C-p}.
214
215 When a keyboard macro is being defined, @kbd{C-x C-k C-k} behaves like
216 @kbd{C-x )} except that, immediately afterward, you can use most key
217 bindings of this section without the @kbd{C-x C-k} prefix. For
218 instance, another @kbd{C-k} will re-execute the macro.
219
220 @findex kmacro-cycle-ring-next
221 @kindex C-x C-k C-n
222 @findex kmacro-cycle-ring-previous
223 @kindex C-x C-k C-p
224 The commands @kbd{C-x C-k C-n} (@code{kmacro-cycle-ring-next}) and
225 @kbd{C-x C-k C-p} (@code{kmacro-cycle-ring-previous}) rotate the
226 macro ring, bringing the next or previous keyboard macro to the head
227 of the macro ring. The definition of the new head macro is displayed
228 in the echo area. You can continue to rotate the macro ring
229 immediately by repeating just @kbd{C-n} and @kbd{C-p} until the
230 desired macro is at the head of the ring. To execute the new macro
231 ring head immediately, just type @kbd{C-k}.
232
233 Note that Emacs treats the head of the macro ring as the ``last
234 defined keyboard macro''. For instance, it is the keyboard macro that
235 @kbd{C-x e} will execute.
236
237 @findex kmacro-view-macro-repeat
238 @kindex C-x C-k C-v
239
240 The command @kbd{C-x C-k C-v} (@code{kmacro-view-macro-repeat})
241 displays the last keyboard macro, or when repeated (with @kbd{C-v}),
242 it displays the previous macro on the macro ring, just like @kbd{C-x
243 C-k C-p}, but without actually rotating the macro ring. If you enter
244 @kbd{C-k} immediately after displaying a macro from the ring, that
245 macro is executed, but still without altering the macro ring.
246
247 So while e.g. @kbd{C-x C-k C-p C-p C-p C-k C-k} makes the 3rd previous
248 macro the current macro and executes it twice, @kbd{C-x C-k C-v C-v
249 C-v C-k C-k} will display and execute the 3rd previous macro once and
250 then the current macro once.
251
252 @findex kmacro-delete-ring-head
253 @kindex C-x C-k C-d
254
255 The command @kbd{C-x C-k C-d} (@code{kmacro-delete-ring-head})
256 removes and deletes the macro currently at the head of the macro
257 ring. You can use this to delete a macro that didn't work as
258 expected, or which you don't need anymore.
259
260 @findex kmacro-swap-ring
261 @kindex C-x C-k C-t
262
263 The command @kbd{C-x C-k C-t} (@code{kmacro-swap-ring})
264 interchanges the head of the macro ring with the previous element on
265 the macro ring.
266
267 @findex kmacro-call-ring-2nd-repeat
268 @kindex C-x C-k C-l
269
270 The command @kbd{C-x C-k C-l} (@code{kmacro-call-ring-2nd-repeat})
271 executes the previous (rather than the head) element on the macro ring.
272
273 @vindex kmacro-ring-max
274 The maximum number of macros stored in the keyboard macro ring is
275 determined by the customizable variable @code{kmacro-ring-max}.
276
277 @node Keyboard Macro Counter
278 @section The Keyboard Macro Counter
279
280 Each keyboard macro has an associated counter. Normally, the
281 macro counter is initialized to 0 when you start defining the macro,
282 and incremented by 1 after each insertion of the counter value;
283 that is, if you insert the macro counter twice while defining the
284 macro, the counter will increase by 2 on each repetition of the macro.
285
286 @findex kmacro-insert-counter
287 @kindex C-x C-k C-i
288 The command @kbd{C-x C-k C-i} (@code{kmacro-insert-counter}) inserts
289 the current value of the keyboard macro counter and increments the
290 counter by 1. You can use a numeric prefix argument to specify a
291 different increment. If you just specify a @kbd{C-u} prefix, the last
292 inserted counter value is repeated and the counter is not incremented.
293 For example, if you enter the following sequence while defining a macro
294
295 @example
296 C-x C-k C-i C-x C-k C-i C-u C-x C-k C-i C-x C-k C-i
297 @end example
298
299 @noindent
300 the text @samp{0112} is inserted in the buffer, and for the first and
301 second execution of the macro @samp{3445} and @samp{6778} are
302 inserted.
303
304 This command usually only makes sense while defining a keyboard macro.
305 But its behavior when no keyboard macro is being defined or executed
306 is predictable: it inserts and increments the counter of the head of
307 the keyboard macro ring.
308
309 @findex kmacro-set-counter
310 @kindex C-x C-k C-c
311 The command @kbd{C-x C-k C-c} (@code{kmacro-set-counter}) prompts
312 for the initial value of the keyboard macro counter if you use it
313 before you define a keyboard macro. If you use it before executing a
314 keyboard macro, it resets that macro's counter. If you use it while
315 defining a keyboard macro, then the macro counter gets reset to that same
316 value on each repetition of the macro. Rather than having the command
317 prompt for a value, you can also specify the value with a numeric
318 prefix argument. If you just specify a @kbd{C-u} prefix, the counter
319 is reset to the value it had prior to the current repetition of the
320 macro (undoing any increments so far in this repetition). If you just
321 specify a @kbd{C-u} prefix while no macro is being defined or executed,
322 then the new value of the counter is essentially unpredictable.
323
324 @findex kmacro-add-counter
325 @kindex C-x C-k C-a
326 The command @kbd{C-x C-k C-a} (@code{kmacro-add-counter}) prompts
327 for a value to add to the macro counter. You can also specify the
328 value with a numeric prefix argument. If you just specify a @kbd{C-u}
329 prefix, the counter is reset to the last value inserted by any
330 keyboard macro. Usually, this will only make sense if that value was
331 inserted during the current macro definition or repetition.
332
333 This command normally only makes sense while defining a keyboard macro.
334 But its behavior when no keyboard macro is being defined or executed
335 is predictable: it affects the counter of the head of the keyboard
336 macro ring.
337
338 @findex kmacro-set-format
339 @kindex C-x C-k C-f
340 The command @kbd{C-x C-k C-f} (@code{kmacro-set-format}) prompts for
341 the format to use when inserting the macro counter. The default
342 format is @samp{%d}, which means to insert the number in decimal
343 without any padding. You can exit with empty minibuffer to reset the
344 format to this default. You can specify any format string that the
345 @code{format} function accepts and that makes sense with a single
346 integer extra argument (@pxref{Formatting Strings,,, elisp, The Emacs
347 Lisp Reference Manual}). Do not put the format string inside double
348 quotes when you insert it in the minibuffer.
349
350 If you use this command while no keyboard macro is being defined or
351 executed, the new format affects all subsequent macro definitions.
352 Existing macros continue to use the format in effect when they were
353 defined. If you set the format while defining a keyboard macro, this
354 affects the macro being defined from that point on, but it does not
355 affect subsequent macros. Execution of the macro will, at each step,
356 use the format in effect at that step during its definition. Changes
357 to the macro format during execution of a macro, like the
358 corresponding changes during its definition, have no effect on
359 subsequent macros.
360
361 The format set by @kbd{C-x C-k C-f} does not affect insertion of
362 numbers stored in registers.
363
364 @node Keyboard Macro Query
365 @section Executing Macros with Variations
366
367 @kindex C-x q
368 @findex kbd-macro-query
369 Using @kbd{C-x q} (@code{kbd-macro-query}), you can get an effect
370 similar to that of @code{query-replace}, where the macro asks you each
371 time around whether to make a change. While defining the macro,
372 type @kbd{C-x q} at the point where you want the query to occur. During
373 macro definition, the @kbd{C-x q} does nothing, but when you run the
374 macro later, @kbd{C-x q} asks you interactively whether to continue.
375
376 The valid responses when @kbd{C-x q} asks are @key{SPC} (or @kbd{y}),
377 @key{DEL} (or @kbd{n}), @key{RET} (or @kbd{q}), @kbd{C-l} and @kbd{C-r}.
378 The answers are the same as in @code{query-replace}, though not all of
379 the @code{query-replace} options are meaningful.
380
381 These responses include @key{SPC} to continue, and @key{DEL} to skip
382 the remainder of this repetition of the macro and start right away with
383 the next repetition. @key{RET} means to skip the remainder of this
384 repetition and cancel further repetitions. @kbd{C-l} redraws the screen
385 and asks you again for a character to say what to do.
386
387 @kbd{C-r} enters a recursive editing level, in which you can perform
388 editing which is not part of the macro. When you exit the recursive
389 edit using @kbd{C-M-c}, you are asked again how to continue with the
390 keyboard macro. If you type a @key{SPC} at this time, the rest of the
391 macro definition is executed. It is up to you to leave point and the
392 text in a state such that the rest of the macro will do what you
393 want.@refill
394
395 @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument,
396 performs a completely different function. It enters a recursive edit
397 reading input from the keyboard, both when you type it during the
398 definition of the macro, and when it is executed from the macro. During
399 definition, the editing you do inside the recursive edit does not become
400 part of the macro. During macro execution, the recursive edit gives you
401 a chance to do some particularized editing on each repetition.
402 @xref{Recursive Edit}.
403
404 Another way to vary the behavior of a keyboard macro is to use a
405 register as a counter, incrementing it on each repetition of the macro.
406 @xref{RegNumbers}.
407
408 @node Save Keyboard Macro
409 @section Naming and Saving Keyboard Macros
410
411 @cindex saving keyboard macros
412 @findex kmacro-name-last-macro
413 @kindex C-x C-k n
414 If you wish to save a keyboard macro for later use, you can give it
415 a name using @kbd{C-x C-k n} (@code{kmacro-name-last-macro}).
416 This reads a name as an argument using the minibuffer and defines that
417 name to execute the last keyboard macro, in its current form. (If you
418 later add to the definition of this macro, that does not alter the
419 name's definition as a macro.) The macro name is a Lisp symbol, and
420 defining it in this way makes it a valid command name for calling with
421 @kbd{M-x} or for binding a key to with @code{global-set-key}
422 (@pxref{Keymaps}). If you specify a name that has a prior definition
423 other than a keyboard macro, an error message is shown and nothing is
424 changed.
425
426 @cindex binding keyboard macros
427 @findex kmacro-bind-to-key
428 @kindex C-x C-k b
429 You can also bind the last keyboard macro (in its current form) to a
430 key, using @kbd{C-x C-k b} (@code{kmacro-bind-to-key}) followed by the
431 key sequence you want to bind. You can bind to any key sequence in
432 the global keymap, but since most key sequences already have other
433 bindings, you should select the key sequence carefully. If you try to
434 bind to a key sequence with an existing binding (in any keymap), this
435 command asks you for confirmation before replacing the existing binding.
436
437 To avoid problems caused by overriding existing bindings, the key
438 sequences @kbd{C-x C-k 0} through @kbd{C-x C-k 9} and @kbd{C-x C-k A}
439 through @kbd{C-x C-k Z} are reserved for your own keyboard macro
440 bindings. In fact, to bind to one of these key sequences, you only
441 need to type the digit or letter rather than the whole key sequences.
442 For example,
443
444 @example
445 C-x C-k b 4
446 @end example
447
448 @noindent
449 will bind the last keyboard macro to the key sequence @kbd{C-x C-k 4}.
450
451 @findex insert-kbd-macro
452 Once a macro has a command name, you can save its definition in a file.
453 Then it can be used in another editing session. First, visit the file
454 you want to save the definition in. Then use this command:
455
456 @example
457 M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
458 @end example
459
460 @noindent
461 This inserts some Lisp code that, when executed later, will define the
462 same macro with the same definition it has now. (You need not
463 understand Lisp code to do this, because @code{insert-kbd-macro} writes
464 the Lisp code for you.) Then save the file. You can load the file
465 later with @code{load-file} (@pxref{Lisp Libraries}). If the file you
466 save in is your init file @file{~/.emacs} (@pxref{Init File}) then the
467 macro will be defined each time you run Emacs.
468
469 If you give @code{insert-kbd-macro} a numeric argument, it makes
470 additional Lisp code to record the keys (if any) that you have bound
471 to @var{macroname}, so that the macro will be reassigned the same keys
472 when you load the file.
473
474 @node Edit Keyboard Macro
475 @section Editing a Keyboard Macro
476
477 @findex kmacro-edit-macro
478 @kindex C-x C-k C-e
479 @kindex C-x C-k RET
480 You can edit the last keyboard macro by typing @kbd{C-x C-k C-e} or
481 @kbd{C-x C-k RET} (@code{kmacro-edit-macro}). This formats the macro
482 definition in a buffer and enters a specialized major mode for editing
483 it. Type @kbd{C-h m} once in that buffer to display details of how to
484 edit the macro. When you are finished editing, type @kbd{C-c C-c}.
485
486 @findex edit-kbd-macro
487 @kindex C-x C-k e
488 You can edit a named keyboard macro or a macro bound to a key by typing
489 @kbd{C-x C-k e} (@code{edit-kbd-macro}). Follow that with the
490 keyboard input that you would use to invoke the macro---@kbd{C-x e} or
491 @kbd{M-x @var{name}} or some other key sequence.
492
493 @findex kmacro-edit-lossage
494 @kindex C-x C-k l
495 You can edit the last 100 keystrokes as a macro by typing
496 @kbd{C-x C-k l} (@code{kmacro-edit-lossage}).
497
498 @node Keyboard Macro Step-Edit
499 @section Stepwise Editing a Keyboard Macro
500
501 @findex kmacro-step-edit-macro
502 @kindex C-x C-k SPC
503 You can interactively replay and edit the last keyboard
504 macro, one command at a time, by typing @kbd{C-x C-k SPC}
505 (@code{kmacro-step-edit-macro}). Unless you quit the macro using
506 @kbd{q} or @kbd{C-g}, the edited macro replaces the last macro on the
507 macro ring.
508
509 This macro editing feature shows the last macro in the minibuffer
510 together with the first (or next) command to be executed, and prompts
511 you for an action. You can enter @kbd{?} to get a summary of your
512 options. These actions are available:
513
514 @itemize @bullet{}
515 @item
516 @kbd{SPC} and @kbd{y} execute the current command, and advance to the
517 next command in the keyboard macro.
518 @item
519 @kbd{n}, @kbd{d}, and @kbd{DEL} skip and delete the current command.
520 @item
521 @kbd{f} skips the current command in this execution of the keyboard
522 macro, but doesn't delete it from the macro.
523 @item
524 @kbd{TAB} executes the current command, as well as all similar
525 commands immediately following the current command; for example, TAB
526 may be used to insert a sequence of characters (corresponding to a
527 sequence of @code{self-insert-command} commands).
528 @item
529 @kbd{c} continues execution (without further editing) until the end of
530 the keyboard macro. If execution terminates normally, the edited
531 macro replaces the original keyboard macro.
532 @item
533 @kbd{C-k} skips and deletes the rest of the keyboard macro,
534 terminates step-editing, and replaces the original keyboard macro
535 with the edited macro.
536 @item
537 @kbd{q} and @kbd{C-g} cancels the step-editing of the keyboard macro;
538 discarding any changes made to the keyboard macro.
539 @item
540 @kbd{i KEY... C-j} reads and executes a series of key sequences (not
541 including the final @kbd{C-j}), and inserts them before the current
542 command in the keyboard macro, without advancing over the current
543 command.
544 @item
545 @kbd{I KEY...} reads one key sequence, executes it, and inserts it
546 before the current command in the keyboard macro, without advancing
547 over the current command.
548 @item
549 @kbd{r KEY... C-j} reads and executes a series of key sequences (not
550 including the final @kbd{C-j}), and replaces the current command in
551 the keyboard macro with them, advancing over the inserted key
552 sequences.
553 @item
554 @kbd{R KEY...} reads one key sequence, executes it, and replaces the
555 current command in the keyboard macro with that key sequence,
556 advancing over the inserted key sequence.
557 @item
558 @kbd{a KEY... C-j} executes the current command, then reads and
559 executes a series of key sequences (not including the final
560 @kbd{C-j}), and inserts them after the current command in the keyboard
561 macro; it then advances over the current command and the inserted key
562 sequences.
563 @item
564 @kbd{A KEY... C-j} executes the rest of the commands in the keyboard
565 macro, then reads and executes a series of key sequences (not
566 including the final @kbd{C-j}), and appends them at the end of the
567 keyboard macro; it then terminates the step-editing and replaces the
568 original keyboard macro with the edited macro.
569 @end itemize
570
571 @ignore
572 arch-tag: c1b0dd3b-3159-4c08-928f-52e763953e9c
573 @end ignore