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

From: Daniel Mendler <[email-masked]>
Date: Thu, 10 Jul 2025 15:49:14 +0200

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.

Daniel