Subject: bug#56682: Fix the long lines font locking related slowdowns

From: Gerd Möllmann <[email-masked]>
Date: Sat, 23 Jul 2022 16:33:28 +0200

Gerd Möllmann <[email-masked]> writes:

> Eli Zaretskii <[email-masked]> writes:
>
>> And I've found a serious sink of CPU cycles under truncate-lines, and
>> installed a fix on the feature branch.  Gerd, if you have time to
>> eyeball the fix and comment on it, I'd appreciate.  It's commit
>> 350e97d on the branch.  (I can post a more detailed explanation of
>> what I did and why, if that would help, because the code and the
>> functions it calls are somewhat tricky.)
>
> I'll look at it and come back.

modified   src/xdisp.c
@@ -7153,10 +7153,10 @@ forward_to_next_line_start (struct it *it, bool *skipped_p,
 	  || ((pos = Fnext_single_property_change (make_fixnum (start),
 						   Qdisplay, Qnil,
 						   make_fixnum (limit)),
-	       NILP (pos))
+	       (NILP (pos) || XFIXNAT (pos) == limit))
 	      && next_overlay_change (start) == ZV))
 	{
-	  if (!it->bidi_p)
+	  if (!it->bidi_p || !bidi_it_prev)
 	    {
 	      IT_CHARPOS (*it) = limit;
 	      IT_BYTEPOS (*it) = bytepos;

I understand the first diff, which makes a lot of sense, but I'm afraid
I don't know enough about bidi to be of any help.