Fix bidi reordering around TAB characters covered by display properties.

src/dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p
 members before the level stack, so they would be saved and
 restored when copying iterator state.  Fixes incorrect reordering
 around TABs covered by display properties.
This commit is contained in:
Eli Zaretskii 2011-08-18 19:09:40 +03:00
parent f635daa1e0
commit 9778ebccaa
2 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2011-08-18 Eli Zaretskii <eliz@gnu.org>
* dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p
members before the level stack, so they would be saved and
restored when copying iterator state. Fixes incorrect reordering
around TABs covered by display properties.
2011-08-18 Andreas Schwab <schwab@linux-m68k.org>
* process.c (Fnetwork_interface_list): Correctly determine buffer

View file

@ -1859,6 +1859,9 @@ struct bidi_it {
EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */
bidi_dir_t sor; /* direction of start-of-run in effect */
int scan_dir; /* direction of text scan, 1: forw, -1: back */
EMACS_INT disp_pos; /* position of display string after ch */
int disp_prop_p; /* if non-zero, there really is a
`display' property/string at disp_pos */
int stack_idx; /* index of current data on the stack */
/* Note: Everything from here on is not copied/saved when the bidi
iterator state is saved, pushed, or popped. So only put here
@ -1867,9 +1870,6 @@ struct bidi_it {
struct bidi_string_data string; /* string to reorder */
bidi_dir_t paragraph_dir; /* current paragraph direction */
EMACS_INT separator_limit; /* where paragraph separator should end */
EMACS_INT disp_pos; /* position of display string after ch */
int disp_prop_p; /* if non-zero, there really is a
`display' property/string at disp_pos */
unsigned first_elt : 1; /* if non-zero, examine current char first */
unsigned new_paragraph : 1; /* if non-zero, we expect a new paragraph */
unsigned frame_window_p : 1; /* non-zero if displaying on a GUI frame */