From: Eli Zaretskii Date: Wed, 29 Sep 2010 09:52:43 +0000 (+0200) Subject: Fix bug #7128. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~47^2~7 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=af7ef32d8e12d07c4a37df1685d997ac76641dd7;p=emacs.git Fix bug #7128. xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to NEUTRAL_DIR. (handle_invisible_prop, iterate_out_of_display_property) (next_element_from_buffer): If bidi_it.first_elt is set, call bidi_paragraph_init with NO_DEFAULT_P argument non-zero. --- diff --git a/src/ChangeLog b/src/ChangeLog index 2443a4585b9..b14ed34b26d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2010-09-29 Eli Zaretskii + * xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to + NEUTRAL_DIR. + (handle_invisible_prop, iterate_out_of_display_property) + (next_element_from_buffer): If bidi_it.first_elt is set, call + bidi_paragraph_init with NO_DEFAULT_P argument non-zero. + (Bug#7128) + * print.c (print_object): Fix format string and argument types for printing a Lisp_Misc_Marker. diff --git a/src/xdisp.c b/src/xdisp.c index ada69da29ba..9b0f94ef657 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -3831,7 +3831,7 @@ handle_invisible_prop (struct it *it) skip any text at the beginning, which resets the FIRST_ELT flag. */ bidi_paragraph_init (it->paragraph_embedding, - &it->bidi_it, 0); + &it->bidi_it, 1); } do { @@ -5152,7 +5152,7 @@ iterate_out_of_display_property (struct it *it) of a new paragraph, next_element_from_buffer may not have a chance to do that. */ if (it->bidi_it.first_elt && it->bidi_it.charpos < ZV) - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); /* prev_stop can be zero, so check against BEGV as well. */ while (it->bidi_it.charpos >= BEGV && it->prev_stop <= it->bidi_it.charpos @@ -5584,7 +5584,10 @@ reseat_1 (struct it *it, struct text_pos pos, int set_stop_p) it->string_from_display_prop_p = 0; it->face_before_selective_p = 0; if (it->bidi_p) - it->bidi_it.first_elt = 1; + { + it->bidi_it.first_elt = 1; + it->bidi_it.paragraph_dir = NEUTRAL_DIR; + } if (set_stop_p) { @@ -6675,7 +6678,7 @@ next_element_from_buffer (struct it *it) { /* If we are at the beginning of a line, we can produce the next element right away. */ - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); bidi_move_to_visually_next (&it->bidi_it); } else @@ -6689,7 +6692,7 @@ next_element_from_buffer (struct it *it) IT_BYTEPOS (*it) = CHAR_TO_BYTE (IT_CHARPOS (*it)); it->bidi_it.charpos = IT_CHARPOS (*it); it->bidi_it.bytepos = IT_BYTEPOS (*it); - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); do { /* Now return to buffer position where we were asked to