1
Fork 0
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:
Eli Zaretskii 2011-08-08 19:57:53 +03:00
parent 51a714e101
commit 97bb72a608
2 changed files with 32 additions and 12 deletions

View file

@ -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

View file

@ -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