Subject: bug#71733: 29.3; tab-bar-tab-group-face-default invokes tab-bar-tab-face-default incorrectly?

From: Juri Linkov <[email-masked]>
Date: Sun, 23 Jun 2024 20:30:48 +0300

tags 71733 wontfix
close 71733 30.0.50
thanks

> `tab-bar-tab-group-face-default' hard codes the invocation to
> `tab-bar-tab-face-default' but should it instead invoke
> `tab-bar-tab-face-function' to benefit from a custom function?
>
> (defun tab-bar-tab-group-face-default (tab)
>   (if (not (or (eq (car tab) 'current-tab)
>                (funcall tab-bar-tab-group-function tab)))
>       'tab-bar-tab-ungrouped
>     (tab-bar-tab-face-default tab)))
> ;; should the last line be something like this?
>     (funcall tab-bar-tab-face-function tab)))
>
> I checked the latest `tab-bar' source code this morning and this hasn't yet
> been addressed, if indeed this is unintended behavior.

Sorry, this can't be changed because it will cause an infinite recursion.
You can see in 'tab-bar-format-tabs-groups':

                   (let ((tab-bar-tab-face-function
                          tab-bar-tab-group-face-function))
                     (tab-bar--format-tab tab i))

Then with the default value 'tab-bar-tab-group-face-default'
of 'tab-bar-tab-group-face-function', 'tab-bar-tab-face-function'
in 'tab-bar-tab-group-face-default' will recursively call itself.