Subject: bug#16658: 24.3; Customizing mode-line face with themes doesn't work

From: Alex Kost <[email-masked]>
Date: Thu, 06 Feb 2014 10:53:52 +0400

Stuart Olsen (2014-02-05 14:44 +0400) wrote:

> Simply put, using `custom-theme-set-faces' to set the face named
> `mode-line' does not work. Steps to reproduce:
>
> - Start Emacs with `emacs -Q'.
> - Do `M-x customize-create-theme'.
> - Initialize the theme with basic face customizations.
> - Navigate to the `mode-line' face.
> - Deselect the `box' property.
> - Save the new theme -- I called it `mode-line'.
> - Use `M-x customize-themes' to enable the new theme.
> - The `mode-line' face continues to display the `box' property.
>
> The face customization does not appear to work even after reloading
> Emacs and the new theme. So far, the `mode-line' face is the only face
> with which I have had this problem. Notably, customizing the face with
> `M-x customize-face' and saving straight to `custom-file' works
> perfectly fine. Also notably, evaluating `(load-file
> "path/to/mode-line-theme.el")' also works.

That's because in 24.3.1 and earlier, default face settings were applied
along with the themed ones, so you cannot see a pure theme in those
versions.  In your case, a standard spec with `:box' property is
"enabled" as well, and as the themed spec do not specify that property,
it is taken from the standard spec.  To avoid that you can set `:box'
property to nil (or turn it off with "Value Menu" in customization
buffer).

In the current trunk (and it will be in 24.4) you don't need to bother
about that: if a face is themed, standard spec do not interfere.

--
Alex Kost