aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2011-08-18 19:09:40 +0300
committerEli Zaretskii2011-08-18 19:09:40 +0300
commit9778ebccaaf3bbb3d2e05a45943af32b7751e8c8 (patch)
treef2043644498786fee656778928cd5c133ecddc1d /src
parentf635daa1e056a564d13b4ef1ea8d1a4ff5b7401c (diff)
downloademacs-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/ChangeLog7
-rw-r--r--src/dispextern.h6
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 @@
12011-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
12011-08-18 Andreas Schwab <schwab@linux-m68k.org> 82011-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 */