--- Begin Message ---
Subject: |
29.0.50; tab-bar global-mode-string affected by global-display-line-numbers |
Date: |
Wed, 16 Nov 2022 13:10:07 -0300 |
Description:
The global-mode-string is incorrectly right-aligned in the tab-bar when
global-display-line-numbers-mode is enabled. The issue actually depends
on the order of execution of global-display-line-numbers-mode. I could
not find an offending commit, so I am not sure for how long this issue
exists. I am currently debugging the Emacs internals to find the root
cause.
Steps:
1) emacs -Q (master 690f7ac86ad9a9d714b1107d05c5e856a43bb18d)
2) Eval the following to enable global-display-line-numbers-mode:
(progn
(global-display-line-numbers-mode 1))
3) Eval the following to enable display-time-mode, which at this moment
will be displayed in the mode-line:
(progn
(setopt display-time-interval 1
display-time-string-forms '((format-time-string "%d/%m/%Y %H:%M:%S"
now)))
(display-time-mode 1))
4) Eval the following to add global-mode-line to tab-bar, right-aligned:
(progn
(setopt tab-bar-format '(tab-bar-format-tabs-groups
tab-bar-separator
tab-bar-format-align-right
tab-bar-format-global))
(tab-bar-mode 1))
Result: the global-mode-line is displayed in the tab-bar, right-aligned,
as expected.
5) Run step 2) again
Result: the global-mode-line is displayed in the tab-bar, right-aligned,
with an incorrect padding on the right. See attached video.
bug.mp4
Description: video/mp4
---
Gabriel
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#59311: 29.0.50; tab-bar global-mode-string affected by global-display-line-numbers |
Date: |
Sun, 20 Nov 2022 20:02:51 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) |
>> I still don't understand why string-pixel-width should handle line-numbers
>> that also degrades its performance.
>
> Because string-pixel-width uses a temporary buffer as its internal
> implementation detail. (And why do you think this degrades performance? any
> measurements?)
Any additional code makes it slower. How much slower is a separate question.
>> I think it should be sufficient only
>> to disable line-numbers in internal buffers.
>
> I think it's too late for that, since display-line-numbers-mode is with us
> for the last 2 major releases.
Leaving it as is means waiting for more trouble in other places.
>> @@ -324,7 +324,8 @@ string-pixel-width
>> (with-current-buffer (get-buffer-create " *string-pixel-width*")
>> (delete-region (point-min) (point-max))
>> (insert string)
>> - (car (buffer-text-pixel-size nil nil t)))))
>> + (- (car (buffer-text-pixel-size nil nil t))
>> + (line-number-display-width t)))))
>
> This is fine by me. (Or you could turn off display-line-numbers-mode
> instead, right after with-current-buffer.)
Ok, fixed with the latter, and closed.
--- End Message ---