diff options
author | Eli Zaretskii <[email protected]> | 2010-09-29 11:52:43 +0200 |
---|---|---|
committer | Eli Zaretskii <[email protected]> | 2010-09-29 11:52:43 +0200 |
commit | af7ef32d8e12d07c4a37df1685d997ac76641dd7 (patch) | |
tree | bf85ad41853dea29413d8e5e132b6f22134c1da8 | |
parent | 9a2ba070268b71eabdba52481bc996b7183729b0 (diff) |
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.
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/xdisp.c | 13 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 2443a4585b..b14ed34b26 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2010-09-29 Eli Zaretskii <[email protected]> + * 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 ada69da29b..9b0f94ef65 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 |