|
From: | Gregory Heytings |
Subject: | bug#57207: 29.0.50; Fontification is slow after e7b5912b23 (Improvements to long lines handling) |
Date: | Tue, 16 Aug 2022 10:47:00 +0000 |
Gregory, I suspect that the problem could be in the loop in redisplay_window, where we look for long lines. Changing visibility in Org changes text properties, and that causes MODIFF to be incremented. I actually can cause something similar without Org at all, just by scrolling fast through xdisp.c. You can put a breakpoint inside the 'if' that guards the re-evaluation of the long-lines in redisplay_window, and scroll with C-v through xdisp.c immediately after visiting it -- I hit the breakpoint from time to time, although there are no changes to the buffer except faces placed by fontifications.jit-lock runs under with-silent-modifications, but that only adjusts SAVE_MODIFF to create an illusion of unchanged buffer, it doesn't affect UNCHANGED_MODIFIED.
Indeed, that's problematic: modify_text_properties calls modiff_incr (&MODIFF, 1). I think the safest change would be to use CHARS_MODIFF instead of MODIFF, see attached.
Ihor, can you please test that patch and tell us if it solves your problem?
use_chars_modiff.patch
Description: Text Data
[Prev in Thread] | Current Thread | [Next in Thread] |