summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog8
-rw-r--r--src/editfns.c4
-rw-r--r--src/intervals.c34
3 files changed, 30 insertions, 16 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 14a172d0b37..066cd655696 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2006-05-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * intervals.c (set_point_both): Fix mixup before before and after
+ in variable names.
+
+ * editfns.c (Fline_beginning_position): Inhibit point-motion hooks
+ while setting point temporarily.
+
2006-05-11 Richard Stallman <rms@gnu.org>
* lread.c (readevalloop): Abort if START non-nil for non-buffer input.
diff --git a/src/editfns.c b/src/editfns.c
index b74fd2a41c2..85ce94c8f8a 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -823,6 +823,8 @@ This function does not move point. */)
Lisp_Object n;
{
int orig, orig_byte, end;
+ int count = SPECPDL_INDEX ();
+ specbind (Qinhibit_point_motion_hooks, Qt);
if (NILP (n))
XSETFASTINT (n, 1);
@@ -836,6 +838,8 @@ This function does not move point. */)
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,
diff --git a/src/intervals.c b/src/intervals.c
index 8bbab5a2a28..086db4db6bd 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -2196,36 +2196,38 @@ set_point_both (buffer, charpos, bytepos)
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));
}
}