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