changeset 107658:6db6f99911e0

Restore original behavior of move_it_in_display_line_to when !bidi_p. xdisp.c (BUFFER_POS_REACHED_P, move_it_in_display_line_to): Restore original behavior when the iterator is not bidi_p.
author Eli Zaretskii <eliz@gnu.org>
date Tue, 30 Mar 2010 15:16:49 -0400
parents 5e0627e338dc
children 5540f668f288 fa375bb9de46
files src/ChangeLog src/xdisp.c
diffstat 2 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Mar 30 10:40:04 2010 -0700
+++ b/src/ChangeLog	Tue Mar 30 15:16:49 2010 -0400
@@ -1,3 +1,8 @@
+2010-03-30  Eli Zaretskii  <eliz@gnu.org>
+
+	* xdisp.c (BUFFER_POS_REACHED_P, move_it_in_display_line_to):
+	Restore original behavior when the iterator is not bidi_p.
+
 2010-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* xdisp.c (syms_of_xdisp): Use intern_c_string instead of intern.
--- a/src/xdisp.c	Tue Mar 30 10:40:04 2010 -0700
+++ b/src/xdisp.c	Tue Mar 30 15:16:49 2010 -0400
@@ -6999,7 +6999,8 @@
 #define BUFFER_POS_REACHED_P()					\
   ((op & MOVE_TO_POS) != 0					\
    && BUFFERP (it->object)					\
-   && IT_CHARPOS (*it) == to_charpos				\
+   && (IT_CHARPOS (*it) == to_charpos				\
+       || (!it->bidi_p && IT_CHARPOS (*it) > to_charpos))	\
    && (it->method == GET_FROM_BUFFER				\
        || (it->method == GET_FROM_DISPLAY_VECTOR		\
 	   && it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))
@@ -7023,14 +7024,16 @@
       if ((op & MOVE_TO_POS) != 0
 	  && BUFFERP (it->object)
 	  && it->method == GET_FROM_BUFFER
-	  && (prev_method == GET_FROM_IMAGE
-	      || prev_method == GET_FROM_STRETCH)
-	  /* Passed TO_CHARPOS from left to right.  */
-	  && ((prev_pos < to_charpos
-	       && IT_CHARPOS (*it) > to_charpos)
-	      /* Passed TO_CHARPOS from right to left.  */
-	      || (prev_pos > to_charpos)
-		  && IT_CHARPOS (*it) < to_charpos))
+	  && ((!it->bidi_p && IT_CHARPOS (*it) > to_charpos)
+	      || (it->bidi_p
+		  && (prev_method == GET_FROM_IMAGE
+		      || prev_method == GET_FROM_STRETCH)
+		  /* Passed TO_CHARPOS from left to right.  */
+		  && ((prev_pos < to_charpos
+		       && IT_CHARPOS (*it) > to_charpos)
+		      /* Passed TO_CHARPOS from right to left.  */
+		      || (prev_pos > to_charpos
+			  && IT_CHARPOS (*it) < to_charpos)))))
 	{
 	  if (it->line_wrap != WORD_WRAP || wrap_it.sp < 0)
 	    {