aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1995-03-03 05:02:50 +0000
committerKarl Heuer1995-03-03 05:02:50 +0000
commit8b97da83a7bb3123653e7d580e901b781082c30d (patch)
tree2364cc2bc65379af7d29f3d3741eaf8625b6c826 /src
parent834ec2768cfb9caebe2e6aa3ed66b627e4f265cc (diff)
downloademacs-8b97da83a7bb3123653e7d580e901b781082c30d.tar.gz
emacs-8b97da83a7bb3123653e7d580e901b781082c30d.zip
(defining_kbd_macro): Delete; now part of perdisplay. All uses changed.
(kbd_macro_buffer, kbd_macro_ptr, kbd_macro_end): Likewise. (kbd_macro_bufsize): Likewise. (Fstart_kbd_macro): Initialize kbd_macro_buffer if not already done. (init_macros): Delete initialization of defining_kbd_macro. (syms_of_macros): Delete initialization of kbd_macro_buffer.
Diffstat (limited to 'src')
-rw-r--r--src/macros.c81
1 files changed, 36 insertions, 45 deletions
diff --git a/src/macros.c b/src/macros.c
index d5be6f4d788..75227ec6218 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -27,22 +27,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
27 27
28Lisp_Object Qexecute_kbd_macro; 28Lisp_Object Qexecute_kbd_macro;
29 29
30int defining_kbd_macro;
31
32/* The start of storage for the current keyboard macro, and its size. */
33Lisp_Object *kbd_macro_buffer;
34int kbd_macro_bufsize;
35
36/* Where to store the next keystroke of the macro. */
37Lisp_Object *kbd_macro_ptr;
38
39/* The finalized section of the macro starts at kbd_macro_buffer and
40 ends before this. This is not the same as kbd_macro_pointer, because
41 we advance this to kbd_macro_pointer when a key's command is complete.
42 This way, the keystrokes for "end-kbd-macro" are not included in the
43 macro. */
44Lisp_Object *kbd_macro_end;
45
46Lisp_Object Vlast_kbd_macro; 30Lisp_Object Vlast_kbd_macro;
47 31
48Lisp_Object Vexecuting_macro; 32Lisp_Object Vexecuting_macro;
@@ -60,23 +44,29 @@ Non-nil arg (prefix arg) means append to last macro defined;\n\
60 (append) 44 (append)
61 Lisp_Object append; 45 Lisp_Object append;
62{ 46{
63 if (defining_kbd_macro) 47 if (!NILP (current_perdisplay->defining_kbd_macro))
64 error ("Already defining kbd macro"); 48 error ("Already defining kbd macro");
65 49
50 if (!current_perdisplay->kbd_macro_buffer)
51 {
52 current_perdisplay->kbd_macro_bufsize = 30;
53 current_perdisplay->kbd_macro_buffer
54 = (Lisp_Object *)malloc (30 * sizeof (Lisp_Object));
55 }
66 update_mode_lines++; 56 update_mode_lines++;
67 if (NILP (append)) 57 if (NILP (append))
68 { 58 {
69 kbd_macro_ptr = kbd_macro_buffer; 59 current_perdisplay->kbd_macro_ptr = current_perdisplay->kbd_macro_buffer;
70 kbd_macro_end = kbd_macro_buffer; 60 current_perdisplay->kbd_macro_end = current_perdisplay->kbd_macro_buffer;
71 message("Defining kbd macro..."); 61 message("Defining kbd macro...");
72 } 62 }
73 else 63 else
74 { 64 {
75 message("Appending to kbd macro..."); 65 message("Appending to kbd macro...");
76 kbd_macro_ptr = kbd_macro_end; 66 current_perdisplay->kbd_macro_ptr = current_perdisplay->kbd_macro_end;
77 Fexecute_kbd_macro (Vlast_kbd_macro, make_number (1)); 67 Fexecute_kbd_macro (Vlast_kbd_macro, make_number (1));
78 } 68 }
79 defining_kbd_macro++; 69 current_perdisplay->defining_kbd_macro = Qt;
80 70
81 return Qnil; 71 return Qnil;
82} 72}
@@ -94,7 +84,7 @@ An argument of zero means repeat until error.")
94 (arg) 84 (arg)
95 Lisp_Object arg; 85 Lisp_Object arg;
96{ 86{
97 if (!defining_kbd_macro) 87 if (NILP (current_perdisplay->defining_kbd_macro))
98 error ("Not defining kbd macro."); 88 error ("Not defining kbd macro.");
99 89
100 if (NILP (arg)) 90 if (NILP (arg))
@@ -102,12 +92,14 @@ An argument of zero means repeat until error.")
102 else 92 else
103 CHECK_NUMBER (arg, 0); 93 CHECK_NUMBER (arg, 0);
104 94
105 if (defining_kbd_macro) 95 if (!NILP (current_perdisplay->defining_kbd_macro))
106 { 96 {
107 defining_kbd_macro = 0; 97 current_perdisplay->defining_kbd_macro = Qnil;
108 update_mode_lines++; 98 update_mode_lines++;
109 Vlast_kbd_macro = make_event_array (kbd_macro_end - kbd_macro_buffer, 99 Vlast_kbd_macro
110 kbd_macro_buffer); 100 = make_event_array ((current_perdisplay->kbd_macro_end
101 - current_perdisplay->kbd_macro_buffer),
102 current_perdisplay->kbd_macro_buffer);
111 message("Keyboard macro defined"); 103 message("Keyboard macro defined");
112 } 104 }
113 105
@@ -127,19 +119,24 @@ An argument of zero means repeat until error.")
127store_kbd_macro_char (c) 119store_kbd_macro_char (c)
128 Lisp_Object c; 120 Lisp_Object c;
129{ 121{
130 if (defining_kbd_macro) 122 if (!NILP (current_perdisplay->defining_kbd_macro))
131 { 123 {
132 if (kbd_macro_ptr - kbd_macro_buffer == kbd_macro_bufsize) 124 if ((current_perdisplay->kbd_macro_ptr
125 - current_perdisplay->kbd_macro_buffer)
126 == current_perdisplay->kbd_macro_bufsize)
133 { 127 {
134 register Lisp_Object *new 128 register Lisp_Object *new;
135 = (Lisp_Object *) xrealloc (kbd_macro_buffer, 129 current_perdisplay->kbd_macro_bufsize *= 2;
136 ((kbd_macro_bufsize *= 2) 130 new = (Lisp_Object *)xrealloc (current_perdisplay->kbd_macro_buffer,
137 * sizeof (Lisp_Object))); 131 (current_perdisplay->kbd_macro_bufsize
138 kbd_macro_ptr += new - kbd_macro_buffer; 132 * sizeof (Lisp_Object)));
139 kbd_macro_end += new - kbd_macro_buffer; 133 current_perdisplay->kbd_macro_ptr
140 kbd_macro_buffer = new; 134 += new - current_perdisplay->kbd_macro_buffer;
135 current_perdisplay->kbd_macro_end
136 += new - current_perdisplay->kbd_macro_buffer;
137 current_perdisplay->kbd_macro_buffer = new;
141 } 138 }
142 *kbd_macro_ptr++ = c; 139 *current_perdisplay->kbd_macro_ptr++ = c;
143 } 140 }
144} 141}
145 142
@@ -148,7 +145,7 @@ store_kbd_macro_char (c)
148 145
149finalize_kbd_macro_chars () 146finalize_kbd_macro_chars ()
150{ 147{
151 kbd_macro_end = kbd_macro_ptr; 148 current_perdisplay->kbd_macro_end = current_perdisplay->kbd_macro_ptr;
152} 149}
153 150
154DEFUN ("call-last-kbd-macro", Fcall_last_kbd_macro, Scall_last_kbd_macro, 151DEFUN ("call-last-kbd-macro", Fcall_last_kbd_macro, Scall_last_kbd_macro,
@@ -162,7 +159,7 @@ defining others, use \\[name-last-kbd-macro].")
162 (prefix) 159 (prefix)
163 Lisp_Object prefix; 160 Lisp_Object prefix;
164{ 161{
165 if (defining_kbd_macro) 162 if (! NILP (current_perdisplay->defining_kbd_macro))
166 error ("Can't execute anonymous macro while defining one"); 163 error ("Can't execute anonymous macro while defining one");
167 else if (NILP (Vlast_kbd_macro)) 164 else if (NILP (Vlast_kbd_macro))
168 error ("No kbd macro has been defined"); 165 error ("No kbd macro has been defined");
@@ -232,17 +229,11 @@ COUNT is a repeat count, or nil for once, or 0 for infinite loop.")
232init_macros () 229init_macros ()
233{ 230{
234 Vlast_kbd_macro = Qnil; 231 Vlast_kbd_macro = Qnil;
235 defining_kbd_macro = 0;
236
237 Vexecuting_macro = Qnil; 232 Vexecuting_macro = Qnil;
238} 233}
239 234
240syms_of_macros () 235syms_of_macros ()
241{ 236{
242 kbd_macro_bufsize = 100;
243 kbd_macro_buffer = (Lisp_Object *) malloc (kbd_macro_bufsize
244 * sizeof (Lisp_Object));
245
246 Qexecute_kbd_macro = intern ("execute-kbd-macro"); 237 Qexecute_kbd_macro = intern ("execute-kbd-macro");
247 staticpro (&Qexecute_kbd_macro); 238 staticpro (&Qexecute_kbd_macro);
248 239
@@ -251,7 +242,7 @@ syms_of_macros ()
251 defsubr (&Scall_last_kbd_macro); 242 defsubr (&Scall_last_kbd_macro);
252 defsubr (&Sexecute_kbd_macro); 243 defsubr (&Sexecute_kbd_macro);
253 244
254 DEFVAR_BOOL ("defining-kbd-macro", &defining_kbd_macro, 245 DEFVAR_DISPLAY ("defining-kbd-macro", defining_kbd_macro,
255 "Non-nil while a keyboard macro is being defined. Don't set this!"); 246 "Non-nil while a keyboard macro is being defined. Don't set this!");
256 247
257 DEFVAR_LISP ("executing-macro", &Vexecuting_macro, 248 DEFVAR_LISP ("executing-macro", &Vexecuting_macro,