Subject: Re: bug#25592: Feature request: sorting overlays

From: Eli Zaretskii <[email-masked]>
Date: Tue, 07 Feb 2017 21:56:46 +0200

> Cc: [email-masked]
> From: Clément Pit--Claudel <[email-masked]>
> Date: Tue, 7 Feb 2017 14:17:13 -0500
> 
> >> I process them in order of increasing priority, so OV1 gets processed first.
> > 
> > So you actually apply _all_ of the overlays in the buffer, one by one?
> > That's really inefficient.  With my proposal, you'd only need to apply
> > at most one overlay at each position where some overlay begins or
> > ends, and do that for much fewer text segments.
> 
> I think I may have misunderstood your proposal, or failed to express what I was trying to achieve :/  If OV1 has face "(:weight bold)" and OV2 has face "(:slant italic)", I want to save both 'face properties. Can I really do that by applying at most one overlay at each position?

For the face property, no, because it can have many attributes, and
they must be merged.  Likewise for before-string and after-string
properties.  But still, these overlays are applied by the display
engine in a specific priority order (before-strings in the order of
increasing priority, after-strings in the decreasing order) at that
particular locations.  So you need to do the same to produce the same
effect.

But for other properties, like the display property, yes, you can
apply only the highest.  And that was your original example, AFAIR.