comparison src/dispextern.h @ 107611:118ff750e43e

Continue working on handling of properties in bidi iteration. Region display and extension seems to work. Solved a crash in bidirectional display of etc/HELLO. (HELLO display still not 100% OK, e.g. near Kannada.) .gdbinit (pitx): Display some bidi information about the iterator. dispextern.h (BIDI_AT_BASE_LEVEL): Enclose definition in parentheses. xdisp.c (handle_stop_backwards): Save and restore it->current and it->position, instead of expecting the caller to do that. (next_element_from_buffer): When moving across stop_charpos, record it in prev_stop. When IT_CHARPOS backs up, call handle_stop_backwards only if above the base embedding level. This solves the crash while displaying etc/HELLO in bidi mode.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 02 Jan 2010 10:57:35 -0500
parents a04b9ac55bc5
children c5f9e4613394
comparison
equal deleted inserted replaced
107610:4d0362d9b52f 107611:118ff750e43e
1810 }; 1810 };
1811 1811
1812 /* Value is non-zero when the bidi iterator is at base paragraph 1812 /* Value is non-zero when the bidi iterator is at base paragraph
1813 embedding level. */ 1813 embedding level. */
1814 #define BIDI_AT_BASE_LEVEL(BIDI_IT) \ 1814 #define BIDI_AT_BASE_LEVEL(BIDI_IT) \
1815 (BIDI_IT).resolved_level == (BIDI_IT).level_stack[0].level 1815 ((BIDI_IT).resolved_level == (BIDI_IT).level_stack[0].level)
1816 1816
1817 1817
1818 /*********************************************************************** 1818 /***********************************************************************
1819 Fringes 1819 Fringes
1820 ***********************************************************************/ 1820 ***********************************************************************/
2011 /* The next position at which to check for face changes, invisible 2011 /* The next position at which to check for face changes, invisible
2012 text, overlay strings, end of text etc., which see. */ 2012 text, overlay strings, end of text etc., which see. */
2013 EMACS_INT stop_charpos; 2013 EMACS_INT stop_charpos;
2014 2014
2015 /* Previous stop position, i.e. the last one before the current 2015 /* Previous stop position, i.e. the last one before the current
2016 buffer position. */ 2016 iterator position in `current'. */
2017 EMACS_INT prev_stop; 2017 EMACS_INT prev_stop;
2018 2018
2019 /* Last stop_pos at the current paragraph's embedding level. */ 2019 /* Last stop position iterated across whose embedding level is equal
2020 to the current paragraph's embedding level. */
2020 EMACS_INT base_level_stop; 2021 EMACS_INT base_level_stop;
2021 2022
2022 /* Maximum string or buffer position + 1. ZV when iterating over 2023 /* Maximum string or buffer position + 1. ZV when iterating over
2023 current_buffer. */ 2024 current_buffer. */
2024 EMACS_INT end_charpos; 2025 EMACS_INT end_charpos;