* mode-line-inactive and face inheritance
@ 2002-02-16 7:55 Eli Zaretskii
2002-02-16 21:49 ` Kim F. Storm
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Eli Zaretskii @ 2002-02-16 7:55 UTC (permalink / raw)
Here's the definition of mode-line-inactive face:
(defface mode-line-inactive
'((((type x w32 mac) (background light) (class color))
:inherit mode-line
:weight light
:box (:line-width -1 :color "grey75" :style nil)
:foreground "grey20" :background "grey90")
(((type x w32 mac) (background dark) (class color))
:inherit mode-line
:weight light
:box (:line-width -1 :color "grey40" :style nil)
:foreground "grey80" :background "grey30")
(t
:inverse-video t))
"Basic mode line face for non-selected windows."
:version "21.2"
:group 'modeline
:group 'basic-faces)
The definition for non-GUI versions doesn't include `:inherit mode-line'.
Is that intentional? I think it's not a good idea to have this
difference, especially since the documentation mentions the inheritance,
and doesn't say it's display-dependent. FWIW, I don't see any reason
why an :inherit attribute would hurt here.
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-16 7:55 mode-line-inactive and face inheritance Eli Zaretskii
@ 2002-02-16 21:49 ` Kim F. Storm
2002-02-17 16:48 ` Richard Stallman
2002-02-18 15:24 ` Stefan Monnier
2 siblings, 0 replies; 12+ messages in thread
From: Kim F. Storm @ 2002-02-16 21:49 UTC (permalink / raw)
Cc: emacs-devel
"Eli Zaretskii" <eliz@is.elta.co.il> writes:
> Here's the definition of mode-line-inactive face:
> (t
> :inverse-video t))
> "Basic mode line face for non-selected windows."
> :version "21.2"
> :group 'modeline
> :group 'basic-faces)
>
> The definition for non-GUI versions doesn't include `:inherit mode-line'.
> Is that intentional?
No, it is an oversight on my part (I copied this from the header-line font,
so I would assume it has a similar problem).
For non-GUI, the proper setting would probably be just :inherit and
nothing else (to make it identical to the normal mode line).
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-16 7:55 mode-line-inactive and face inheritance Eli Zaretskii
2002-02-16 21:49 ` Kim F. Storm
@ 2002-02-17 16:48 ` Richard Stallman
2002-02-17 18:24 ` Eli Zaretskii
2002-02-18 15:24 ` Stefan Monnier
2 siblings, 1 reply; 12+ messages in thread
From: Richard Stallman @ 2002-02-17 16:48 UTC (permalink / raw)
Cc: emacs-devel
The definition for non-GUI versions doesn't include `:inherit mode-line'.
Is that intentional?
Unless there is some very good reason for the discrepancy,
would you please add that inherit?
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-17 16:48 ` Richard Stallman
@ 2002-02-17 18:24 ` Eli Zaretskii
0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2002-02-17 18:24 UTC (permalink / raw)
Cc: emacs-devel
> Date: Sun, 17 Feb 2002 09:48:52 -0700 (MST)
> From: Richard Stallman <rms@gnu.org>
>
> The definition for non-GUI versions doesn't include `:inherit mode-line'.
> Is that intentional?
>
> Unless there is some very good reason for the discrepancy,
> would you please add that inherit?
I added it to mode-line-inactive and also to header-line.
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-16 7:55 mode-line-inactive and face inheritance Eli Zaretskii
2002-02-16 21:49 ` Kim F. Storm
2002-02-17 16:48 ` Richard Stallman
@ 2002-02-18 15:24 ` Stefan Monnier
2002-02-18 19:44 ` Kim F. Storm
2002-02-19 21:30 ` Richard Stallman
2 siblings, 2 replies; 12+ messages in thread
From: Stefan Monnier @ 2002-02-18 15:24 UTC (permalink / raw)
Cc: emacs-devel
> Here's the definition of mode-line-inactive face:
>
> (defface mode-line-inactive
> '((((type x w32 mac) (background light) (class color))
> :inherit mode-line
> :weight light
> :box (:line-width -1 :color "grey75" :style nil)
> :foreground "grey20" :background "grey90")
> (((type x w32 mac) (background dark) (class color))
> :inherit mode-line
> :weight light
> :box (:line-width -1 :color "grey40" :style nil)
> :foreground "grey80" :background "grey30")
> (t
> :inverse-video t))
> "Basic mode line face for non-selected windows."
> :version "21.2"
> :group 'modeline
> :group 'basic-faces)
>
> The definition for non-GUI versions doesn't include `:inherit mode-line'.
> Is that intentional? I think it's not a good idea to have this
> difference, especially since the documentation mentions the inheritance,
> and doesn't say it's display-dependent. FWIW, I don't see any reason
> why an :inherit attribute would hurt here.
Reminds me that I have a minor hack in faces.el that allows
slightly more structured specs for faces, so that you can move the
`:inherit mode-line' outside of any display-specific thing.
More specifically, it adds an `all' entry which (just like `t')
always matches but doesn't prevent subsequent specs from being
considered. Also it allows nesting of display-specific specs
so you can extract the common part of the `light' and `'dark'
settings for `color' displays.
It needs to be cleaned up and documented before it's ready for
commit, but I'm not even sure if there's any interest in such
a feature.
Stefan
Index: faces.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/faces.el,v
retrieving revision 1.254
diff -c -r1.254 faces.el
*** faces.el 12 Feb 2002 02:59:05 -0000 1.254
--- faces.el 18 Feb 2002 15:18:05 -0000
***************
*** 1283,1301 ****
(unless frame
(setq frame (selected-frame)))
(let ((tail spec)
! result)
(while tail
(let* ((entry (pop tail))
(display (car entry))
(attrs (cdr entry)))
! (when (face-spec-set-match-display display frame)
! (setq result (if (listp (car attrs))
;; Old-style entry, the attribute list is the
;; first element.
! (car attrs)
! attrs)
! tail nil))))
! result))
(defun face-spec-reset-face (face &optional frame)
--- 1283,1307 ----
(unless frame
(setq frame (selected-frame)))
(let ((tail spec)
! result all)
(while tail
(let* ((entry (pop tail))
(display (car entry))
(attrs (cdr entry)))
! (if (eq display 'all)
! (setq all attrs)
! (when (face-spec-set-match-display display frame)
! (setq result (cond
! ((null (cdr attrs)) ;; was (listp (car attrs))
;; Old-style entry, the attribute list is the
;; first element.
! (car attrs))
! ((listp (car attrs))
! ;; Nested spec
! (face-spec-choose attrs frame))
! (t attrs))
! tail nil)))))
! (if all (append result all) result)))
(defun face-spec-reset-face (face &optional frame)
***************
*** 1747,1770 ****
;; happens to look good with the only current use of header-lines,
;; the info browser. XXX
:underline t)
! (((class color grayscale) (background light))
! :inherit mode-line
! :background "grey90" :foreground "grey20"
! :box nil)
! (((class color grayscale) (background dark))
! :inherit mode-line
! :background "grey20" :foreground "grey90"
! :box nil)
(((class mono) (background light))
:inherit mode-line
:background "white" :foreground "black"
:inverse-video nil
:box nil
:underline t)
(((class mono) (background dark))
:inherit mode-line
:background "black" :foreground "white"
:inverse-video nil
:box nil
:underline t)
(t
--- 1753,1779 ----
;; happens to look good with the only current use of header-lines,
;; the info browser. XXX
:underline t)
! (((class color grayscale))
! (all
! :inherit mode-line
! :family "helv"
! :box (:line-width -1 :style released-button))
! (((background light))
! :background "grey90" :foreground "grey20")
! (((background dark))
! :background "grey20" :foreground "grey90"))
(((class mono) (background light))
:inherit mode-line
:background "white" :foreground "black"
:inverse-video nil
+ :family "helv"
:box nil
:underline t)
(((class mono) (background dark))
:inherit mode-line
:background "black" :foreground "white"
:inverse-video nil
+ :family "helv"
:box nil
:underline t)
(t
***************
*** 1775,1786 ****
(defface tool-bar
! '((((type x w32 mac) (class color))
! (:box (:line-width 1 :style released-button)
! :background "grey75" :foreground "black"))
(((type x) (class mono))
! (:box (:line-width 1 :style released-button)
! :background "grey" :foreground "black"))
(t
()))
"Basic tool-bar face."
--- 1784,1796 ----
(defface tool-bar
! '((all
! :box (:line-width 1 :style released-button)
! :foreground "black")
! (((type x w32 mac) (class color))
! :background "grey75")
(((type x) (class mono))
! :background "grey")
(t
()))
"Basic tool-bar face."
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-18 15:24 ` Stefan Monnier
@ 2002-02-18 19:44 ` Kim F. Storm
2002-02-18 22:08 ` Stefan Monnier
2002-02-19 21:30 ` Richard Stallman
1 sibling, 1 reply; 12+ messages in thread
From: Kim F. Storm @ 2002-02-18 19:44 UTC (permalink / raw)
Cc: emacs-devel
"Stefan Monnier" <monnier+gnu/emacs@RUM.cs.yale.edu> writes:
> Reminds me that I have a minor hack in faces.el that allows
> slightly more structured specs for faces, so that you can move the
> `:inherit mode-line' outside of any display-specific thing.
I don't quite understand -- the rewritten initialization of
the mode-line-inactive face still has multiple :inherit tags.
> It needs to be cleaned up and documented before it's ready for
> commit, but I'm not even sure if there's any interest in such
> a feature.
Looing at the two rewritten face specs doesn't persuade me this
is desireable in general (the partial structuring doesn't really
make things clearer to me). But for the :inherit tag, I can see it
could be useful.
What happens if the `all' spec contains a tag which is also in the
specific section? E.g. if all gives one foreground and the specific
section another -- which one wins? (I would say the specific
section).
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-18 19:44 ` Kim F. Storm
@ 2002-02-18 22:08 ` Stefan Monnier
0 siblings, 0 replies; 12+ messages in thread
From: Stefan Monnier @ 2002-02-18 22:08 UTC (permalink / raw)
Cc: Stefan Monnier, emacs-devel
> Looking at the two rewritten face specs doesn't persuade me this
> is desireable in general (the partial structuring doesn't really
> make things clearer to me).
I agree that the structuring tends to be a bit difficult to read.
> But for the :inherit tag, I can see it could be useful.
That's the main kind of use I had in mind: I hate duplication so I wanted
to reduce duplication between the different arms of a face spec.
> What happens if the `all' spec contains a tag which is also in the
> specific section? E.g. if all gives one foreground and the specific
> section another -- which one wins? (I would say the specific
> section).
Of course, the specific section should win, although I haven't actually
checked whether that's indeed what happens.
Stefan
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-18 15:24 ` Stefan Monnier
2002-02-18 19:44 ` Kim F. Storm
@ 2002-02-19 21:30 ` Richard Stallman
2002-02-19 22:53 ` Stefan Monnier
1 sibling, 1 reply; 12+ messages in thread
From: Richard Stallman @ 2002-02-19 21:30 UTC (permalink / raw)
Cc: eliz, emacs-devel
More specifically, it adds an `all' entry which (just like `t')
always matches but doesn't prevent subsequent specs from being
considered.
That seems useful. `common' might be clearer than `all'.
Also it allows nesting of display-specific specs
so you can extract the common part of the `light' and `'dark'
settings for `color' displays.
That seems too complex; I think I would not want to document this
even if it worked.
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-19 21:30 ` Richard Stallman
@ 2002-02-19 22:53 ` Stefan Monnier
2002-02-22 4:31 ` Richard Stallman
0 siblings, 1 reply; 12+ messages in thread
From: Stefan Monnier @ 2002-02-19 22:53 UTC (permalink / raw)
Cc: monnier+gnu/emacs, eliz, emacs-devel
> More specifically, it adds an `all' entry which (just like `t')
> always matches but doesn't prevent subsequent specs from being
> considered.
> That seems useful. `common' might be clearer than `all'.
Actually, I think we can just reuse t instead of `all' or `common'.
Currently t can only be meaningfully used for the last entry,
so we can simply extend its meaning a little bit in a backward
compatible way.
> Also it allows nesting of display-specific specs
> so you can extract the common part of the `light' and `'dark'
> settings for `color' displays.
>
> That seems too complex; I think I would not want to document this
> even if it worked.
I'm ambivalent about it. I think it could also make things simpler.
Currently defface accepts a SPEC of the form:
SPEC ::= (CONDSPEC CONDSPEC ...)
CONDSPEC ::= (COND PROPS)
| (COND PROP PROP ...)
Where (COND PROPS) is an obsolete form kept for backward compatibility only.
The code I posted changes it to
SPEC ::= (CONDSPEC CONDSPEC ...)
CONDSPEC ::= (COND PROPS)
| (COND PROP PROP ...)
| (COND CONDSPEC CONDSPEC ...)
But an alternative way to get a similar result would be to use
SPEC ::= (CONDSPEC CONDSPEC ...)
| (PROP PROP ...)
CONDSPEC ::= (COND PROPS)
| (COND . SPEC)
which has the advantage that a simple defface that has no conditional
part could now be written as
(defface font-lock-doc-face
'(:inherit font-lock-string-face)
"Font Lock mode face used to highlight documentation."
:group 'font-lock-highlighting-faces)
instead of
(defface font-lock-doc-face
'((t :inherit font-lock-string-face))
"Font Lock mode face used to highlight documentation."
:group 'font-lock-highlighting-faces)
-- Stefan
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-19 22:53 ` Stefan Monnier
@ 2002-02-22 4:31 ` Richard Stallman
2002-02-22 16:07 ` Stefan Monnier
0 siblings, 1 reply; 12+ messages in thread
From: Richard Stallman @ 2002-02-22 4:31 UTC (permalink / raw)
Cc: monnier+gnu/emacs, eliz, emacs-devel
Actually, I think we can just reuse t instead of `all' or `common'.
Currently t can only be meaningfully used for the last entry,
so we can simply extend its meaning a little bit in a backward
compatible way.
Even better.
> Also it allows nesting of display-specific specs
> so you can extract the common part of the `light' and `'dark'
> settings for `color' displays.
>
> That seems too complex; I think I would not want to document this
> even if it worked.
I'm ambivalent about it. I think it could also make things simpler.
I am thinking about documenting this, and it seems complex, so I think
we should do without it.
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-22 4:31 ` Richard Stallman
@ 2002-02-22 16:07 ` Stefan Monnier
2002-02-23 5:26 ` Richard Stallman
0 siblings, 1 reply; 12+ messages in thread
From: Stefan Monnier @ 2002-02-22 16:07 UTC (permalink / raw)
Cc: monnier+gnu/emacs, eliz, emacs-devel
> > Also it allows nesting of display-specific specs
> > so you can extract the common part of the `light' and `'dark'
> > settings for `color' displays.
> >
> > That seems too complex; I think I would not want to document this
> > even if it worked.
>
> I'm ambivalent about it. I think it could also make things simpler.
>
> I am thinking about documenting this, and it seems complex, so I think
> we should do without it.
Could explain what's complex about it ?
Stefan
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: mode-line-inactive and face inheritance
2002-02-22 16:07 ` Stefan Monnier
@ 2002-02-23 5:26 ` Richard Stallman
0 siblings, 0 replies; 12+ messages in thread
From: Richard Stallman @ 2002-02-23 5:26 UTC (permalink / raw)
Cc: monnier+gnu/emacs, eliz, emacs-devel
Could explain what's complex about it ?
I don't know how to explain a thing like this. You either see it or
not.
Sorry.
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2002-02-23 5:26 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-02-16 7:55 mode-line-inactive and face inheritance Eli Zaretskii
2002-02-16 21:49 ` Kim F. Storm
2002-02-17 16:48 ` Richard Stallman
2002-02-17 18:24 ` Eli Zaretskii
2002-02-18 15:24 ` Stefan Monnier
2002-02-18 19:44 ` Kim F. Storm
2002-02-18 22:08 ` Stefan Monnier
2002-02-19 21:30 ` Richard Stallman
2002-02-19 22:53 ` Stefan Monnier
2002-02-22 4:31 ` Richard Stallman
2002-02-22 16:07 ` Stefan Monnier
2002-02-23 5:26 ` Richard Stallman
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).