+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.
#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)))
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)
{