diff options
Diffstat (limited to 'src/macros.c')
-rw-r--r-- | src/macros.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/macros.c b/src/macros.c index 6d924f6c080..e5b8ab70870 100644 --- a/src/macros.c +++ b/src/macros.c @@ -28,9 +28,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include "window.h" #include "keyboard.h" -static Lisp_Object Qexecute_kbd_macro; -static Lisp_Object Qkbd_macro_termination_hook; - /* Number of successful iterations so far for innermost keyboard macro. This is not bound at each level, @@ -45,8 +42,6 @@ EMACS_INT executing_kbd_macro_iterations; Lisp_Object executing_kbd_macro; -Lisp_Object Fexecute_kbd_macro (Lisp_Object macro, Lisp_Object count, Lisp_Object loopfunc); - DEFUN ("start-kbd-macro", Fstart_kbd_macro, Sstart_kbd_macro, 1, 2, "P", doc: /* Record subsequent keyboard input, defining a keyboard macro. The commands are recorded even as they are executed. @@ -84,28 +79,21 @@ macro before appending to it. */) } else { - ptrdiff_t i; - EMACS_INT len; + int incr = 30; + ptrdiff_t i, len; bool cvt; /* Check the type of last-kbd-macro in case Lisp code changed it. */ - CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); - - len = XINT (Flength (KVAR (current_kboard, Vlast_kbd_macro))); + len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); /* Copy last-kbd-macro into the buffer, in case the Lisp code has put another macro there. */ - if (current_kboard->kbd_macro_bufsize < len + 30) - { - if (PTRDIFF_MAX < MOST_POSITIVE_FIXNUM + 30 - && PTRDIFF_MAX < len + 30) - memory_full (SIZE_MAX); - current_kboard->kbd_macro_buffer = - xpalloc (current_kboard->kbd_macro_buffer, - ¤t_kboard->kbd_macro_bufsize, - len + 30 - current_kboard->kbd_macro_bufsize, -1, - sizeof *current_kboard->kbd_macro_buffer); - } + if (current_kboard->kbd_macro_bufsize - incr < len) + current_kboard->kbd_macro_buffer = + xpalloc (current_kboard->kbd_macro_buffer, + ¤t_kboard->kbd_macro_bufsize, + len - current_kboard->kbd_macro_bufsize + incr, -1, + sizeof *current_kboard->kbd_macro_buffer); /* Must convert meta modifier when copying string to vector. */ cvt = STRINGP (KVAR (current_kboard, Vlast_kbd_macro)); @@ -289,7 +277,7 @@ pop_kbd_macro (Lisp_Object info) tem = XCDR (info); executing_kbd_macro_index = XINT (XCAR (tem)); Vreal_this_command = XCDR (tem); - Frun_hooks (1, &Qkbd_macro_termination_hook); + run_hook (Qkbd_macro_termination_hook); } DEFUN ("execute-kbd-macro", Fexecute_kbd_macro, Sexecute_kbd_macro, 1, 3, 0, |