Subject: bug#8454: Themes can't work right due to design

From: Stefan Monnier <[email-masked]>
Date: Mon, 05 Dec 2011 14:03:32 -0500

> The first is that :inherit isn't very useful as a way to say "make the
> current face like the specified one".  Because color-theme clobbers
> face-defface-spec, it effectively erases any previous face settings,
> so that the theme settings are self-contained.  There is no equivalent
> way to do this with custom-theme, which has led me to write things
> like `(font-lock-type-face ,zenburn-primary-3) rather than
> `(font-lock-type-face ((t (:inherit zenburn-primary-3)))) .  This
> works but is somewhat unsatisfying.

I don't really understand the problem here, probably because I'm not
sufficiently versed in themes, but just in case, you may want to give
a more specific example of what behavior you're trying to get, what you
tried (presumably something like ((t (:inherit foo)))) and what you
don't like about the resulting behavior.

> The second is that a face attribute that's explicitly set can't be
> overridden by a custom theme, for reasons I'm not completely clear on.

That's the way the interaction between custom settings and Lisp settings
are defined, because it seems like the only "sane" way to handle it.

>  For example, "cc-fonts.el" contains (set-face-foreground
> 'c-annotation-face "blue")

Probably something that should be fixed.

        Stefan