Subject: Re: bug#39649: 27.0.60; tab-line doesn't scroll

From: Eli Zaretskii <[email-masked]>
Date: Fri, 28 Feb 2020 11:12:47 +0200

> From: Juri Linkov <[email-masked]>
> Cc: João Guerra <[email-masked]>,
>   [email-masked]
> Date: Thu, 27 Feb 2020 01:33:00 +0200
> 
> > I suspect that the problem comes from the tab-line fontified differently
> > by core and when fontified manually in the buffer.
> 
> Eli, could you explain why there no wrapper around the C function
> display_mode_element exposed to Lisp.

Why would we need that?  The related display code is in C, so we never
needed to expose this to Lisp.

I also don't understand the relation between this question and the
recipes you show.

> The closest function is format-mode-line but still its formatting is
> different from what display_mode_element really displays in the
> tab-line.

Why is that a problem?  format-mode-line was not intended to be used
in display context.

> 1. emacs -Q
> 2. M-x global-tab-line-mode
> 
> 3. C-x b test1
> 4. M-: (insert (format-mode-line (tab-line-format)))
> 5. Note how the tab uses the face tab-line-tab
>    with released-button box style, but the tab-line
>    doesn't use the face tab-line

I don't see tab-line-tab face, I see either tab-line-tab-inactive or
tab-line-tab-current.  And the button style and its mouse-sensitive
behavior follows what I see on the real tab-line.

But maybe I don't understand what you allude to here.  What is the
"tab" in this context, and what is "tab-line"?  You have one inserted
into buffer text and one displayed on header-line-like tab-line --
which one do you allude to here?  And why do you think what is
displayed is some kind of problem?

> 6. C-x b test2
> 7. M-: (insert (format-mode-line (tab-line-format) 'tab-line))
> 8. Note how the the tab-line now uses the face tab-line,
>    but this face overrides the faces of individual tabs that
>    should have the face tab-line-tab with released-button box style.

And here I don't understand what you mean by "overrides".

> I can't find a function that would insert to the current buffer
> a string formatted exactly as the tab-line displayed
> above the window.

Why is that needed?

P.S.  I did all the testing in Emacs 27.0.90, the latest emacs-27
branch.

Thanks.