Subject: Re: bug#64759: Broken faces

From: Eli Zaretskii <[email-masked]>
Date: Fri, 28 Jul 2023 21:49:49 +0300

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Fri, 28 Jul 2023 20:30:44 +0300
> 
> >> >> The semantics of nil could be the same as '((t nil)).
> >> >
> >> > And what is the semantics of '((t nil)) ?  What attributes will the
> >> > face have when realized?
> >>
> >> No attributes.  This is the standard value used by empty faces.
> >
> > What does this mean?  For example, what would be the foreground color?
> > what would be the font? etc.
> 
> No foreground color, and no font.

There can be no such face.

> > I'm not familiar with "empty face" notion.  A face always has
> > attributes when it is fully realized, otherwise Emacs will be unable
> > to use it.
> 
> "Empty face" is the standard notion.  Here's an example how it's used:
> 
> 1. M-x make-empty-face RET foo RET
> 2. M-x customize-face RET foo RET
> 
> Then output is:
> 
>   Hide Foo face: [sample]
>       State : NO CUSTOMIZATION DATA; not intended to be customized.
>      nil
>      -- Empty face --

We are mis-communicating.  My point is that we need to explain in the
documentation the effect of such a defface when the face is realized
and displayed.  Lisp programmers need to understand that to be able to
use this correctly and predictably.

> > Only if "no better face to inherit from is available" in all of those
> > cases.  Which I'm not sure is true.  If you are sure, please tell why
> > the faces I put there are not better ideas.
> 
> Because they will cause the same problem as with display-time-date-and-time,
> except that other faces are used less often, so it will take time until users
> will notice these problems.

display-time-date-and-time is used on the mode line, where the colors
are different.  The other faces are for buffer text, so the problems
with display-time-date-and-time don't necessarily apply.