annotate man/kmacro.texi @ 76492:540a9c31e1c6

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