From: Eli Zaretskii Date: Tue, 30 Mar 2010 19:16:49 +0000 (-0400) Subject: Restore original behavior of move_it_in_display_line_to when !bidi_p. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~625 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=82043cfbb377a5fe4310ecca9dbcfe4bc253e78b;p=emacs.git 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 --git a/src/ChangeLog b/src/ChangeLog index 3048e901494..448b9f2835e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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 --git a/src/xdisp.c b/src/xdisp.c index 17a018b7493..c8b4c2b9aa5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -6999,7 +6999,8 @@ move_it_in_display_line_to (struct it *it, #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 @@ move_it_in_display_line_to (struct it *it, 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) {