all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ken Manheimer <ken.manheimer@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: outline/allout/overlay performance
Date: Wed, 11 Jan 2006 19:59:28 -0500	[thread overview]
Message-ID: <2cd46e7f0601111659x65fc0ff5ie27d69e66081c941@mail.gmail.com> (raw)
In-Reply-To: <jwvd5iyxudb.fsf-monnier+emacs@gnu.org>

it looks like i was raising a false alarm - the overlays were not the
problem, and in fact there was no fragmentation of them.  i made a
quick consolidating function, only to discover (1) there was no
improvement, and (2) actually assessing the extent of the overlays
without the consolidation showed that they were not fragmenting.  this
lead me to suspect my environment, and i discovered that a
long-line-highlighting custom package i was using (vvb-mode) was the
problem - disabling it totally eliminated any delays.  in fact,

the side effect of this little adventure is that i'm pretty far along
with the conversion to invisibility-overlays, i think the hard things
are done (several niggly boundary conditions, isearch fanciness), but
will need to shake out the odds and ends, and then work out the common
functionality with outline-mode, as stefan and i were discussing.

sorry about the false alarm!

ken manheimer
ken.manheimer@gmail.com

On 1/11/06, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> >> > i think i've surmounted the performance problem i was seeing, by
> >> > better stitching together the overlays.
> >> Good news.
> > but maybe premature - the behaviour "came back".  i will have to
> > carefully implement the stitching together stuff before coming to a
> > conclusion about viability.
>
> >> [...]
> >> > these choices are hard-coded in the current `outline-flag-region', so
> >> > i can't use it as stands.  i could suggest a slightly modified version
> >> > which open-codes these choices so "derivative" outline modes can use it
> >> > directly while tailoring these aspects for their specific purposes.  does
> >> > that seem like a reasonable way to go?
> >>
> >> I don't understand why outline-flag-region should have anything to do with
> >> the implementation of an isearch-open-invisible(-temporary) function, so I'm
> >> probably not understanding you well, but improving outline-flag-region so it
>
> > the function is registered with the overlay, as a property - that's
> > why the current outline-flag-region sets it.  i want to make the
> > function it registers with the overlay parameterized - eg, a mode
> > local variable - to be registered if set.  outline-mode's current one
> > (`outline-isearch-open-invisible') will be used for outline-mode, and
> > allout will have its own.  other modes could, too.
>
> Actually, some other modes using similar functions add a few more
> properties, so I think it makes sense to just add a &rest parameter to
> outline-flag-region.
>
> As for using a buffer-local variable for outline-isearch-open-invisible, it
> assumes only one major/minor mode will use it at a time.  In reveal.el
> I chose to allow a reveal-toggle-invisible property on the overlay or on the
> symbol used for invisibility.  So in outline.el rather than adding the
> property to every single overlay, I just do
>
>   (put 'outline 'reveal-toggle-invisible 'outline-reveal-toggle-invisible)
>
> and reveal.el finds it with
>
>   (get (overlay-get ol 'invisible) 'reveal-toggle-invisible)
>
> Maybe isearch (c|sh)ould be changed in a similar way.
>
> >> stitches overlays together sounds like a good idea.
> >> Maybe it could be made into a generic function, much like remove-overlays
> >> and moved to subr.el.
> > i'll take a look at remove-overlays, when i get to that point.
>
> All I was thinking is to add a function like
>
>     (add-overlay-props FROM TO &rest PROPS)
>
> which either creates a new overlay with the specified props or moves
> existing overlays if there's already an overlay around with the right
> properties, thus trying to minimize the number of overlays in the buffer.
> This said, it's probably more important to work on the C code to try and
> remove the O(n) behavior.  And even if it's not removed everywhere, I can't
> think of any reason why cursor movement should suffer from this
> O(n) behavior.
>
>
>         Stefan
>

  reply	other threads:[~2006-01-12  0:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <rzqacf3mbav.fsf@albion.dl.ac.uk>
     [not found] ` <rzq64pmkov4.fsf@albion.dl.ac.uk>
     [not found]   ` <E1EoUi3-0006Vc-DV@fencepost.gnu.org>
     [not found]     ` <rzqek44is9i.fsf@albion.dl.ac.uk>
     [not found]       ` <E1EpzHJ-0000Lk-VC@fencepost.gnu.org>
     [not found]         ` <rzqk6da9ri0.fsf@albion.dl.ac.uk>
     [not found]           ` <E1Ew0Mt-0002aZ-4F@fencepost.gnu.org>
     [not found]             ` <2cd46e7f0601091127w7f988942w33a105481ccd02e0@mail.gmail.com>
     [not found]               ` <E1EwLJV-0005JX-Dc@fencepost.gnu.org>
     [not found]                 ` <2cd46e7f0601110821x5c97c63bj25d80df70240c80e@mail.gmail.com>
     [not found]                   ` <2cd46e7f0601111223m4e568b56n283d038ccfff6be0@mail.gmail.com>
2006-01-11 21:51                     ` outline/allout/overlay performance (was: existing work on TODO items) Stefan Monnier
2006-01-11 22:00                       ` Ken Manheimer
2006-01-11 22:50                         ` outline/allout/overlay performance Stefan Monnier
2006-01-12  0:59                           ` Ken Manheimer [this message]
2006-01-12 13:56                             ` Thien-Thi Nguyen
2006-01-12 22:18                               ` Ken Manheimer
2006-01-12 23:30                                 ` Thien-Thi Nguyen
2006-01-12 22:40                           ` Ken Manheimer
2006-01-12 23:32                             ` Stefan Monnier
2006-01-13 13:07                             ` Kim F. Storm
2006-01-14 15:24                               ` Ken Manheimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2cd46e7f0601111659x65fc0ff5ie27d69e66081c941@mail.gmail.com \
    --to=ken.manheimer@gmail.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.