Subject: bug#64759: Broken faces

From: Eli Zaretskii <[email-masked]>
Date: Mon, 31 Jul 2023 21:31:54 +0300

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Mon, 31 Jul 2023 20:42:22 +0300
> 
> Then clicking on 'foo' shows:
> 
>   Face: foo (sample) (customize this face)
>   Documentation:
>   Not documented as a face.
>              Family: unspecified
>             Foundry: unspecified
>               Width: unspecified
>              Height: unspecified
>              Weight: unspecified
>               Slant: unspecified
>          Foreground: unspecified
>   DistantForeground: unspecified
>          Background: unspecified
>           Underline: unspecified
>            Overline: unspecified
>      Strike-through: unspecified
>                 Box: unspecified
>             Inverse: unspecified
>             Stipple: unspecified
>                Font: unspecified
>             Fontset: unspecified
>              Extend: unspecified
>             Inherit: unspecified
> 
> That's all that Lisp programmers need to know: that in an empty face
> all attributes are unspecified.

See, I don't think this is accurate.  I think the result depends on
the default attributes, the ones you can change by using
set-face-attribute with FRAME set to t.

> >> > 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.
> 
> It's possible that these faces are applied over other faces
> that will break the default theme.

Such use of these faces only makes sense if the face is customized to
have some attributes different from the defaults.  The intention of
the default definition of these faces is to make them look no
different from the default face.