2001-03-15 Gerd Moellmann <gerd@gnu.org>
+ * keyboard.c (timer_check): Preserve the value of deactivate-mark.
+ (command_loop_1): Undo last change.
+
* xterm.c (fast_find_position): Return the correct vpos.
* data.c (store_symval_forwarding): Add parameter BUF. If BUF is
this variable differently. */
Vdisable_point_adjustment = Qnil;
- /* Process filters and timers may have messed with deactivate-mark.
- reset it before we execute the command. */
- Vdeactivate_mark = Qnil;
-
/* Execute the command. */
Vthis_command = cmd;
if (NILP (vector[0]))
{
int was_locked = single_kboard;
- int count = specpdl_ptr - specpdl;
+ int count = BINDING_STACK_SIZE ();
+ Lisp_Object old_deactivate_mark = Vdeactivate_mark;
/* Mark the timer as triggered to prevent problems if the lisp
code fails to reschedule it right. */
vector[0] = Qt;
specbind (Qinhibit_quit, Qt);
-
+
call1 (Qtimer_event_handler, chosen_timer);
+ Vdeactivate_mark = old_deactivate_mark;
timers_run++;
-
unbind_to (count, Qnil);
/* Resume allowing input from any kboard, if that was true before. */