aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/statuscolumn_spec.lua
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2024-03-22 11:02:52 +0100
committerbfredl <bjorn.linse@gmail.com>2024-03-23 13:44:35 +0100
commit0c59771e314d6faaad69676985cd2a11c157ee37 (patch)
treeb83d69de5f7a5877e26a4be8b882857a9477a437 /test/functional/ui/statuscolumn_spec.lua
parentdc110cba3c0d48d7c9dbb91900f8be0cf6cf0c9b (diff)
downloadrneovim-0c59771e314d6faaad69676985cd2a11c157ee37.tar.gz
rneovim-0c59771e314d6faaad69676985cd2a11c157ee37.tar.bz2
rneovim-0c59771e314d6faaad69676985cd2a11c157ee37.zip
refactor(tests): all screen tests should use highlights
This is the first installment of a multi-PR series significantly refactoring how highlights are being specified. The end goal is to have a base set of 20 ish most common highlights, and then specific files only need to add more groups to that as needed. As a complicating factor, we also want to migrate to the new default color scheme eventually. But by sharing a base set, that future PR will hopefully be a lot smaller since a lot of tests will be migrated just simply by updating the base set in place. As a first step, fix the anti-pattern than Screen defaults to ignoring highlights. Highlights are integral part of the screen state, not something "extra" which we only test "sometimes". For now, we still allow opt-out via the intentionally ugly screen._default_attr_ids = nil The end goal is to get rid of all of these eventually (which will be easier as part of the color scheme migration)
Diffstat (limited to 'test/functional/ui/statuscolumn_spec.lua')
-rw-r--r--test/functional/ui/statuscolumn_spec.lua268
1 files changed, 126 insertions, 142 deletions
diff --git a/test/functional/ui/statuscolumn_spec.lua b/test/functional/ui/statuscolumn_spec.lua
index 41406a5860..73bedbd10a 100644
--- a/test/functional/ui/statuscolumn_spec.lua
+++ b/test/functional/ui/statuscolumn_spec.lua
@@ -27,38 +27,38 @@ describe('statuscolumn', function()
[[set stc=%{v:relnum?v:relnum:(v:lnum==5?'truncate':v:lnum)}%{!v:relnum&&v:lnum==5?invalid:''}\ ]]
)
screen:expect([[
- 4 aaaaa |
- 3 aaaaa |
- 2 aaaaa |
- 1 aaaaa |
- 8 ^aaaaa |
- 1 aaaaa |
- 2 aaaaa |
- 3 aaaaa |
- 4 aaaaa |
- 5 aaaaa |
- 6 aaaaa |
- 7 aaaaa |
- 8 aaaaa |
+ {8:4 }aaaaa |
+ {8:3 }aaaaa |
+ {8:2 }aaaaa |
+ {8:1 }aaaaa |
+ {8:8 }^aaaaa |
+ {8:1 }aaaaa |
+ {8:2 }aaaaa |
+ {8:3 }aaaaa |
+ {8:4 }aaaaa |
+ {8:5 }aaaaa |
+ {8:6 }aaaaa |
+ {8:7 }aaaaa |
+ {8:8 }aaaaa |
|
]])
command('norm 5G')
eq('Vim(redraw):E121: Undefined variable: invalid', pcall_err(command, 'redraw!'))
eq('', eval('&statuscolumn'))
screen:expect([[
- 4 aaaaa |
- 5 ^aaaaa |
- 6 aaaaa |
- 7 aaaaa |
- 8 aaaaa |
- 9 aaaaa |
- 10 aaaaa |
- 11 aaaaa |
- 12 aaaaa |
- 13 aaaaa |
- 14 aaaaa |
- 15 aaaaa |
- 16 aaaaa |
+ {8: 4 }aaaaa |
+ {8: 5 }^aaaaa |
+ {8: 6 }aaaaa |
+ {8: 7 }aaaaa |
+ {8: 8 }aaaaa |
+ {8: 9 }aaaaa |
+ {8:10 }aaaaa |
+ {8:11 }aaaaa |
+ {8:12 }aaaaa |
+ {8:13 }aaaaa |
+ {8:14 }aaaaa |
+ {8:15 }aaaaa |
+ {8:16 }aaaaa |
|
]])
end)
@@ -72,9 +72,9 @@ describe('statuscolumn', function()
norm 5G | redraw!
]=])
screen:expect([[
- 1 aaaaa virt_text |
- bbbbba^eaaa |
- 1 aaaaa |
+ {8:1 }aaaaa virt_text |
+ {8:bbbbb}a^eaaa |
+ {8:1 }aaaaa |
|
]])
-- Doesn't crash when trying to fill click defs that do not fit (#26845)
@@ -84,9 +84,9 @@ describe('statuscolumn', function()
norm 5Gzt | redraw!
]=])
screen:expect([[
- bbbbba^eaaa |
- 1 aaaaa |
- 2 aaaaa |
+ {8:bbbbb}a^eaaa |
+ {8:1 }aaaaa |
+ {8:2 }aaaaa |
|
]])
end)
@@ -94,19 +94,19 @@ describe('statuscolumn', function()
it("works with 'number' and 'relativenumber'", function()
command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]])
screen:expect([[
- 4 │aaaaa |
- 5 │aaaaa |
- 6 │aaaaa |
- 7 │aaaaa |
- 8 │^aaaaa |
- 9 │aaaaa |
- 10│aaaaa |
- 11│aaaaa |
- 12│aaaaa |
- 13│aaaaa |
- 14│aaaaa |
- 15│aaaaa |
- 16│aaaaa |
+ {8:4 │}aaaaa |
+ {8:5 │}aaaaa |
+ {8:6 │}aaaaa |
+ {8:7 │}aaaaa |
+ {8:8 │}^aaaaa |
+ {8:9 │}aaaaa |
+ {8:10│}aaaaa |
+ {8:11│}aaaaa |
+ {8:12│}aaaaa |
+ {8:13│}aaaaa |
+ {8:14│}aaaaa |
+ {8:15│}aaaaa |
+ {8:16│}aaaaa |
|
]])
command([[set stc=%l%=%{&rnu?'\ ':''}%r│]])
@@ -114,39 +114,19 @@ describe('statuscolumn', function()
command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]])
command('set relativenumber')
screen:expect([[
- 4 4│aaaaa |
- 5 3│aaaaa |
- 6 2│aaaaa |
- 7 1│aaaaa |
- 8 0│^aaaaa |
- 9 1│aaaaa |
- 10 2│aaaaa |
- 11 3│aaaaa |
- 12 4│aaaaa |
- 13 5│aaaaa |
- 14 6│aaaaa |
- 15 7│aaaaa |
- 16 8│aaaaa |
- |
- ]])
- command([[set stc=%l%=%{&rnu?'\ ':''}%r│]])
- screen:expect_unchanged()
- command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]])
- command('norm 12GH')
- screen:expect([[
- 4 0│^aaaaa |
- 5 1│aaaaa |
- 6 2│aaaaa |
- 7 3│aaaaa |
- 8 4│aaaaa |
- 9 5│aaaaa |
- 10 6│aaaaa |
- 11 7│aaaaa |
- 12 8│aaaaa |
- 13 9│aaaaa |
- 14 10│aaaaa |
- 15 11│aaaaa |
- 16 12│aaaaa |
+ {8:4 4│}aaaaa |
+ {8:5 3│}aaaaa |
+ {8:6 2│}aaaaa |
+ {8:7 1│}aaaaa |
+ {8:8 0│}^aaaaa |
+ {8:9 1│}aaaaa |
+ {8:10 2│}aaaaa |
+ {8:11 3│}aaaaa |
+ {8:12 4│}aaaaa |
+ {8:13 5│}aaaaa |
+ {8:14 6│}aaaaa |
+ {8:15 7│}aaaaa |
+ {8:16 8│}aaaaa |
|
]])
command([[set stc=%l%=%{&rnu?'\ ':''}%r│]])
@@ -735,19 +715,19 @@ describe('statuscolumn', function()
virt_lines_leftcol = true, virt_lines = {{{"virt", ""}}} })
]])
screen:expect([[
- 4 aaaaa |
- 5 aaaaa |
- 6 aaaaa |
- 7 aaaaa |
+ {7: }{8: 4 }aaaaa |
+ {7: }{8: 5 }aaaaa |
+ {7: }{8: 6 }aaaaa |
+ {7: }{8: 7 }aaaaa |
virt |
- --------- 8 ^aaaaa |
+ {7:---------}{8: 8 }^aaaaa |
virt |
- 𒀀𒀀𒀀𒀀𒀀𒀀𒀀𒀀𒀀 9 aaaaa |
- 10 aaaaa |
- 11 aaaaa |
- 12 aaaaa |
- 13 aaaaa |
- 14 aaaaa |
+ {7:𒀀𒀀𒀀𒀀𒀀𒀀𒀀𒀀𒀀}{8: 9 }aaaaa |
+ {7: }{8:10 }aaaaa |
+ {7: }{8:11 }aaaaa |
+ {7: }{8:12 }aaaaa |
+ {7: }{8:13 }aaaaa |
+ {7: }{8:14 }aaaaa |
|
]])
command('set stc=') -- also for the default fold column
@@ -756,18 +736,18 @@ describe('statuscolumn', function()
command([[set stc=%{foldlevel(v:lnum)>0?repeat('-',foldlevel(v:lnum)):''}%=%l\ ]])
feed('Gd10Ggg<C-l>')
screen:expect([[
- 1 ^aaaaa |
- 2 aaaaa |
- 3 aaaaa |
- 4 aaaaa |
- 5 aaaaa |
- 6 aaaaa |
- 7 aaaaa |
+ {8: 1 }^aaaaa |
+ {8: 2 }aaaaa |
+ {8: 3 }aaaaa |
+ {8: 4 }aaaaa |
+ {8: 5 }aaaaa |
+ {8: 6 }aaaaa |
+ {8: 7 }aaaaa |
virt |
- ---------8 aaaaa |
+ {8:---------8 }aaaaa |
virt |
- ---------9 aaaaa |
- ~ |*2
+ {8:---------9 }aaaaa |
+ {1:~ }|*2
|
]])
end)
@@ -775,15 +755,15 @@ describe('statuscolumn', function()
it('works with cmdwin', function()
feed(':set stc=%l<CR>q:k$')
screen:expect([[
- 7 aaaaa |
- 8 aaaaa |
- 9 aaaaa |
- 10aaaaa |
- [No Name] [+] |
- :1set stc=%^l |
- :2 |
- ~ |*5
- [Command Line] |
+ {8:7 }aaaaa |
+ {8:8 }aaaaa |
+ {8:9 }aaaaa |
+ {8:10}aaaaa |
+ {2:[No Name] [+] }|
+ {1::}{8:1}set stc=%^l |
+ {1::}{8:2} |
+ {1:~ }|*5
+ {3:[Command Line] }|
: |
]])
end)
@@ -794,11 +774,11 @@ describe('statuscolumn', function()
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 |
+ {8:1 }aaaaa |
+ {8:8 }^aaaaa |
+ {8:1 }aaaaa |
+ {8:2 }aaaaa |
+ {8:3 }aaaaa |
|
]])
-- width correctly estimated with "w_nrwidth_line_count" when setting 'stc'
@@ -815,11 +795,11 @@ describe('statuscolumn', function()
-- 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 |
+ {8:7 }aaaaa |
+ {8:8 }^aaaaa |
+ {8:9 }aaaaa |
+ {8:10 }aaaaa |
+ {8:11 }aaaaa |
|
]])
end)
@@ -846,59 +826,59 @@ describe('statuscolumn', function()
]])
command('sign place 1 line=2 name=sign')
screen:expect([[
- 1 ^aaaaa |
- 2 ssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ss}aaaaa |
|
]])
command('sign place 2 line=2 name=sign')
screen:expect([[
- 1 ^aaaaa |
- 2 ssssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ssss}aaaaa |
|
]])
command('sign unplace 2')
screen:expect([[
- 1 ^aaaaa |
- 2 ssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ss}aaaaa |
|
]])
command('sign unplace 1')
screen:expect([[
- 1 ^aaaaa |
- 2 aaaaa |
+ {8:1 }^aaaaa |
+ {8:2 }aaaaa |
|
]])
-- Also for extmark signs
exec_lua('id1 = vim.api.nvim_buf_set_extmark(0, ns, 1, 0, {sign_text = "ss"})')
screen:expect([[
- 1 ^aaaaa |
- 2 ssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ss}aaaaa |
|
]])
exec_lua('id2 = vim.api.nvim_buf_set_extmark(0, ns, 1, 0, {sign_text = "ss"})')
screen:expect([[
- 1 ^aaaaa |
- 2 ssssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ssss}aaaaa |
|
]])
exec_lua('vim.api.nvim_buf_del_extmark(0, ns, id1)')
screen:expect([[
- 1 ^aaaaa |
- 2 ssaaaaa |
+ {8:1 }^aaaaa |
+ {8:2 ss}aaaaa |
|
]])
exec_lua('vim.api.nvim_buf_del_extmark(0, ns, id2)')
screen:expect([[
- 1 ^aaaaa |
- 2 aaaaa |
+ {8:1 }^aaaaa |
+ {8:2 }aaaaa |
|
]])
-- In all windows
command('wincmd v | set ls=0')
command('sign place 1 line=2 name=sign')
screen:expect([[
- 1 ^aaaaa │1 aaaaa |
- 2 ssaaaaa │2 ssaaaaa |
+ {8:1 }^aaaaa │{8:1 }aaaaa |
+ {8:2 ss}aaaaa │{8:2 ss}aaaaa |
|
]])
end)
@@ -918,12 +898,16 @@ describe('statuscolumn', function()
it('does not wrap multibyte characters at the end of a line', function()
screen:try_resize(33, 4)
+ screen:set_default_attr_ids {
+ [8] = { foreground = Screen.colors.Brown },
+ [31] = { undercurl = true, special = Screen.colors.Red },
+ }
command([[set spell stc=%l\ ]])
command('call setline(8, "This is a line that contains ᶏ multibyte character.")')
screen:expect([[
- 8 ^This is a line that contains ᶏ|
- multibyte character. |
- 9 aaaaa |
+ {8:8 }^This is a line that contains {31:ᶏ}|
+ {8: } {31:multibyte} character. |
+ {8:9 }{31:aaaaa} |
|
]])
end)
@@ -934,9 +918,9 @@ describe('statuscolumn', function()
command('call setline(1, range(1, 99))')
feed('Gyyp')
screen:expect([[
- 98 98 |
- 99 99 |
- 100 ^99 |
+ {8:98 }98 |
+ {8:99 }99 |
+ {8:100 }^99 |
|
]])
end)