Subject: RE: bug#15899: 24.3.50; regression: `region' overlay is lower priority than default

From: Drew Adams <[email-masked]>
Date: Sat, 16 Nov 2013 08:23:35 -0800 (PST)

> Previously, Emacs users did not have the freedom to
> overrule the region highlighting with an overlay face.  Many
> generations of Emacs users lived with that limitation and never
> complained about that, at least not seriously enough to make this an
> issue.  Keeping the priority of the region overlay at infinity just
> preserves previous behavior.

No, it does not preserve previous behavior.

1. Previously, isearch highlighting took priority over region
highlighting.  Isearch highlighting has a large, finite value.

2. Previously, region highlighting used the `face' text property.
3rd-party code and user code and interactions that manipulate text
properties will no longer work.

Yes, using an overlay for the region brings other possibilities.
But it takes away certain possibilities, as well (#2).

> > I can't imagine an example where infinite priority is better than
> > a high value. Could you help with that?
> 
> It avoids the problem of priority race.

If you declare a winner ahead of time then there is no race.  Big
deal.  Isearch needs (by default, at least) to win out over region.
And why not others as well, depending on need?  Why foreclose the
possibility?

Sure, if someone wants to fiddle with priorites then there is always
the potential for escalation spiraling round.  That's life with Lisp.

> With an infinite priority, we can be sure the region highlighting
> will always be visible, come what may.

Which might not always be what someone wants.

I'm all for region appearing on top, by default, as I've already
argued in detail.  Users need to know what they've selected.  But
that does not mean that someone should be prevented from doing things
otherwise.

> IOW, keeping the region priority above everything makes sure we
> won't have another series of bug reports in the near future asking
> why this or that feature makes region invisible.

That's just an argument for the default behavior.  "_Keeping_ the
priority above everything else" is wrong.  _Setting_ it above everything
else (with exceptions such as isearch) by default is right.