diff options
| author | Eli Zaretskii | 2011-08-18 19:09:40 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2011-08-18 19:09:40 +0300 |
| commit | 9778ebccaaf3bbb3d2e05a45943af32b7751e8c8 (patch) | |
| tree | f2043644498786fee656778928cd5c133ecddc1d /src | |
| parent | f635daa1e056a564d13b4ef1ea8d1a4ff5b7401c (diff) | |
| download | emacs-9778ebccaaf3bbb3d2e05a45943af32b7751e8c8.tar.gz emacs-9778ebccaaf3bbb3d2e05a45943af32b7751e8c8.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 7 | ||||
| -rw-r--r-- | src/dispextern.h | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0853aa85d99..037a4b28a9e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2011-08-18 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p | ||
| 4 | members before the level stack, so they would be saved and | ||
| 5 | restored when copying iterator state. Fixes incorrect reordering | ||
| 6 | around TABs covered by display properties. | ||
| 7 | |||
| 1 | 2011-08-18 Andreas Schwab <schwab@linux-m68k.org> | 8 | 2011-08-18 Andreas Schwab <schwab@linux-m68k.org> |
| 2 | 9 | ||
| 3 | * process.c (Fnetwork_interface_list): Correctly determine buffer | 10 | * 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 { | |||
| 1859 | EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */ | 1859 | EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */ |
| 1860 | bidi_dir_t sor; /* direction of start-of-run in effect */ | 1860 | bidi_dir_t sor; /* direction of start-of-run in effect */ |
| 1861 | int scan_dir; /* direction of text scan, 1: forw, -1: back */ | 1861 | int scan_dir; /* direction of text scan, 1: forw, -1: back */ |
| 1862 | EMACS_INT disp_pos; /* position of display string after ch */ | ||
| 1863 | int disp_prop_p; /* if non-zero, there really is a | ||
| 1864 | `display' property/string at disp_pos */ | ||
| 1862 | int stack_idx; /* index of current data on the stack */ | 1865 | int stack_idx; /* index of current data on the stack */ |
| 1863 | /* Note: Everything from here on is not copied/saved when the bidi | 1866 | /* Note: Everything from here on is not copied/saved when the bidi |
| 1864 | iterator state is saved, pushed, or popped. So only put here | 1867 | iterator state is saved, pushed, or popped. So only put here |
| @@ -1867,9 +1870,6 @@ struct bidi_it { | |||
| 1867 | struct bidi_string_data string; /* string to reorder */ | 1870 | struct bidi_string_data string; /* string to reorder */ |
| 1868 | bidi_dir_t paragraph_dir; /* current paragraph direction */ | 1871 | bidi_dir_t paragraph_dir; /* current paragraph direction */ |
| 1869 | EMACS_INT separator_limit; /* where paragraph separator should end */ | 1872 | EMACS_INT separator_limit; /* where paragraph separator should end */ |
| 1870 | EMACS_INT disp_pos; /* position of display string after ch */ | ||
| 1871 | int disp_prop_p; /* if non-zero, there really is a | ||
| 1872 | `display' property/string at disp_pos */ | ||
| 1873 | unsigned first_elt : 1; /* if non-zero, examine current char first */ | 1873 | unsigned first_elt : 1; /* if non-zero, examine current char first */ |
| 1874 | unsigned new_paragraph : 1; /* if non-zero, we expect a new paragraph */ | 1874 | unsigned new_paragraph : 1; /* if non-zero, we expect a new paragraph */ |
| 1875 | unsigned frame_window_p : 1; /* non-zero if displaying on a GUI frame */ | 1875 | unsigned frame_window_p : 1; /* non-zero if displaying on a GUI frame */ |