+2007-08-29 Martin Rudalics <rudalics@gmx.at>
+
+ * keyboard.h (struct kboard): New elt Vlast_repeatable_command.
+
+ * keyboard.c (syms_of_keyboard): Set up new Lisp variable
+ last-repeatable-command.
+ (init_kboard): Initialize Vlast_repeatable_command.
+ (command_loop_1): Set it to real_this_command unless that was
+ bound to an input event.
+ (mark_kboards): Mark it.
+
2007-08-28 Juanma Barranquero <lekktu@gmail.com>
* image.c (syms_of_image) <image-library-alist, cross-disabled-images>:
/* Do this after running Vpost_command_hook, for consistency. */
current_kboard->Vlast_command = Vthis_command;
current_kboard->Vreal_last_command = real_this_command;
+ if (!CONSP (last_command_char))
+ current_kboard->Vlast_repeatable_command = real_this_command;
while (1)
{
{
current_kboard->Vlast_command = Vthis_command;
current_kboard->Vreal_last_command = real_this_command;
+ if (!CONSP (last_command_char))
+ current_kboard->Vlast_repeatable_command = real_this_command;
cancel_echoing ();
this_command_key_count = 0;
this_command_key_count_reset = 0;
kb->Voverriding_terminal_local_map = Qnil;
kb->Vlast_command = Qnil;
kb->Vreal_last_command = Qnil;
+ kb->Vlast_repeatable_command = Qnil;
kb->Vprefix_arg = Qnil;
kb->Vlast_prefix_arg = Qnil;
kb->kbd_queue = Qnil;
DEFVAR_KBOARD ("real-last-command", Vreal_last_command,
doc: /* Same as `last-command', but never altered by Lisp code. */);
+ DEFVAR_KBOARD ("last-repeatable-command", Vlast_repeatable_command,
+ doc: /* Last command that may be repeated.
+The last command executed that was not bound to an input event.
+This is the command `repeat' will try to repeat. */);
+
DEFVAR_LISP ("this-command", &Vthis_command,
doc: /* The command now being executed.
The command can set this variable; whatever is put here
mark_object (kb->Voverriding_terminal_local_map);
mark_object (kb->Vlast_command);
mark_object (kb->Vreal_last_command);
+ mark_object (kb->Vlast_repeatable_command);
mark_object (kb->Vprefix_arg);
mark_object (kb->Vlast_prefix_arg);
mark_object (kb->kbd_queue);