Subject: bug#79159: [PATCH] Do not display in the tab line tabs that are excluded.

From: Eli Zaretskii <[email-masked]>
Date: Wed, 06 Aug 2025 15:51:27 +0300

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Wed, 06 Aug 2025 09:28:06 +0300
> 
> >> >> 1. M-x global-tab-line-mode RET
> >> >> 2. C-x b foo RET
> >> >> 3. C-x b SPC *bar* RET
> >> >> 4. C-x <left>
> >> >>    Now the buffer name " *bar*" is visible on the tab-line.
> >> >> 5. C-x <left>
> >> >>    But now " *bar*" suddenly goes away.
> >> >> 
> >> >> This is because handling of excluded buffers is hard-coded
> >> >> in many window.el functions.
> >> >> 
> >> >> So not showing excluded buffers by default will avoid this snag.
> >> >
> >> > If there are bugs with handling excluded buffers, I hope we can fix
> >> > them, instead of leaving them hidden behind a user option.  People who
> >> > will use that option will see those bugs exactly as all of the users
> >> > see them today, and they _will_ complain.
> >> >
> >> > OTOH, since no one has yet complained about those bugs, perhaps
> >> > leaving this behavior be the default is not such a bad idea?
> >> 
> >> Not bugs, just unexpected inconsistencies.  window.el doesn't
> >> permit excluded buffers to exist in the window-prev-buffers list
> >> that is used for tab-line.  No one complained about this problem
> >> because it's very difficult to notice it: one moment there is
> >> an excluded buffer on the tab-line, and the next moment it disappears.
> >> 
> >> Not showing such buffers by default will fix this inconsistency.
> >
> > No, it will just sweep the problem under the carpet.  Since when are
> > we handling bugs in this manner?  If a feature needs work to be
> > finished, let's please invest the effort to do that work.  Let's
> > please not have semi-broken features.
> 
> Currently there is a bug in tab-line.el, and the proposed patch fixes it.
> 
> Without activating global-tab-line-mode try the following:
> 
> 0. emacs -Q
> 1. C-x b SPC *bar* RET
> 2. C-x b foo RET
> 3. C-x <left>
> 
> It switches to the initial buffer *scratch*,
> skipping the excluded buffer " *bar*".
> 
> Without the proposed patch the tab-line is broken,
> because it displays the excluded buffer,
> but 'C-x <left>' can't switch to it.
> 
> So tab-line.el should follow the logic of window.el
> and omit excluded buffers as well.

If you consider the above a bug due to the fact that we show excluded
buffers, the conclusion is that we should unconditionally avoid
showing them, and the user option or a variable which controls this
has no place.  That assumes that our intent is that excluded buffers
should not be shown by any tab-line, and can only be switched to with
the likes of "C-x b".

It's your call.