Lisp_Object n;
{
int orig, orig_byte, end;
+ int count = SPECPDL_INDEX ();
+ specbind (Qinhibit_point_motion_hooks, Qt);
if (NILP (n))
XSETFASTINT (n, 1);
SET_PT_BOTH (orig, orig_byte);
+ unbind_to (count, Qnil);
+
/* Return END constrained to the current input field. */
return Fconstrain_to_field (make_number (end), make_number (orig),
XINT (n) != 1 ? Qt : Qnil,
Lisp_Object leave_after, leave_before, enter_after, enter_before;
if (fromprev)
- leave_after = textget (fromprev->plist, Qpoint_left);
+ leave_before = textget (fromprev->plist, Qpoint_left);
else
- leave_after = Qnil;
+ leave_before = Qnil;
+
if (from)
- leave_before = textget (from->plist, Qpoint_left);
+ leave_after = textget (from->plist, Qpoint_left);
else
- leave_before = Qnil;
+ leave_after = Qnil;
if (toprev)
- enter_after = textget (toprev->plist, Qpoint_entered);
+ enter_before = textget (toprev->plist, Qpoint_entered);
else
- enter_after = Qnil;
+ enter_before = Qnil;
+
if (to)
- enter_before = textget (to->plist, Qpoint_entered);
+ enter_after = textget (to->plist, Qpoint_entered);
else
- enter_before = Qnil;
+ enter_after = Qnil;
if (! EQ (leave_before, enter_before) && !NILP (leave_before))
- call2 (leave_before, make_number (old_position),
- make_number (charpos));
+ call2 (leave_before, make_number (old_position),
+ make_number (charpos));
if (! EQ (leave_after, enter_after) && !NILP (leave_after))
- call2 (leave_after, make_number (old_position),
- make_number (charpos));
+ call2 (leave_after, make_number (old_position),
+ make_number (charpos));
if (! EQ (enter_before, leave_before) && !NILP (enter_before))
- call2 (enter_before, make_number (old_position),
- make_number (charpos));
+ call2 (enter_before, make_number (old_position),
+ make_number (charpos));
if (! EQ (enter_after, leave_after) && !NILP (enter_after))
- call2 (enter_after, make_number (old_position),
- make_number (charpos));
+ call2 (enter_after, make_number (old_position),
+ make_number (charpos));
}
}
\f