diff options
author | luukvbaal <luukvbaal@gmail.com> | 2024-12-04 14:20:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-04 05:20:24 -0800 |
commit | 3cb1e825e679587f5c1c0e911fff4337ba0926a9 (patch) | |
tree | cd4843ddc1efc5e22b5a15bfc2c57da0e446075a /test/functional/ui/sign_spec.lua | |
parent | e56437cd48f7df87ccdfb79812ee56241c0da0cb (diff) | |
download | rneovim-3cb1e825e679587f5c1c0e911fff4337ba0926a9.tar.gz rneovim-3cb1e825e679587f5c1c0e911fff4337ba0926a9.tar.bz2 rneovim-3cb1e825e679587f5c1c0e911fff4337ba0926a9.zip |
fix(column): check if signcolumn changed in all windows #31439
Diffstat (limited to 'test/functional/ui/sign_spec.lua')
-rw-r--r-- | test/functional/ui/sign_spec.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua index 7874c04c39..b7a2429ada 100644 --- a/test/functional/ui/sign_spec.lua +++ b/test/functional/ui/sign_spec.lua @@ -607,4 +607,77 @@ describe('Signs', function() eq(6, infos[1].textoff) eq(6, infos[2].textoff) end) + + it('auto width updated in all windows after sign placed in on_win #31438', function() + exec_lua([[ + vim.cmd.call('setline(1, range(1, 500))') + vim.cmd('wincmd s | wincmd v | wincmd j | wincmd v') + + _G.log, _G.needs_clear = {}, false + local ns_id, mark_id = vim.api.nvim_create_namespace('test'), nil + + -- Add decoration which possibly clears all extmarks and adds one on line 499 + local on_win = function(_, winid, bufnr, toprow, botrow) + if _G.needs_clear then + vim.api.nvim_buf_clear_namespace(bufnr, ns_id, 0, -1) + _G.needs_clear = false + end + + if toprow < 499 and 499 <= botrow then + mark_id = vim.api.nvim_buf_set_extmark(bufnr, ns_id, 499, 0, { id = mark_id, sign_text = '!', invalidate = true }) + end + end + vim.api.nvim_set_decoration_provider(ns_id, { on_win = on_win }) + ]]) + screen:expect([[ + 1 │1 | + 2 │2 | + 3 │3 | + 4 │4 | + 5 │5 | + 6 │6 | + {2:[No Name] [+] [No Name] [+] }| + ^1 │1 | + 2 │2 | + 3 │3 | + 4 │4 | + 5 │5 | + {3:[No Name] [+] }{2:[No Name] [+] }| + | + ]]) + feed('G') + screen:expect([[ + {7: }1 │{7: }1 | + {7: }2 │{7: }2 | + {7: }3 │{7: }3 | + {7: }4 │{7: }4 | + {7: }5 │{7: }5 | + {7: }6 │{7: }6 | + {2:[No Name] [+] [No Name] [+] }| + {7: }496 │{7: }1 | + {7: }497 │{7: }2 | + {7: }498 │{7: }3 | + {7: }499 │{7: }4 | + ! ^500 │{7: }5 | + {3:[No Name] [+] }{2:[No Name] [+] }| + | + ]]) + feed(':lua log, needs_clear = {}, true<CR>') + screen:expect([[ + {7: }1 │{7: }1 | + {7: }2 │{7: }2 | + {7: }3 │{7: }3 | + {7: }4 │{7: }4 | + {7: }5 │{7: }5 | + {7: }6 │{7: }6 | + {2:[No Name] [+] [No Name] [+] }| + {7: }496 │{7: }1 | + {7: }497 │{7: }2 | + {7: }498 │{7: }3 | + {7: }499 │{7: }4 | + ! ^500 │{7: }5 | + {3:[No Name] [+] }{2:[No Name] [+] }| + :lua log, needs_clear = {}, true | + ]]) + end) end) |