Subject: bug#46299: 28.0.50; Value of tab-bar-show not respected in new frames.

From: Juri Linkov <[email-masked]>
Date: Sun, 14 Feb 2021 20:50:40 +0200

>> Thank you for working on this patch.  Please prepare the ChangeLog
>> commit message, so your patch could be pushed to master.  Then it would be
>> easier to reason about further changes and base them on the pushed version.
>
> please find the patch including the commit message with ChangeLog attached.

Thanks, now your patch is pushed to master.

While using it, I noticed a new problem.
There is this code in 'tab-switcher':

    (let ((tab-bar-new-tab-choice t)
          ;; Don't enable tab-bar-mode if it's disabled
          (tab-bar-show nil))
      (tab-bar-new-tab))

Before your patch, I did nothing with the enabled tab-bar,
but now it disables the tab-bar, and doesn't enable it again later,
because tab-bar-show is let-bound to nil.

A good solution would be to add a new choice value to tab-bar-show.
Something like 'do-not-change-tab-bar-lines', but shorter.
Then when let-bound, it should do nothing with the tab-bar-lines.

Also this is related to another problem:
What if the user wants to manually enable the tab bar on one frame only
without enabling tab-bar-mode?  Currently it's possible with

  (add-hook 'after-make-frame-functions 'toggle-frame-tab-bar)

But tab-bar--update-tab-bar-lines will disable it sooner or later.
Customizing to the same value like 'do-not-change-tab-bar-lines'
will solve this problem as well.