bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#53636: 29.0.50; face-remapping broken on master


From: Eli Zaretskii
Subject: bug#53636: 29.0.50; face-remapping broken on master
Date: Wed, 02 Feb 2022 20:07:58 +0200

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 53636@debbugs.gnu.org,  tsdh@gnu.org
> Date: Wed, 02 Feb 2022 18:59:49 +0100
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > If we want to solve this cleanly and radically, I'd prefer to break
> > the vicious circle by removing the inheritance from basic faces
> > altogether.  The basic faces are just that: they aren't supposed to
> > inherit from other basic faces.  That would also decouple header-line
> > and everything else as a side effect.
> 
> OK, you want to change the header-line and mode-line-inactive faces so
> that they no longer inherit from the mode-line face?

Yes, I think this is the best way forward.  Though it will be somewhat
backward-incompatible, if someone customizes mode-line and expects
header-line to follow suit.

> But they aren't the only basic faces that have this problem --
> `tab-line' inherits from `variable-pitch', for instance.

We should "un-inherit" all of the basic faces.

> > That's how face-remapping-alist takes its effect.  If you want this to
> > work for inherited faces, you must do this for the parent face,
> > recursively, before you do it for the face in which you are
> > interested.  You want to add the inheritance-chasing loop to basic
> > face look up?  I don't.
> 
> No, I don't.  I was thinking of altering `face-remap-add-relative' so
> that it resolves the faces that inherit instead of leaving it to
> redisplay.

I don't think this can work, because that would mean the original face
will be affected by remapping, won't it?  Face remapping is
buffer-local, whereas faces are defined for the entire frame.  So we
cannot affect the original face and keep the effect buffer-local.  And
if we produce a different face symbol and modify it instead, then
references to the original face symbol will not be redirected to the
remapped face.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]