Setting text to be invisible seems to mean terribly slow scrolling in
xemacs, if the invisible area is large AND there are a lot of extents
(e.g. from font-locking) in the invisible area.
An example:
Open a reasonably big file (redisplay.c will do), and go to the
beginning of the buffer.
Make sure font-lock-mode is on.
Say M-:
(put-text-property (+ (point) 2000) (+ (point) 200000) 'invisible t)
Scroll forward and backward a couple of time.
And voila: xemacs seems to hang for quite a while (at least it does on
my machine, on both cygwin and mingw builds of latest cvs).
I don't know even remotely enough to track this down, but gprof seems
to say that create_text_block in redisplay.c is spending a lot of
time.
There seems to be a check there for data.ef->invisible, that if true
steps forward to the next character - instead of going to the end of
the invisible extent. If selective display is on, on the other hand,
it makes a search directly for the end of line (which seems to be the
reasonable thing to do - but as I said, I really don't know this...).
Anyway, it would be very good to have invisibility as an alternative
to selective display in xemacs (in outline-mode etc.), as in the
latest fsfmacs.
Something to look into for someone who knows...?
/dan
--
Dan Ola Holmsand
InnehÄllsbolaget
dan(a)innehall.com
Show replies by date