bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#56393: Actually fix the long lines display bug


From: Gregory Heytings
Subject: bug#56393: Actually fix the long lines display bug
Date: Tue, 19 Jul 2022 12:49:33 +0000

And it's inconvenient that you have to keep a copy of its previous value around, using MODIFF != UNCHANGED_MODIFIED as I did earlier is much easier.
We could indeed keep using MODIFF != UNCHANGED_MODIFIED (and I'm not 
really sure why you decided it was not good enough: can you describe the 
problems using it?).
The problem is that the loop under that condition is called whenever 
redisplay_window is called.  For a file like xdisp.c or dictionary.json, 
that loop takes about 1 ms (on my laptop).  For a file with 150K lines, it 
takes about 13 ms.  As I said earlier, I would prefer to avoid calling 
that loop for normal typing, namely when only one character has been added 
or removed from the buffer since the last redisplay.  IOW, I want to make 
the heuristic more precise.
Alternatively, we could add a new member of 'struct buffer_text' called, 
say, unchanged_chars_modiff, and use it instead of MODIFF != 
UNCHANGED_MODIFIED in the same way as we use MODIFF != 
UNCHANGED_MODIFIED.
My point is that if you want the member you added, unchanged_size, to be 
as responsive to text changes as BUF_CHARS_MODIFF, you will need to add 
code to increment it in all the places where we already do that with 
BUF_CHARS_MODIFF, and that sounds like redundancy, since we don't really 
care about how many characters were added/deleted/replaced.
AFAIU that's not correct: like unchanged_modified, unchanged_size must be 
updated only when redisplay ends, namely in 
mark_window_display_accurate_1.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]