mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-27 15:40:47 -08:00
Speed up bidi redisplay with selective-display.
src/xdisp.c (forward_to_next_line_start): Allow to use the no-display-properties-and-no-overlays under bidi display.
This commit is contained in:
parent
51a714e101
commit
97bb72a608
2 changed files with 32 additions and 12 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2011-08-08 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (forward_to_next_line_start): Allow to use the
|
||||
no-display-properties-and-no-overlays under bidi display.
|
||||
|
||||
2011-08-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* editfns.c (Fset_time_zone_rule): Document relationship with the
|
||||
|
|
|
|||
39
src/xdisp.c
39
src/xdisp.c
|
|
@ -5532,19 +5532,34 @@ forward_to_next_line_start (struct it *it, int *skipped_p,
|
|||
|
||||
xassert (!STRINGP (it->string));
|
||||
|
||||
/* If we are not bidi-reordering, and there isn't any `display'
|
||||
property in sight, and no overlays, we can just use the
|
||||
position of the newline in buffer text. */
|
||||
if (!it->bidi_p
|
||||
&& (it->stop_charpos >= limit
|
||||
|| ((pos = Fnext_single_property_change (make_number (start),
|
||||
Qdisplay, Qnil,
|
||||
make_number (limit)),
|
||||
NILP (pos))
|
||||
&& next_overlay_change (start) == ZV)))
|
||||
/* If there isn't any `display' property in sight, and no
|
||||
overlays, we can just use the position of the newline in
|
||||
buffer text. */
|
||||
if (it->stop_charpos >= limit
|
||||
|| ((pos = Fnext_single_property_change (make_number (start),
|
||||
Qdisplay, Qnil,
|
||||
make_number (limit)),
|
||||
NILP (pos))
|
||||
&& next_overlay_change (start) == ZV))
|
||||
{
|
||||
IT_CHARPOS (*it) = limit;
|
||||
IT_BYTEPOS (*it) = CHAR_TO_BYTE (limit);
|
||||
if (!it->bidi_p)
|
||||
{
|
||||
IT_CHARPOS (*it) = limit;
|
||||
IT_BYTEPOS (*it) = CHAR_TO_BYTE (limit);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct bidi_it bprev;
|
||||
|
||||
do {
|
||||
bprev = it->bidi_it;
|
||||
bidi_move_to_visually_next (&it->bidi_it);
|
||||
} while (it->bidi_it.charpos != limit);
|
||||
IT_CHARPOS (*it) = limit;
|
||||
IT_BYTEPOS (*it) = it->bidi_it.bytepos;
|
||||
if (bidi_it_prev)
|
||||
*bidi_it_prev = bprev;
|
||||
}
|
||||
*skipped_p = newline_found_p = 1;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue