annotate src/macros.c @ 23323:0800a4f84757

(underlying_strftime): Set the buffer to a nonzero value before calling strftime, and check to see whether strftime has set the buffer to zero. This lets us distinguish between an empty buffer and an error. I'm installing this patch by hand now; it will be superseded whenever the glibc sources are propagated back to fsf.org.
author Paul Eggert <eggert@twinsun.com>
date Fri, 25 Sep 1998 21:40:23 +0000
parents edcf24874ef5
children 1dd05eb0443d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Keyboard macros.
2961
e94a593c3952 Updated copyright years.
Jim Blandy <jimb@redhat.com>
parents: 2015
diff changeset
2 Copyright (C) 1985, 1986, 1993 Free Software Foundation, Inc.
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14100
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14100
diff changeset
19 Boston, MA 02111-1307, USA. */
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 2961
diff changeset
22 #include <config.h>
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "lisp.h"
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "macros.h"
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "commands.h"
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include "buffer.h"
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include "window.h"
11341
e0f3fa4e7bf3 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 11009
diff changeset
28 #include "keyboard.h"
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 Lisp_Object Qexecute_kbd_macro;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
32 /* Kbd macro currently being executed (a string or vector). */
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
33
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 Lisp_Object Vexecuting_macro;
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
35
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
36 /* Index of next character to fetch from that macro. */
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
37
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 int executing_macro_index;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
40 /* Number of successful iterations so far
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
41 for innermost keyboard macro.
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
42 This is not bound at each level,
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
43 so after an error, it describes the innermost interrupted macro. */
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
44
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
45 int executing_macro_iterations;
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
46
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
47 /* This is the macro that was executing.
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
48 This is not bound at each level,
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
49 so after an error, it describes the innermost interrupted macro.
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
50 We use it only as a kind of flag, so no need to protect it. */
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
51
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
52 Lisp_Object executing_macro;
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
53
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 Lisp_Object Fexecute_kbd_macro ();
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 DEFUN ("start-kbd-macro", Fstart_kbd_macro, Sstart_kbd_macro, 1, 1, "P",
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 "Record subsequent keyboard input, defining a keyboard macro.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 The commands are recorded even as they are executed.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 Use \\[end-kbd-macro] to finish recording and make the macro available.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 Use \\[name-last-kbd-macro] to give it a permanent name.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 Non-nil arg (prefix arg) means append to last macro defined;\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 This begins by re-executing that macro as if you typed it again.")
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (append)
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 Lisp_Object append;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
66 if (!NILP (current_kboard->defining_kbd_macro))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 error ("Already defining kbd macro");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
69 if (!current_kboard->kbd_macro_buffer)
10910
b0edc245c9b7 (defining_kbd_macro): Delete; now part of perdisplay. All uses changed.
Karl Heuer <kwzh@gnu.org>
parents: 10856
diff changeset
70 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
71 current_kboard->kbd_macro_bufsize = 30;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
72 current_kboard->kbd_macro_buffer
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
73 = (Lisp_Object *)xmalloc (30 * sizeof (Lisp_Object));
10910
b0edc245c9b7 (defining_kbd_macro): Delete; now part of perdisplay. All uses changed.
Karl Heuer <kwzh@gnu.org>
parents: 10856
diff changeset
74 }
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 update_mode_lines++;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 434
diff changeset
76 if (NILP (append))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 {
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
78 if (current_kboard->kbd_macro_bufsize > 200)
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
79 {
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
80 current_kboard->kbd_macro_bufsize = 30;
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
81 current_kboard->kbd_macro_buffer
15223
be1bc5b3f14e (Fstart_kbd_macro): Add missing xrealloc arg.
Karl Heuer <kwzh@gnu.org>
parents: 14301
diff changeset
82 = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer,
be1bc5b3f14e (Fstart_kbd_macro): Add missing xrealloc arg.
Karl Heuer <kwzh@gnu.org>
parents: 14301
diff changeset
83 30 * sizeof (Lisp_Object));
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
84 }
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
85 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
86 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer;
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
87 message ("Defining kbd macro...");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 else
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 {
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
91 message ("Appending to kbd macro...");
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
92 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_end;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
93 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro,
10935
73b02c08f17d (Fstart_kbd_macro): Access Vlast_kbd_macro via perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10910
diff changeset
94 make_number (1));
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 }
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
96 current_kboard->defining_kbd_macro = Qt;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 return Qnil;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 DEFUN ("end-kbd-macro", Fend_kbd_macro, Send_kbd_macro, 0, 1, "p",
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 "Finish defining a keyboard macro.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 The definition was started by \\[start-kbd-macro].\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 The macro is now available for use via \\[call-last-kbd-macro],\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 or it can be given a name with \\[name-last-kbd-macro] and then invoked\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 under that name.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 \n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 With numeric arg, repeat macro now that many times,\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 counting the definition just completed as the first repetition.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 An argument of zero means repeat until error.")
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
111 (repeat)
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
112 Lisp_Object repeat;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
114 if (NILP (current_kboard->defining_kbd_macro))
22915
ef9dd93e3077 (Fexecute_kbd_macro): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 20299
diff changeset
115 error ("Not defining kbd macro");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
117 if (NILP (repeat))
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
118 XSETFASTINT (repeat, 1);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 else
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
120 CHECK_NUMBER (repeat, 0);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
122 if (!NILP (current_kboard->defining_kbd_macro))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
124 current_kboard->defining_kbd_macro = Qnil;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 update_mode_lines++;
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
126 current_kboard->Vlast_kbd_macro
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
127 = make_event_array ((current_kboard->kbd_macro_end
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
128 - current_kboard->kbd_macro_buffer),
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
129 current_kboard->kbd_macro_buffer);
14301
621f53083d60 * macros.c (Fstart_kbd_macro): Use xmalloc.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
130 message ("Keyboard macro defined");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
133 if (XFASTINT (repeat) == 0)
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
134 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro, repeat);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 else
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 {
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
137 XSETINT (repeat, XINT (repeat)-1);
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
138 if (XINT (repeat) > 0)
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
139 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro, repeat);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 return Qnil;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 /* Store character c into kbd macro being defined */
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
20299
608c1a9aefc8 (store_kbd_macro_char): Define as returning nothing.
Andreas Schwab <schwab@suse.de>
parents: 16562
diff changeset
146 void
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 store_kbd_macro_char (c)
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 Lisp_Object c;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
150 if (!NILP (current_kboard->defining_kbd_macro))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
152 if ((current_kboard->kbd_macro_ptr
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
153 - current_kboard->kbd_macro_buffer)
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
154 == current_kboard->kbd_macro_bufsize)
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 {
10910
b0edc245c9b7 (defining_kbd_macro): Delete; now part of perdisplay. All uses changed.
Karl Heuer <kwzh@gnu.org>
parents: 10856
diff changeset
156 register Lisp_Object *new;
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
157 current_kboard->kbd_macro_bufsize *= 2;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
158 new = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer,
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
159 (current_kboard->kbd_macro_bufsize
10910
b0edc245c9b7 (defining_kbd_macro): Delete; now part of perdisplay. All uses changed.
Karl Heuer <kwzh@gnu.org>
parents: 10856
diff changeset
160 * sizeof (Lisp_Object)));
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
161 current_kboard->kbd_macro_ptr
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
162 += new - current_kboard->kbd_macro_buffer;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
163 current_kboard->kbd_macro_end
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
164 += new - current_kboard->kbd_macro_buffer;
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
165 current_kboard->kbd_macro_buffer = new;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 }
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
167 *current_kboard->kbd_macro_ptr++ = c;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 /* Declare that all chars stored so far in the kbd macro being defined
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 really belong to it. This is done in between editor commands. */
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
20299
608c1a9aefc8 (store_kbd_macro_char): Define as returning nothing.
Andreas Schwab <schwab@suse.de>
parents: 16562
diff changeset
174 void
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 finalize_kbd_macro_chars ()
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 {
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
177 current_kboard->kbd_macro_end = current_kboard->kbd_macro_ptr;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 }
12845
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
179
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
180 DEFUN ("cancel-kbd-macro-events", Fcancel_kbd_macro_events,
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
181 Scancel_kbd_macro_events, 0, 0, 0,
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
182 "Cancel the events added to a keyboard macro for this command.")
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
183 ()
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
184 {
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
185 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_end;
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
186 }
13773
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
187
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
188 DEFUN ("store-kbd-macro-event", Fstore_kbd_macro_event,
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
189 Sstore_kbd_macro_event, 1, 1, 0,
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
190 "Store EVENT into the keyboard macro being defined.")
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
191 (event)
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
192 Lisp_Object event;
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
193 {
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
194 store_kbd_macro_char (event);
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
195 return Qnil;
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
196 }
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 DEFUN ("call-last-kbd-macro", Fcall_last_kbd_macro, Scall_last_kbd_macro,
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 0, 1, "p",
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 "Call the last keyboard macro that you defined with \\[start-kbd-macro].\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 \n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 A prefix argument serves as a repeat count. Zero means repeat until error.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 \n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 To make a macro permanent so you can call it even after\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 defining others, use \\[name-last-kbd-macro].")
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 (prefix)
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 Lisp_Object prefix;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 {
16562
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
209 /* Don't interfere with recognition of the previous command
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
210 from before this macro started. */
22968
edcf24874ef5 (Fcall_last_kbd_macro): this_command renamed to Vthis_command.
Richard M. Stallman <rms@gnu.org>
parents: 22915
diff changeset
211 Vthis_command = current_kboard->Vlast_command;
16562
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
212
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
213 if (! NILP (current_kboard->defining_kbd_macro))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 error ("Can't execute anonymous macro while defining one");
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
215 else if (NILP (current_kboard->Vlast_kbd_macro))
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 error ("No kbd macro has been defined");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 else
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
218 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro, prefix);
16562
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
219
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
220 /* command_loop_1 sets this to nil before it returns;
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
221 get back the last command within the macro
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
222 so that it can be last, again, after we return. */
22968
edcf24874ef5 (Fcall_last_kbd_macro): this_command renamed to Vthis_command.
Richard M. Stallman <rms@gnu.org>
parents: 22915
diff changeset
223 Vthis_command = current_kboard->Vlast_command;
16562
4999fc12564e (Fcall_last_kbd_macro): Set this_command from last_command
Richard M. Stallman <rms@gnu.org>
parents: 15976
diff changeset
224
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 return Qnil;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 /* Restore Vexecuting_macro and executing_macro_index - called when
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 the unwind-protect in Fexecute_kbd_macro gets invoked. */
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
230
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 static Lisp_Object
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 pop_kbd_macro (info)
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 Lisp_Object info;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 Lisp_Object tem;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 Vexecuting_macro = Fcar (info);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 tem = Fcdr (info);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 executing_macro_index = XINT (tem);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 return Qnil;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 DEFUN ("execute-kbd-macro", Fexecute_kbd_macro, Sexecute_kbd_macro, 1, 2, 0,
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 "Execute MACRO as string of editor command characters.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 If MACRO is a symbol, its function definition is used.\n\
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 COUNT is a repeat count, or nil for once, or 0 for infinite loop.")
14081
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
246 (macro, count)
addc50fc3981 (Fend_kbd_macro, Fexecute_kbd_macro): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13773
diff changeset
247 Lisp_Object macro, count;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 Lisp_Object final;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 Lisp_Object tem;
14094
e5e4fe8e968f (Fexecute_kbd_macro): Local var `pdlcount' renamed from
Karl Heuer <kwzh@gnu.org>
parents: 14081
diff changeset
251 int pdlcount = specpdl_ptr - specpdl;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 int repeat = 1;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 struct gcpro gcpro1;
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
254 int success_count = 0;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255
14100
0950fefc4bd1 (Fexecute_kbd_macro): Reindent properly.
Erik Naggum <erik@naggum.no>
parents: 14094
diff changeset
256 if (!NILP (count))
0950fefc4bd1 (Fexecute_kbd_macro): Reindent properly.
Erik Naggum <erik@naggum.no>
parents: 14094
diff changeset
257 {
0950fefc4bd1 (Fexecute_kbd_macro): Reindent properly.
Erik Naggum <erik@naggum.no>
parents: 14094
diff changeset
258 count = Fprefix_numeric_value (count);
0950fefc4bd1 (Fexecute_kbd_macro): Reindent properly.
Erik Naggum <erik@naggum.no>
parents: 14094
diff changeset
259 repeat = XINT (count);
0950fefc4bd1 (Fexecute_kbd_macro): Reindent properly.
Erik Naggum <erik@naggum.no>
parents: 14094
diff changeset
260 }
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
262 final = indirect_function (macro);
9122
9ba3f17d6631 (Fexecute_kbd_macro): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
263 if (!STRINGP (final) && !VECTORP (final))
22915
ef9dd93e3077 (Fexecute_kbd_macro): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 20299
diff changeset
264 error ("Keyboard macros must be strings or vectors");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265
9314
2c681685646b (Fend_kbd_macro, Fexecute_kbd_macro): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9122
diff changeset
266 XSETFASTINT (tem, executing_macro_index);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 tem = Fcons (Vexecuting_macro, tem);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 record_unwind_protect (pop_kbd_macro, tem);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 GCPRO1 (final);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 do
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 Vexecuting_macro = final;
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
274 executing_macro = final;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 executing_macro_index = 0;
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
12119
d7b51659a56d (Fexecute_kbd_macro): Vprefix_arg is now part of kboard.
Karl Heuer <kwzh@gnu.org>
parents: 11341
diff changeset
277 current_kboard->Vprefix_arg = Qnil;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 command_loop_1 ();
1682
af0995b9b142 * macros.c (Fend_kbd_macro): Don't use XFASTINT to check if arg is
Jim Blandy <jimb@redhat.com>
parents: 647
diff changeset
279
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
280 executing_macro_iterations = ++success_count;
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
281
1682
af0995b9b142 * macros.c (Fend_kbd_macro): Don't use XFASTINT to check if arg is
Jim Blandy <jimb@redhat.com>
parents: 647
diff changeset
282 QUIT;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 }
9122
9ba3f17d6631 (Fexecute_kbd_macro): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
284 while (--repeat
9ba3f17d6631 (Fexecute_kbd_macro): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
285 && (STRINGP (Vexecuting_macro) || VECTORP (Vexecuting_macro)));
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286
15968
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
287 executing_macro = Qnil;
231e14e38946 (executing_macro_iterations, executing_macro): New vars.
Richard M. Stallman <rms@gnu.org>
parents: 15223
diff changeset
288
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 UNGCPRO;
14094
e5e4fe8e968f (Fexecute_kbd_macro): Local var `pdlcount' renamed from
Karl Heuer <kwzh@gnu.org>
parents: 14081
diff changeset
290 return unbind_to (pdlcount, Qnil);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292
20299
608c1a9aefc8 (store_kbd_macro_char): Define as returning nothing.
Andreas Schwab <schwab@suse.de>
parents: 16562
diff changeset
293 void
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 init_macros ()
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 Vexecuting_macro = Qnil;
15976
e6d654e1fa2a (init_macros): Initialize executing_macro, too.
Erik Naggum <erik@naggum.no>
parents: 15968
diff changeset
297 executing_macro = Qnil;
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299
20299
608c1a9aefc8 (store_kbd_macro_char): Define as returning nothing.
Andreas Schwab <schwab@suse.de>
parents: 16562
diff changeset
300 void
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 syms_of_macros ()
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 Qexecute_kbd_macro = intern ("execute-kbd-macro");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 staticpro (&Qexecute_kbd_macro);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 defsubr (&Sstart_kbd_macro);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 defsubr (&Send_kbd_macro);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 defsubr (&Scall_last_kbd_macro);
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 defsubr (&Sexecute_kbd_macro);
12845
9ee2045cda62 (Fcancel_kbd_macro_events): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12119
diff changeset
310 defsubr (&Scancel_kbd_macro_events);
13773
7d50ac085b12 (Fstore_kbd_macro_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12845
diff changeset
311 defsubr (&Sstore_kbd_macro_event);
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
313 DEFVAR_KBOARD ("defining-kbd-macro", defining_kbd_macro,
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 "Non-nil while a keyboard macro is being defined. Don't set this!");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 DEFVAR_LISP ("executing-macro", &Vexecuting_macro,
10935
73b02c08f17d (Fstart_kbd_macro): Access Vlast_kbd_macro via perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10910
diff changeset
317 "Currently executing keyboard macro (string or vector); nil if none executing.");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 DEFVAR_LISP_NOPRO ("executing-kbd-macro", &Vexecuting_macro,
10935
73b02c08f17d (Fstart_kbd_macro): Access Vlast_kbd_macro via perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10910
diff changeset
320 "Currently executing keyboard macro (string or vector); nil if none executing.");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321
11009
399469e5eb5b Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10992
diff changeset
322 DEFVAR_KBOARD ("last-kbd-macro", Vlast_kbd_macro,
10935
73b02c08f17d (Fstart_kbd_macro): Access Vlast_kbd_macro via perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10910
diff changeset
323 "Last kbd macro defined, as a string or vector; nil if none defined.");
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 }
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
20299
608c1a9aefc8 (store_kbd_macro_char): Define as returning nothing.
Andreas Schwab <schwab@suse.de>
parents: 16562
diff changeset
326 void
246
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 keys_of_macros ()
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 {
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 initial_define_key (control_x_map, ('e'), "call-last-kbd-macro");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 initial_define_key (control_x_map, ('('), "start-kbd-macro");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 initial_define_key (control_x_map, (')'), "end-kbd-macro");
81e375c3eb58 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 }