GNU bug report logs -
#16526
24.3.50; scroll-conservatively & c-mode regression
Previous Next
Reported by: martin rudalics <rudalics <at> gmx.at>
Date: Thu, 23 Jan 2014 08:54:02 UTC
Severity: important
Found in version 24.3.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #76 received at 16526 <at> debbugs.gnu.org (full text, mbox):
> After beginning-of-buffer jumps to point-min, redisplay kicks in.
> Since scroll-conservatively is set to a large value, redisplay first
> tries to see whether it can bring point into view by scrolling the
> window as little as possible. It calls try_scrolling, which at some
> point (around line 15000) tries to see whether the new location of
> point is close enough to the current window start. It does so by
> calling move_it_to, which simulates the display. While doing so,
> move_it_to hits a portion of text with font-lock properties, and calls
> JIT Lock to fontify them.
Well... try_scrolling could detect that `point' is some 15000 lines away
from the current window start so trying to scroll the window as little
as possible might not be worth the effort.
> And here's where things go awry: For some reason, the CC Mode
> fontification code decides it needs to scan the buffer backwards,
> starting from EOB. So it goes temporarily to EOB (this is why I saw
> point being there), and scans all the way back, I think in this loop
> from c-append-lower-brace-pair-to-state-cache, which is called with
> its first argument FROM set to EOB:
But it's redisplay which temporarily puts `point' at EOB and triggers
the fontification subsystem to "work" at that position?
> This loop takes a lot of time, of course, and is a waste of time,
> since eventually try_scrolling comes to the correct conclusion that
> scrolling is impossible, and instead recenters at BOB.
Are you sure that try_scrolling doesn't call this loop over and over
again?
> Why does CC Mode decide to go from EOB backwards, I don't know;
> presumably, this is decided by c-parse-state-get-strategy as part of
> c-parse-state-1.
This seems obvious. To decide whether code shall be fontified this way
or another it has to decide whether the code is part of a comment and
find that comment's start. As long as it is not aware of the fact that
`point' is already at BOB, obviously.
martin
This bug report was last modified 11 years and 17 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.