Mercurial > emacs
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; |