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

From: Eli Zaretskii <[email-masked]>
Date: Thu, 14 Nov 2019 16:41:26 +0200

> Cc: [email-masked]
> From: Dmitry Gutov <[email-masked]>
> Date: Thu, 14 Nov 2019 16:14:16 +0200
> 
> > How is :extend different from any other face attribute?
> > 
> > The documentation of custom-theme-set-faces says that FACE should be a
> > face spec, like in defface.  And the latter does override all the
> > attributes, unless it uses :inherit.
> > 
> > So I'm not unsure why you expected something else.
> 
> *I* expected that going by your messages here and here:
> 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37774#104
> 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37774#131

That was about custom-set-faces, not custom-theme-set-faces.  The
former is a function we write into the user files, so it's hard to
expect anyone to insert :extend there.  And it was only a question, to
which I still don't have an answer (the issue of user face
customizations somehow stopped being discussed).

custom-theme-set-faces is different: it's code written by theme
authors, so we could expect them to cater to :extend.

> Then the backward compatibility problem is going to be bigger than I 
> thought. That's too bad. And my apologies to Jonas.

We are still discussing, so I see no need for apologies.

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?  IOW, we will have to "inherit" it from
the default face definition even if :inherit was not specified?  If
so, how does a theme refuse to "inherit" in this way?