Subject: Re: 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 10:16:33 -0400

On Thu, Jul 10, 2025 at 9:49 AM Daniel Mendler <[email-masked]>
wrote:

> Stéphane Marks <[email-masked]> writes:
>
> > On Thu, Jul 10, 2025 at 9:34 AM Daniel Mendler <[email-masked]>
> > wrote:
> >
> >> Stéphane Marks <[email-masked]> writes:
> >>
> >> > On Thu, Jul 10, 2025 at 9:23 AM Daniel Mendler <
> [email-masked]>
> >> > wrote:
> >> >
> >> >> Stéphane Marks <[email-masked]> writes:
> >> >>
> >> >> > 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.
> >> >>
> >> >> Yes, this would be great, as long as each tab bar field would shrink,
> >> >> not only the tabs themselves at the very left. For me the overflow
> >> >> happens not only because I have too many tabs but because my system
> bar
> >> >> gets too long.
> >> >>
> >> >> However I suspect that such shrinking behavior is harder to implement
> >> >> nicely, in contrast to simple truncation.
> >> >>
> >> >
> >> > Reading through tab-bar for a feature I don't use, but maybe I
> should, is
> >> > `tab-bar-auto-width` and its controls `tab-bar-auto-width-max` and
> >> > `tab-bar-auto-width-min` so perhaps this feature already exists.
> >>
> >> I see. This is exactly the feature which does not help for my use case,
> >> since it only resizes the tabs and not all the other tab fields, which I
> >> would like to truncate.
> >>
> >> I would like to see an option `tab-bar-truncate' or `tab-line-truncate'
> >> which simply prevent line wrapping, similar to the buffer variable
> >> `truncate-lines'.
> >>
> >
> > Perhaps customizing `tab-bar-auto-width-faces` and/or
> > `tab-bar-auto-width-functions` would allow relaxing field limits to your
> > taste.
>
> This looks interesting. But I just naively tried the following and Emacs
> hangs up as result.
>
> (setq tab-bar-auto-width t
>       tab-bar-auto-width-functions (list #'always))
>
> But the auto width setting leads to growing fields and this is not what
> I want. I don't want that the tab fields grow. I want them to shrink
> only in case of overflow. So maybe `tab-bar-auto-width` could be
> extended to handle the values nil, t, or `no-grow'? And also another
> auto width function could be added which handles non-tab fields too.
>

Seems sensible.  Not sure on the hang.  I'll leave that to Juri...