GNU bug report logs - #79141
31.0.50; The tab-bar-format-align-right cache doesn't take face changes and per-frame faces into account

Previous Next

Package: emacs;

Reported by: Steven Allen <steven <at> stebalien.com>

Date: Fri, 1 Aug 2025 20:58:02 UTC

Severity: normal

Fixed in version 31.0.50

Done: Juri Linkov <juri <at> linkov.net>

Full log


Message #32 received at 79141 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juri Linkov <juri <at> linkov.net>
Cc: mail <at> daniel-mendler.de, steven <at> stebalien.com, 79141 <at> debbugs.gnu.org
Subject: Re: bug#79141: 31.0.50; The tab-bar-format-align-right cache
 doesn't take face changes and per-frame faces into account
Date: Mon, 11 Aug 2025 15:19:35 +0300
> From: Juri Linkov <juri <at> linkov.net>
> Cc: Daniel Mendler <mail <at> daniel-mendler.de>,  steven <at> stebalien.com,
>   79141 <at> debbugs.gnu.org
> Date: Sun, 10 Aug 2025 21:52:32 +0300
> 
> >> >> 1. Have a per-frame cache.
> >> >> 2. Update a global `face-modification-tick' (similar to
> >> >> `buffer-modification-tick') whenever faces are updated, invalidating the
> >> >> cache whenever this changes.
> >> >
> >> > Please be advised that the current code invalidates the frame's face
> >> > cache and frees all the faces whenever some face is changed.  That's
> >> > because we don't currently track face dependencies, and so have no
> >> > idea what other faces will change as result of changing some face.  So
> >> > if you want a more efficient face cache, you first need to solve this
> >> > dependency-tracking issue.
> >> 
> >> Couldn't this face cache invalidation logic be used here? Whenever such
> >> a face cache invalidation happens, the proposed `face-modification-tick'
> >> variable would be incremented.
> >
> > I don't quite understand what would that tick be used for, but we
> > already have in Emacs indications that the face cache was invalidated,
> > so maybe there's no need for introducing that tick.
> 
> Are these indications exposed to Lisp?

No.  Faces are generally managed in C, not in Lisp.  But like I said:
I don't have a clear idea what should the proposed modification hook be
used for, so I'm not sure whether we need to expose anything to Lisp.
If you or someone else could describe the proposed use of such a tick,
I could try providing a more useful advice.




This bug report was last modified 2 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.