0

Below two screenshots.

The first one before the click on a tab:

enter image description here


The second one after the click on the tab:

enter image description here


As you can see above the click on the tab does not give the buffer with the name shown in the tab.

The core of the issue is that Emacs 29.0.60 lucid GUI does not update the names shown in the tabs when a buffer is killed from one of the other tabs.

Is something wrong with my expectation that after killing a buffer the tabs no more able to show this buffer change their labels to the buffers they will actually show when clicking these tabs?

Below a third screenshot after the click on the second tab showing .emacs:

enter image description here

10
  • This looks like a bug to me ... I assume that Eli Z. will accept bug reports for the developmental master branch via M-x report-emacs-bug. In the past, I have also used the developer mailing list for certain questions about potential bugs, versus features ... In either case, be prepared to always spend time with the developers subsequent to filing any bug report to help track down the issue and test potential fixes, etc.
    – lawlist
    Commented Mar 31, 2023 at 20:13
  • 1
    Reported: bug#6257
    – oOosys
    Commented Mar 31, 2023 at 21:17
  • (That's likely the wrong bug number - too low.)
    – Drew
    Commented Mar 31, 2023 at 21:48
  • bug#62575 - thanks ... copy/paste problem. 39 new bugs since my last bug report two days ago ... makes 20 bug reports per day ... is Emacs so buggy or is it business as usual? (I haven't yet any experience in that area).
    – oOosys
    Commented Mar 31, 2023 at 21:55
  • Not that I know anything about tab-bar-mode but from what I read in the Emacs manual, it has to do with window configurations rather than buffers. There is a different facility of (per-window) tab-lines that has to do with buffers. At this point, I am inclined to believe that it is a misunderstanding of what tab-bar-mode does, rather than a bug, but I don't know enough about it to say for sure.
    – NickD
    Commented Apr 1, 2023 at 1:01

1 Answer 1

0

It's MAYBE a bug#62575 ( reported 2023-03-31 )


Below the steps required to reproduce the "bug":

  1. ~ $ emacs -Q
  2. Menu -> Options -> Show/Hide -> Tab Bar (gives Tab scratch)
  3. 1x click on rightmost * in the Tab Bar to create a new Tab (gives 2x scratch Tabs)
  4. With the rightmost (second) Tab open ~/.emacs (gives 1x scratch and 1x .emacs Tabs)
  5. 2x click on rightmost * in the Tab Bar to create twp new Tabs (gives 1x scratch and 3x .emacs Tabs)
  6. with rightmost Tab active kill the .emacs buffer [C-x k] (the Tabs label turns to *scratch the other two Tabs labeled .emacs keep their labels, so there are 1x scratch, 2x .emacs, 1x scratch Tabs)
  7. click the second Tab labeled .emacs' (result: the label of the Tab turns to Messages. the Tab Bar shows scratch Messages .emacs scratch )

The bug: the third Tab still keeps its .emacs label and the click on the second Tab labeled .emacs does not show the .emacs file, but the buffer Messages.


Below a patch you can place in the Emacs initialization file which will update Tab Bar Tabs labels on killing a buffer (provided by the Emacs development team):

(add-hook 'kill-buffer-hook
          (lambda ()
            (let ((tabs (reverse
                         (mapcar (lambda (tab) (1+ (alist-get 'index tab)))
                                 (tab-bar-get-buffer-tab nil t nil t)))))
              (run-with-timer
               0 nil
               (lambda (tabs) (dolist (tab tabs) (tab-bar-select-tab tab)))
               tabs))))

Below the responses from the Emacs development team:

Can reproduce in 30 (db7e95531ac36ae842787b6c5f2859d0642c78cc) and 28.2 (tagged) -- so even if this is a regression, it would not be a recent one.

Essentially, the reported bug can be summarized as: the tab names on a tab bar do not respond to situations where a buffer has been deleted.

In addition, I noticed that this behavior extends to renaming a buffer as well (tried it in 30, not in 28.2). The reproducer is to replace (6) above with the following, and observe that the other tabs do not update their names until you click on them.

C-x x r hello RET


After looking at the code, I'm not sure this is a bug. The tab names are just labels, although they are conveniently set to the name of the buffer in the window to be selected when the tab is current. But otherwise they are just labels. When you click on the tab, its name is updated to reflect the buffer shown in the selected window, so I think Emacs is behaving correctly, although it might be a bit unexpected.

2
  • Can you link to the bug? Hint: debbugs.gnu.org
    – Drew
    Commented Apr 1, 2023 at 2:28
  • 1
    @Drew: thanks for the hint. Have added the link.
    – oOosys
    Commented Apr 1, 2023 at 2:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.