unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#8454: deftheme, :inherit & overriding existing values
       [not found] ` <4DC54D3D.7090409@gmail.com>
@ 2011-05-08 19:19   ` Chong Yidong
  2011-05-08 20:14     ` Chong Yidong
  0 siblings, 1 reply; 5+ messages in thread
From: Chong Yidong @ 2011-05-08 19:19 UTC (permalink / raw)
  To: Christoph Scholtes; +Cc: 8454, Dirk-Jan C. Binnema

Christoph Scholtes <cschol2112@googlemail.com> writes:

> On 5/7/2011 3:17 AM, Dirk-Jan C. Binnema wrote:
>
>> Overall it works well if I start the theme from my .emacs startup,
>> but it works less well if I load a theme after some other
>> packages. E.g., deftheme before wanderlust works, but not the other
>> way around.
>
> [snip]
>
>> Apparently, :inherit does not really work as I expected...
>
> I think this might be similar behavior to what I reported here:
>
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8454

I'm afraid both bug reports are too vague for me to figure out exactly
what is supposed to be going wrong.  Could someone provide a precise,
step-by-step recipe for reproducing the problem?

In the case of Christoph's report (Bug#8454), the statement "none of the
custom faces for erc are actually applied" isn't specific, and when I
tried to reproduce this, the buffer produced by M-x erc RET RET RET
seems to display erc-default-face using the Zenburn default.  A more
precise description of the problem is needed.

As for Dirk-Jan's report, it is very inconvenient to reference external
packages like Wanderlust.  Please provide a recipe using something in
Emacs itself.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#8454: deftheme, :inherit & overriding existing values
  2011-05-08 19:19   ` bug#8454: deftheme, :inherit & overriding existing values Chong Yidong
@ 2011-05-08 20:14     ` Chong Yidong
  2011-05-09 20:41       ` Dirk-Jan C. Binnema
  2011-05-10  3:18       ` Christoph Scholtes
  0 siblings, 2 replies; 5+ messages in thread
From: Chong Yidong @ 2011-05-08 20:14 UTC (permalink / raw)
  To: Christoph Scholtes; +Cc: 8454, Dirk-Jan C. Binnema

Chong Yidong <cyd@stupidchicken.com> writes:

> I'm afraid both bug reports are too vague for me to figure out exactly
> what is supposed to be going wrong.  Could someone provide a precise,
> step-by-step recipe for reproducing the problem?

OK, I found a bug in the case where defface is called after loading a
theme with settings for that face.  The defface settings were not being
applied; I've checked a fix into the trunk.  However, I'm not sure this
is the issue you are talking about, since this bug was not specific to
the :inherit property.  Could you check if your problem is fixed?

One possible source of confusion, which may apply to Dirk-Jan's report,
is that :inherit only tells Emacs to consult the parent face if a face
attribute is unspecified.  If the attribute is specified, it overrides
the inheritance.  So if your Custom theme want to "cancel out", say, any
existing foreground attribute setting, you need something like

 '(froob ((t (:foreground unspecified :inherit parent-face))))





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#8454: deftheme, :inherit & overriding existing values
  2011-05-08 20:14     ` Chong Yidong
@ 2011-05-09 20:41       ` Dirk-Jan C. Binnema
  2011-05-10  3:18       ` Christoph Scholtes
  1 sibling, 0 replies; 5+ messages in thread
From: Dirk-Jan C. Binnema @ 2011-05-09 20:41 UTC (permalink / raw)
  To: Chong Yidong; +Cc: Christoph Scholtes, 8454

Hi,

>>>>> On Sun, 08 May 2011 16:14:53 -0400, Chong Yidong ("CYD") wrote:

  CYD> Chong Yidong <cyd@stupidchicken.com> writes:
  >> I'm afraid both bug reports are too vague for me to figure out exactly
  >> what is supposed to be going wrong.  Could someone provide a precise,
  >> step-by-step recipe for reproducing the problem?

Sorry about the 'vagueness' - but glad you found it out anyhow.
  
  CYD> OK, I found a bug in the case where defface is called after loading a
  CYD> theme with settings for that face.  The defface settings were not being
  CYD> applied; I've checked a fix into the trunk.  However, I'm not sure this
  CYD> is the issue you are talking about, since this bug was not specific to
  CYD> the :inherit property.  Could you check if your problem is fixed?

No, it does solve the problem, but I guess below confirms my suspicion..
  
  CYD> One possible source of confusion, which may apply to Dirk-Jan's report,
  CYD> is that :inherit only tells Emacs to consult the parent face if a face
  CYD> attribute is unspecified.  If the attribute is specified, it overrides
  CYD> the inheritance.  So if your Custom theme want to "cancel out", say, any
  CYD> existing foreground attribute setting, you need something like

  CYD>  '(froob ((t (:foreground unspecified :inherit parent-face))))

Ok, yes that is what happens. I guess this could work, but in practice it
makes :inherit rather suboptimal -- imagine switching from one theme to
another, you'd have to explicitly cancel out every attribute the other theme
may have set.

Best wishes,
Dirk.

-- 
Dirk-Jan C. Binnema                  Helsinki, Finland
e:djcb@djcbsoftware.nl           w:www.djcbsoftware.nl
pgp: D09C E664 897D 7D39 5047 A178 E96A C7A1 017D DA3C





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#8454: deftheme, :inherit & overriding existing values
  2011-05-08 20:14     ` Chong Yidong
  2011-05-09 20:41       ` Dirk-Jan C. Binnema
@ 2011-05-10  3:18       ` Christoph Scholtes
  2011-05-13  4:50         ` Dirk-Jan C. Binnema
  1 sibling, 1 reply; 5+ messages in thread
From: Christoph Scholtes @ 2011-05-10  3:18 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 8454, Dirk-Jan C. Binnema

On 5/8/2011 2:14 PM, Chong Yidong wrote:

> OK, I found a bug in the case where defface is called after loading a
> theme with settings for that face.  The defface settings were not being
> applied; I've checked a fix into the trunk.  However, I'm not sure this
> is the issue you are talking about, since this bug was not specific to
> the :inherit property.  Could you check if your problem is fixed?
>
> One possible source of confusion, which may apply to Dirk-Jan's report,
> is that :inherit only tells Emacs to consult the parent face if a face
> attribute is unspecified.  If the attribute is specified, it overrides
> the inheritance.  So if your Custom theme want to "cancel out", say, any
> existing foreground attribute setting, you need something like
>
>   '(froob ((t (:foreground unspecified :inherit parent-face))))

This did not fix it for me.

I think Dirk-Jan and I have the same issue, though, which is the 
behavior of :inherit.

One example from my custom theme:

  '(erc-default-face ((t (:inherit default))))

This is supposed to inherit from

  '(default ((t (:background "#3f3f3f" :foreground "#dcdccc"))))

but it does not work.

This is probably related to what you describe above, but I don't really 
understand it. foregound in erc-default-face is unspecified, right? 
Should the inherit get the attributes from default or not?

I figured out a way to make my custom theme work, though. Loading it 
through customize does not work, but if I open the theme file and eval 
the buffer, it works and erc shows the my custom faces. Maybe this helps 
to troubleshoot the problem?

Christoph





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#8454: deftheme, :inherit & overriding existing values
  2011-05-10  3:18       ` Christoph Scholtes
@ 2011-05-13  4:50         ` Dirk-Jan C. Binnema
  0 siblings, 0 replies; 5+ messages in thread
From: Dirk-Jan C. Binnema @ 2011-05-13  4:50 UTC (permalink / raw)
  To: Christoph Scholtes; +Cc: 8454, Chong Yidong

Hi,

>>>>> On Mon, 09 May 2011 21:18:25 -0600, Christoph Scholtes ("CS") wrote:

  CS> On 5/8/2011 2:14 PM, Chong Yidong wrote:
  >> OK, I found a bug in the case where defface is called after loading a
  >> theme with settings for that face.  The defface settings were not being
  >> applied; I've checked a fix into the trunk.  However, I'm not sure this
  >> is the issue you are talking about, since this bug was not specific to
  >> the :inherit property.  Could you check if your problem is fixed?
  >> 
  >> One possible source of confusion, which may apply to Dirk-Jan's report,
  >> is that :inherit only tells Emacs to consult the parent face if a face
  >> attribute is unspecified.  If the attribute is specified, it overrides
  >> the inheritance.  So if your Custom theme want to "cancel out", say, any
  >> existing foreground attribute setting, you need something like
  >> 
  >> '(froob ((t (:foreground unspecified :inherit parent-face))))

  CS> This did not fix it for me.

  CS> I think Dirk-Jan and I have the same issue, though, which is the
  CS> behavior of :inherit.

Yes -- in fact, before this change, the theme would look as expected if I
loaded it before - say - Wanderlust. However, with this change, that does not
work either anymore.
  
  CS> One example from my custom theme:

  CS>  '(erc-default-face ((t (:inherit default))))

  CS> This is supposed to inherit from

  CS>  '(default ((t (:background "#3f3f3f" :foreground "#dcdccc"))))

  CS> but it does not work.

  CS> This is probably related to what you describe above, but I don't
  CS> really understand it. foregound in erc-default-face is unspecified,
  CS> right? Should the inherit get the attributes from default or not?

  CS> I figured out a way to make my custom theme work, though. Loading it
  CS> through customize does not work, but if I open the theme file and eval
  CS> the buffer, it works and erc shows the my custom faces. Maybe this
  CS> helps to troubleshoot the problem?

Yes, indeed, that is what I do too now:
  
(defun zenburn()
  (interactive)
  (load-theme 'zenburn)
  (load-library "~/.emacs.d/elisp/themes/zenburn-theme.el"))


In general, it might make sense to first go back to 'factory settings' before
changing the theme, as it's quite unlikely that theme2 always overrides
everything from theme1 -- e.g. zenburn redefines hundreds of faces.
  
Best wishes,
Dirk.

-- 
Dirk-Jan C. Binnema                  Helsinki, Finland
e:djcb@djcbsoftware.nl           w:www.djcbsoftware.nl
pgp: D09C E664 897D 7D39 5047 A178 E96A C7A1 017D DA3C





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-05-13  4:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20110507091706.DC97939C792@djcbsoftware.nl>
     [not found] ` <4DC54D3D.7090409@gmail.com>
2011-05-08 19:19   ` bug#8454: deftheme, :inherit & overriding existing values Chong Yidong
2011-05-08 20:14     ` Chong Yidong
2011-05-09 20:41       ` Dirk-Jan C. Binnema
2011-05-10  3:18       ` Christoph Scholtes
2011-05-13  4:50         ` Dirk-Jan C. Binnema

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).