diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-09-24 10:57:09 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-24 10:57:09 +0800 |
commit | 4d3a38ac074fff7e2a4bede4cee7699bdd55ffdc (patch) | |
tree | aba2143d3a3356e5721b511798a0f4f0d466bf03 /test/functional/api/vim_spec.lua | |
parent | 046c9a83f7ed2694c19d915a63ef0dfed9d29dc5 (diff) | |
download | rneovim-4d3a38ac074fff7e2a4bede4cee7699bdd55ffdc.tar.gz rneovim-4d3a38ac074fff7e2a4bede4cee7699bdd55ffdc.tar.bz2 rneovim-4d3a38ac074fff7e2a4bede4cee7699bdd55ffdc.zip |
fix(api, lua): handle setting v: variables properly (#25325)
Diffstat (limited to 'test/functional/api/vim_spec.lua')
-rw-r--r-- | test/functional/api/vim_spec.lua | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua index fcf3eae5ec..d82e5f66c9 100644 --- a/test/functional/api/vim_spec.lua +++ b/test/functional/api/vim_spec.lua @@ -1350,15 +1350,59 @@ describe('API', function() end) it('nvim_get_vvar, nvim_set_vvar', function() - -- Set readonly v: var. - eq('Key is read-only: count', - pcall_err(request, 'nvim_set_vvar', 'count', 42)) - -- Set non-existent v: var. - eq('Dictionary is locked', - pcall_err(request, 'nvim_set_vvar', 'nosuchvar', 42)) - -- Set writable v: var. + eq('Key is read-only: count', pcall_err(request, 'nvim_set_vvar', 'count', 42)) + eq('Dictionary is locked', pcall_err(request, 'nvim_set_vvar', 'nosuchvar', 42)) meths.set_vvar('errmsg', 'set by API') eq('set by API', meths.get_vvar('errmsg')) + meths.set_vvar('errmsg', 42) + eq('42', eval('v:errmsg')) + meths.set_vvar('oldfiles', { 'one', 'two' }) + eq({ 'one', 'two' }, eval('v:oldfiles')) + meths.set_vvar('oldfiles', {}) + eq({}, eval('v:oldfiles')) + eq('Setting v:oldfiles to value with wrong type', pcall_err(meths.set_vvar, 'oldfiles', 'a')) + eq({}, eval('v:oldfiles')) + + feed('i foo foo foo<Esc>0/foo<CR>') + eq({1, 1}, meths.win_get_cursor(0)) + eq(1, eval('v:searchforward')) + feed('n') + eq({1, 5}, meths.win_get_cursor(0)) + meths.set_vvar('searchforward', 0) + eq(0, eval('v:searchforward')) + feed('n') + eq({1, 1}, meths.win_get_cursor(0)) + meths.set_vvar('searchforward', 1) + eq(1, eval('v:searchforward')) + feed('n') + eq({1, 5}, meths.win_get_cursor(0)) + + local screen = Screen.new(60, 3) + screen:set_default_attr_ids({ + [0] = {bold = true, foreground = Screen.colors.Blue}, + [1] = {background = Screen.colors.Yellow}, + }) + screen:attach() + eq(1, eval('v:hlsearch')) + screen:expect{grid=[[ + {1:foo} {1:^foo} {1:foo} | + {0:~ }| + | + ]]} + meths.set_vvar('hlsearch', 0) + eq(0, eval('v:hlsearch')) + screen:expect{grid=[[ + foo ^foo foo | + {0:~ }| + | + ]]} + meths.set_vvar('hlsearch', 1) + eq(1, eval('v:hlsearch')) + screen:expect{grid=[[ + {1:foo} {1:^foo} {1:foo} | + {0:~ }| + | + ]]} end) it('vim_set_var returns the old value', function() |