fix(column): issues with 'statuscolumn' width (#22542)

Problem:    'statuscolumn' width can be incorrect when toggling 'number'
            or setting 'statuscolumn'.
Solution:   Make sure the width is reset and re-estimated when
            'statuscolumn' and 'number' are set. (When 'relativenumber'
            is set this already happens because it always changes
            "nrwidth_line_count".)
This commit is contained in:
luukvbaal
2023-03-07 01:45:08 +01:00
committed by GitHub
parent 39096f48f0
commit bf4eada2c8
3 changed files with 43 additions and 0 deletions

View File

@@ -520,4 +520,42 @@ describe('statuscolumn', function()
: |
]])
end)
it("has correct width when toggling '(relative)number'", function()
screen:try_resize(screen._width, 6)
command('call setline(1, repeat(["aaaaa"], 100))')
command('set relativenumber')
command([[set stc=%{!&nu&&!&rnu?'':&rnu?v:relnum?v:relnum:&nu?v:lnum:'0':v:lnum}]])
screen:expect([[
1 aaaaa |
8 ^aaaaa |
1 aaaaa |
2 aaaaa |
3 aaaaa |
|
]])
-- width correctly estimated with "w_nrwidth_line_count" when setting 'stc'
command([[set stc=%{!&nu&&!&rnu?'':&rnu?v:relnum?v:relnum:&nu?v:lnum:'0':v:lnum}]])
screen:expect_unchanged()
-- zero width when disabling 'number'
command('set norelativenumber nonumber')
screen:expect([[
aaaaa |
^aaaaa |
aaaaa |
aaaaa |
aaaaa |
|
]])
-- width correctly estimated with "w_nrwidth_line_count" when setting 'nu'
command('set number')
screen:expect([[
7 aaaaa |
8 ^aaaaa |
9 aaaaa |
10 aaaaa |
11 aaaaa |
|
]])
end)
end)