# HG changeset patch # User Eli Zaretskii # Date 1269976609 14400 # Node ID 6db6f99911e0c9d96ef132bbd9c1ce7cb80e9263 # Parent 5e0627e338dc260f33c49abb364bfbb4bbe768b4 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. diff -r 5e0627e338dc -r 6db6f99911e0 src/ChangeLog --- 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 + + * 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 * xdisp.c (syms_of_xdisp): Use intern_c_string instead of intern. diff -r 5e0627e338dc -r 6db6f99911e0 src/xdisp.c --- 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) {