Subject: bug#37774: 27.0.50; new :extend attribute broke visuals of all themes and other packages

From: Eli Zaretskii <[email-masked]>
Date: Sat, 16 Nov 2019 10:09:54 +0200

> Cc: [email-masked], [email-masked]
> From: Dmitry Gutov <[email-masked]>
> Date: Sat, 16 Nov 2019 01:50:22 +0200
> 
> >>> If the backward compatibility (or, rather, transparent DWIM-ish
> >>> operation) is the overriding consideration, then you are actually
> >>> saying that any face attribute we will introduce in the future will
> >>> have to be treated the same?
> >>
> >> I don't know what attributes we will introduce, and whether the default
> >> values will be a departure from the previous behavior like this one is.
> > 
> > It doesn't matter if the default face definition uses that attribute,
> > does it?
> 
> Well, it kind of does. At least, if the default value of the new 
> attribute is in line with the previous behavior, most faces won't have 
> to change.

I was talking about the case where the defface we have for that face
DOES use the new attribute.  In that case, the default value of the
attribute doesn't matter, since the defface uses some specific value,
and that will always be a non-default value.

IOW, whenever we introduce a new face attribute and use it to modify
the defface of a built-in face, this problem will pop up.

> Another option that had been voiced is to split the value into two 
> attributes: :extend-foreground and :extend-background.

But :extend is not just about colors, it is also about underline,
overline, strike-through, and box attributes.  In fact, the underline
attribute was an even more important one, because extending it looks
exceptionally ugly (we even had a few bug reports about that).

> But that brings me to a question. I think whether the 'region' face has 
> :extend-background to nil or not is a personal choice. Would the user 
> have to fight and convince the author of the theme they are using to 
> change that attribute? Or will it be easy to apply personal 
> customization and call it a day?

Why would using a theme need anything beyond a simple face
customization to modify :extend (or any other attribute)?  The author
of a theme can do what they think is best, but users can always
override that by customizing the face after loading the theme.