Commit 97bb72a6 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

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.
parent 51a714e1
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
......
......@@ -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)))
{
IT_CHARPOS (*it) = limit;
IT_BYTEPOS (*it) = CHAR_TO_BYTE (limit);
/* 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))
{
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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment