Hrvoje Niksic wrote:
Didier, if you're working on this, you might want to fix the
code.
The above comment, as it stands, does not cover all the cases.
Yes, I'm aware of the problem and it's indeed my intention to work on
it. BTW, I'm using a setup similar to yours with respect to faces (a dark
background pixmap for the default face and so on) and I have a temporary work
around (my faces are set up with custom, but you can do the same in your
.emacs): I setup the modeline face to a a grey background color, and *ALSO* a
background pixmap, but with a value of "[nothing]". That way, all faces
deriving from the modeline face actually be displayed with the grey
background.
The correct way to resolve this conflict is like this:
The cachel needs to have either a background or a background
pixmap.
Instead of examining only the specifications of one face, the code
should go upward in the face inheritance hierarchy, and stop at
the level where either `background' or `background-pixmap' is
specified, and make that one the winner for the cachel. If they
are specified on the same level, `background' wins.
This was originally formulated by Ben, and I believe it would work
correctly in all cases. The current code would be the special case of
it, where the `background' is specified for the current case and no
upward examination is necessary.
Yes, this is indeed the proper solution.
In a somewhat longer term, I plan to have a real `emacs-background'
specifier (I believe that the current status of the default face's background
is conceptually wrong; I can elaborate on this) instead of the current trick
of using face attribute for this. This is however subordinate to having a real
X Window per Emacs Window, which I also intend to implement. For Windows, I
don't know how it goes. Is the background-pixmap actually working under
Windows ?
--
/ / _ _ Didier Verna
http://www.inf.enst.fr/~verna/
- / / - / / /_/ / EPITA / LRDE mailto:didier@lrde.epita.fr
/_/ / /_/ / /__ / 14-16 rue Voltaire Tel. +33 (1) 53 14 59 47
94276 Kremlin-Bicêtre cedex Fax. +33 (1) 44 08 01 99