Open thomasf opened 5 years ago
First, I think child-theme is not a good idea for the user customization scheme.
Because of the child-theme mechanism existing, solarized cannot enable the lexical-binding
required for modern packages.
It is better to change the current solarized-with-color-variables
to with-solarized-color-variables
, and the upper function should be designed to accept child theme as normal sexp instead of function.
This is a bit painful, but it is an incompatibility necessary to review it for a better design.
It probably hasn't worked in years other than it just accepts the function and then Emacs does nothing unless the user is defining faces that the main theme don't have. This functionality has probably phased out itself by not working for a very long time so fixing it is maybe not the best option, thats why I created an issue instead of doing something about it.
The question is, do we just hard break users by removing the argument or just log a warning with a reference to how it should be used if someone tries to use it?
OK, I try compose my proposal.
My proposal includes change macro name (solarized-with-color-variables
to with-solarized-color-variables
) so if the user uses the old name, the user gets an error or warning.
But solarized-theme
provides a theme file only. Other function and macros is all internal function.
It does not seem that emacs want to redefine a face in a theme after its initially been set. It's quite easy to test, the included
solarized-wombat-dark-theme.el
sets inactive mode line to a blackish color and it does not do that now.The patch below fixes it for me but I'm not sure. Moving the let binding to somewhere where it's actually called for all themes (solarized-definition?) might also work.
The documentation for
custom--inhibit-theme-enable
says:It's a bit unclear to me what other implication this has for the theme system in general if we disable it.