From: Eli Zaretskii Date: Thu, 18 Aug 2011 16:09:40 +0000 (+0300) Subject: Fix bidi reordering around TAB characters covered by display properties. X-Git-Tag: emacs-pretest-24.0.90~104^2~124^2~13 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9778ebccaaf3bbb3d2e05a45943af32b7751e8c8;p=emacs.git 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. --- diff --git a/src/ChangeLog b/src/ChangeLog index 0853aa85d99..037a4b28a9e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2011-08-18 Eli Zaretskii + + * 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 * process.c (Fnetwork_interface_list): Correctly determine buffer diff --git a/src/dispextern.h b/src/dispextern.h index fd408c713c6..084a3f9e07f 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -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 */