Subject: Re: bug#64759: Broken faces

From: Juri Linkov <[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.

> 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 --

>> >> Do you agree that currently the value '((t nil))
>> >> should be used for faces without default face attributes?
>> >
>> > Yes, I think so.  If no better face to inherit from is available in
>> > each such case, that is.
>>
>> This means these faces should have by default '((t nil)):
>> semantic-decoration-on-includes, shr-h4, shr-h5, shr-h6,
>> nxml-text, nxml-delimiter, nxml-element-colon, makefile-shell
>> as before?
>
> 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.