GNU bug report logs -
#53636
29.0.50; face-remapping broken on master
Previous Next
Reported by: Tassilo Horn <tsdh <at> gnu.org>
Date: Sun, 30 Jan 2022 13:55:02 UTC
Severity: normal
Tags: confirmed
Found in version 29.0.50
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #43 received at 53636 <at> debbugs.gnu.org (full text, mbox):
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Cc: 53636 <at> debbugs.gnu.org, tsdh <at> gnu.org
> Date: Wed, 02 Feb 2022 18:59:49 +0100
>
> Eli Zaretskii <eliz <at> 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.
This bug report was last modified 3 years and 158 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.