Subject: bug#78953: 31.0.50; tab-bar-format-align-right alignment breaks if field widths change

From: Stéphane Marks <[email-masked]>
Date: Thu, 10 Jul 2025 09:16:46 -0400

On Thu, Jul 10, 2025 at 9:05 AM Daniel Mendler via Bug reports for GNU
Emacs, the Swiss army knife of text editors <[email-masked]> wrote:

> Hello Juri,
>
> Daniel Mendler <[email-masked]> writes:
> > Juri Linkov <[email-masked]> writes:
> >>> Thanks. I think the code should be simplified - in fact it is
> >>> problematic like this since it will leak memory, if the string changes,
> >>> for example for a timer which counts up, where the same string will
> only
> >>> needed for a short while. A hash table is not needed to memoize a
> single
> >>> pair. It suffices to only store the current string to optimize
> >>> redisplay. You could store the string in the car of a cons, and the
> >>> width in the cdr.
> >>
> >> So you meant caching only the last string?  This is implemented now as
> well.
> >
> > Yes, this is exactly what I meant. I will test it soon. Thanks again!
>
> I have tested your patches and they work well. No flicker or jumping and
> no negative performance impact due. Excellent work - also on the tab-bar
> in general! I really appreciate the addition of this feature to Emacs.
> It is particularly handy with EXWM where I can use it as system status
> bar.
>
> Since we are talking about the tab bar already I have another question -
> sometimes (rarely) my tab bar gets too long and then it wraps around,
> which I find undesirable. I would prefer if the content were truncated.
> I suspect this is harder to address, e.g., via an option
> tab-bar-truncate/tab-line-truncate? In any case, this is a rare edge
> case in my usage.
>

What if, instead, each tab's content would shrink to fit?  This is closer
to how web browsers fit tabs.  There are browser extensions that offer
multiple lines or scroll left/right, but I find those more annoying since I
can't see them all.  One can always hover over each tab to see what its
title is.  In my configuration, my help text lists the buffers (and it's
helpful to use the mouse-face support we added earlier in the year).