diff options
Diffstat (limited to 'test/functional/api')
-rw-r--r-- | test/functional/api/autocmd_spec.lua | 431 | ||||
-rw-r--r-- | test/functional/api/buffer_spec.lua | 610 | ||||
-rw-r--r-- | test/functional/api/buffer_updates_spec.lua | 70 | ||||
-rw-r--r-- | test/functional/api/command_spec.lua | 86 | ||||
-rw-r--r-- | test/functional/api/extmark_spec.lua | 74 | ||||
-rw-r--r-- | test/functional/api/highlight_spec.lua | 295 | ||||
-rw-r--r-- | test/functional/api/keymap_spec.lua | 334 | ||||
-rw-r--r-- | test/functional/api/proc_spec.lua | 14 | ||||
-rw-r--r-- | test/functional/api/server_notifications_spec.lua | 20 | ||||
-rw-r--r-- | test/functional/api/server_requests_spec.lua | 92 | ||||
-rw-r--r-- | test/functional/api/tabpage_spec.lua | 62 | ||||
-rw-r--r-- | test/functional/api/ui_spec.lua | 26 | ||||
-rw-r--r-- | test/functional/api/version_spec.lua | 47 | ||||
-rw-r--r-- | test/functional/api/vim_spec.lua | 1616 | ||||
-rw-r--r-- | test/functional/api/window_spec.lua | 604 |
15 files changed, 2155 insertions, 2226 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua index 47cb8bfd54..e89abf6c64 100644 --- a/test/functional/api/autocmd_spec.lua +++ b/test/functional/api/autocmd_spec.lua @@ -6,7 +6,7 @@ local eq = helpers.eq local neq = helpers.neq local exec_lua = helpers.exec_lua local matches = helpers.matches -local meths = helpers.meths +local api = helpers.api local source = helpers.source local pcall_err = helpers.pcall_err @@ -17,7 +17,7 @@ describe('autocmd api', function() it('validation', function() eq( "Cannot use both 'callback' and 'command'", - pcall_err(meths.nvim_create_autocmd, 'BufReadPost', { + pcall_err(api.nvim_create_autocmd, 'BufReadPost', { pattern = '*.py,*.pyi', command = "echo 'Should Have Errored", callback = 'NotAllowed', @@ -25,7 +25,7 @@ describe('autocmd api', function() ) eq( "Cannot use both 'pattern' and 'buffer' for the same autocmd", - pcall_err(meths.nvim_create_autocmd, 'FileType', { + pcall_err(api.nvim_create_autocmd, 'FileType', { command = 'let g:called = g:called + 1', buffer = 0, pattern = '*.py', @@ -33,48 +33,48 @@ describe('autocmd api', function() ) eq( "Required: 'event'", - pcall_err(meths.nvim_create_autocmd, {}, { + pcall_err(api.nvim_create_autocmd, {}, { command = 'ls', }) ) - eq("Required: 'command' or 'callback'", pcall_err(meths.nvim_create_autocmd, 'FileType', {})) + eq("Required: 'command' or 'callback'", pcall_err(api.nvim_create_autocmd, 'FileType', {})) eq( "Invalid 'desc': expected String, got Integer", - pcall_err(meths.nvim_create_autocmd, 'FileType', { + pcall_err(api.nvim_create_autocmd, 'FileType', { command = 'ls', desc = 42, }) ) eq( "Invalid 'callback': expected Lua function or Vim function name, got Integer", - pcall_err(meths.nvim_create_autocmd, 'FileType', { + pcall_err(api.nvim_create_autocmd, 'FileType', { callback = 0, }) ) eq( "Invalid 'event' item: expected String, got Array", - pcall_err(meths.nvim_create_autocmd, { 'FileType', {} }, {}) + pcall_err(api.nvim_create_autocmd, { 'FileType', {} }, {}) ) eq( "Invalid 'group': 0", - pcall_err(meths.nvim_create_autocmd, 'FileType', { + pcall_err(api.nvim_create_autocmd, 'FileType', { group = 0, command = 'ls', }) ) - eq("Invalid 'event': 'foo'", pcall_err(meths.nvim_create_autocmd, 'foo', { command = '' })) + eq("Invalid 'event': 'foo'", pcall_err(api.nvim_create_autocmd, 'foo', { command = '' })) eq( "Invalid 'event': 'VimEnter '", - pcall_err(meths.nvim_create_autocmd, 'VimEnter ', { command = '' }) + pcall_err(api.nvim_create_autocmd, 'VimEnter ', { command = '' }) ) eq( "Invalid 'event': 'VimEnter foo'", - pcall_err(meths.nvim_create_autocmd, 'VimEnter foo', { command = '' }) + pcall_err(api.nvim_create_autocmd, 'VimEnter foo', { command = '' }) ) eq( "Invalid 'event': 'BufAdd,BufDelete'", - pcall_err(meths.nvim_create_autocmd, 'BufAdd,BufDelete', { command = '' }) + pcall_err(api.nvim_create_autocmd, 'BufAdd,BufDelete', { command = '' }) ) end) @@ -102,25 +102,25 @@ describe('autocmd api', function() end) it('allows passing buffer by key', function() - meths.nvim_set_var('called', 0) + api.nvim_set_var('called', 0) - meths.nvim_create_autocmd('FileType', { + api.nvim_create_autocmd('FileType', { command = 'let g:called = g:called + 1', buffer = 0, }) command 'set filetype=txt' - eq(1, meths.nvim_get_var('called')) + eq(1, api.nvim_get_var('called')) -- switch to a new buffer command 'new' command 'set filetype=python' - eq(1, meths.nvim_get_var('called')) + eq(1, api.nvim_get_var('called')) end) it('does not allow passing invalid buffers', function() - local ok, msg = pcall(meths.nvim_create_autocmd, 'FileType', { + local ok, msg = pcall(api.nvim_create_autocmd, 'FileType', { command = 'let g:called = g:called + 1', buffer = -1, }) @@ -145,7 +145,7 @@ describe('autocmd api', function() end) it('allow passing pattern and <buffer> in same pattern', function() - local ok = pcall(meths.nvim_create_autocmd, 'BufReadPost', { + local ok = pcall(api.nvim_create_autocmd, 'BufReadPost', { pattern = '*.py,<buffer>', command = "echo 'Should Not Error'", }) @@ -154,42 +154,42 @@ describe('autocmd api', function() end) it('should handle multiple values as comma separated list', function() - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = '*.py,*.pyi', command = "echo 'Should Not Have Errored'", }) -- We should have one autocmd for *.py and one for *.pyi - eq(2, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(2, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) it('should handle multiple values as array', function() - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = { '*.py', '*.pyi' }, command = "echo 'Should Not Have Errored'", }) -- We should have one autocmd for *.py and one for *.pyi - eq(2, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(2, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) describe('desc', function() it('can add description to one autocmd', function() local cmd = "echo 'Should Not Have Errored'" local desc = 'Can show description' - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = '*.py', command = cmd, desc = desc, }) - eq(desc, meths.nvim_get_autocmds { event = 'BufReadPost' }[1].desc) - eq(cmd, meths.nvim_get_autocmds { event = 'BufReadPost' }[1].command) + eq(desc, api.nvim_get_autocmds { event = 'BufReadPost' }[1].desc) + eq(cmd, api.nvim_get_autocmds { event = 'BufReadPost' }[1].command) end) it('can add description to one autocmd that uses a callback', function() local desc = 'Can show description' - meths.nvim_set_var('desc', desc) + api.nvim_set_var('desc', desc) local result = exec_lua([[ local callback = function() print 'Should Not Have Errored' end @@ -218,17 +218,17 @@ describe('autocmd api', function() }) ]]) - eq(nil, meths.nvim_get_autocmds({ event = 'BufReadPost' })[1].desc) + eq(nil, api.nvim_get_autocmds({ event = 'BufReadPost' })[1].desc) end) it('can add description to multiple autocmd', function() - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = { '*.py', '*.pyi' }, command = "echo 'Should Not Have Errored'", desc = 'Can show description', }) - local aus = meths.nvim_get_autocmds { event = 'BufReadPost' } + local aus = api.nvim_get_autocmds { event = 'BufReadPost' } eq(2, #aus) eq('Can show description', aus[1].desc) eq('Can show description', aus[2].desc) @@ -237,19 +237,19 @@ describe('autocmd api', function() pending('script and verbose settings', function() it('marks API client', function() - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = '*.py', command = "echo 'Should Not Have Errored'", desc = 'Can show description', }) - local aus = meths.nvim_get_autocmds { event = 'BufReadPost' } + local aus = api.nvim_get_autocmds { event = 'BufReadPost' } eq(1, #aus, aus) end) end) it('removes an autocommand if the callback returns true', function() - meths.nvim_set_var('some_condition', false) + api.nvim_set_var('some_condition', false) exec_lua [[ vim.api.nvim_create_autocmd("User", { @@ -261,21 +261,21 @@ describe('autocmd api', function() }) ]] - meths.nvim_exec_autocmds('User', { pattern = 'Test' }) + api.nvim_exec_autocmds('User', { pattern = 'Test' }) - local aus = meths.nvim_get_autocmds({ event = 'User', pattern = 'Test' }) + local aus = api.nvim_get_autocmds({ event = 'User', pattern = 'Test' }) local first = aus[1] eq(true, first.id > 0) - meths.nvim_set_var('some_condition', true) - meths.nvim_exec_autocmds('User', { pattern = 'Test' }) - eq({}, meths.nvim_get_autocmds({ event = 'User', pattern = 'Test' })) + api.nvim_set_var('some_condition', true) + api.nvim_exec_autocmds('User', { pattern = 'Test' }) + eq({}, api.nvim_get_autocmds({ event = 'User', pattern = 'Test' })) end) it('receives an args table', function() - local group_id = meths.nvim_create_augroup('TestGroup', {}) + local group_id = api.nvim_create_augroup('TestGroup', {}) -- Having an existing autocmd calling expand("<afile>") shouldn't change args #18964 - meths.nvim_create_autocmd('User', { + api.nvim_create_autocmd('User', { group = 'TestGroup', pattern = 'Te*', command = 'call expand("<afile>")', @@ -291,7 +291,7 @@ describe('autocmd api', function() }) ]] - meths.nvim_exec_autocmds('User', { pattern = 'Test pattern' }) + api.nvim_exec_autocmds('User', { pattern = 'Test pattern' }) eq({ id = autocmd_id, group = group_id, @@ -299,7 +299,7 @@ describe('autocmd api', function() match = 'Test pattern', file = 'Test pattern', buf = 1, - }, meths.nvim_get_var('autocmd_args')) + }, api.nvim_get_var('autocmd_args')) -- Test without a group autocmd_id = exec_lua [[ @@ -311,7 +311,7 @@ describe('autocmd api', function() }) ]] - meths.nvim_exec_autocmds('User', { pattern = 'some_pat' }) + api.nvim_exec_autocmds('User', { pattern = 'some_pat' }) eq({ id = autocmd_id, group = nil, @@ -319,7 +319,7 @@ describe('autocmd api', function() match = 'some_pat', file = 'some_pat', buf = 1, - }, meths.nvim_get_var('autocmd_args')) + }, api.nvim_get_var('autocmd_args')) end) it('can receive arbitrary data', function() @@ -361,43 +361,43 @@ describe('autocmd api', function() it('validation', function() eq( "Invalid 'group': 9997999", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { group = 9997999, }) ) eq( "Invalid 'group': 'bogus'", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { group = 'bogus', }) ) eq( "Invalid 'group': 0", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { group = 0, }) ) eq( "Invalid 'group': expected String or Integer, got Array", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { group = {}, }) ) eq( "Invalid 'buffer': expected Integer or Array, got Boolean", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { buffer = true, }) ) eq( "Invalid 'event': expected String or Array", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { event = true, }) ) eq( "Invalid 'pattern': expected String or Array, got Boolean", - pcall_err(meths.nvim_get_autocmds, { + pcall_err(api.nvim_get_autocmds, { pattern = true, }) ) @@ -408,7 +408,7 @@ describe('autocmd api', function() command [[au! InsertEnter]] command [[au InsertEnter * :echo "1"]] - local aus = meths.nvim_get_autocmds { event = 'InsertEnter' } + local aus = api.nvim_get_autocmds { event = 'InsertEnter' } eq(1, #aus) end) @@ -417,7 +417,7 @@ describe('autocmd api', function() command [[au InsertEnter * :echo "1"]] command [[au InsertEnter * :echo "2"]] - local aus = meths.nvim_get_autocmds { event = 'InsertEnter' } + local aus = api.nvim_get_autocmds { event = 'InsertEnter' } eq(2, #aus) end) @@ -426,8 +426,8 @@ describe('autocmd api', function() command [[au InsertEnter * :echo "1"]] command [[au InsertEnter * :echo "2"]] - local string_aus = meths.nvim_get_autocmds { event = 'InsertEnter' } - local array_aus = meths.nvim_get_autocmds { event = { 'InsertEnter' } } + local string_aus = api.nvim_get_autocmds { event = 'InsertEnter' } + local array_aus = api.nvim_get_autocmds { event = { 'InsertEnter' } } eq(string_aus, array_aus) end) @@ -437,7 +437,7 @@ describe('autocmd api', function() command [[au InsertEnter * :echo "1"]] command [[au InsertEnter * :echo "2"]] - local aus = meths.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } + local aus = api.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } eq(2, #aus) end) @@ -451,7 +451,7 @@ describe('autocmd api', function() \ }) ]] - local aus = meths.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } + local aus = api.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } local first = aus[1] eq(first.id, nil) @@ -459,8 +459,8 @@ describe('autocmd api', function() local second = aus[2] neq(second.id, nil) - meths.nvim_del_autocmd(second.id) - local new_aus = meths.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } + api.nvim_del_autocmd(second.id) + local new_aus = api.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } eq(1, #new_aus) eq(first, new_aus[1]) end) @@ -469,7 +469,7 @@ describe('autocmd api', function() command [[au! InsertEnter]] command [[au InsertEnter * :echo "1"]] - local aus = meths.nvim_get_autocmds { event = 'InsertEnter' } + local aus = api.nvim_get_autocmds { event = 'InsertEnter' } eq({ { buflocal = false, @@ -487,7 +487,7 @@ describe('autocmd api', function() command [[au InsertEnter <buffer=1> :echo "1"]] command [[au InsertEnter <buffer=2> :echo "2"]] - local aus = meths.nvim_get_autocmds { event = 'InsertEnter', buffer = 0 } + local aus = api.nvim_get_autocmds { event = 'InsertEnter', buffer = 0 } eq({ { buffer = 2, @@ -499,7 +499,7 @@ describe('autocmd api', function() }, }, aus) - aus = meths.nvim_get_autocmds { event = 'InsertEnter', buffer = 1 } + aus = api.nvim_get_autocmds { event = 'InsertEnter', buffer = 1 } eq({ { buffer = 1, @@ -511,7 +511,7 @@ describe('autocmd api', function() }, }, aus) - aus = meths.nvim_get_autocmds { event = 'InsertEnter', buffer = { 1, 2 } } + aus = api.nvim_get_autocmds { event = 'InsertEnter', buffer = { 1, 2 } } eq({ { buffer = 1, @@ -533,50 +533,50 @@ describe('autocmd api', function() eq( "Invalid 'buffer': expected Integer or Array, got String", - pcall_err(meths.nvim_get_autocmds, { event = 'InsertEnter', buffer = 'foo' }) + pcall_err(api.nvim_get_autocmds, { event = 'InsertEnter', buffer = 'foo' }) ) eq( "Invalid 'buffer': expected Integer, got String", - pcall_err(meths.nvim_get_autocmds, { event = 'InsertEnter', buffer = { 'foo', 42 } }) + pcall_err(api.nvim_get_autocmds, { event = 'InsertEnter', buffer = { 'foo', 42 } }) ) eq( 'Invalid buffer id: 42', - pcall_err(meths.nvim_get_autocmds, { event = 'InsertEnter', buffer = { 42 } }) + pcall_err(api.nvim_get_autocmds, { event = 'InsertEnter', buffer = { 42 } }) ) local bufs = {} for _ = 1, 257 do - table.insert(bufs, meths.nvim_create_buf(true, false)) + table.insert(bufs, api.nvim_create_buf(true, false)) end eq( 'Too many buffers (maximum of 256)', - pcall_err(meths.nvim_get_autocmds, { event = 'InsertEnter', buffer = bufs }) + pcall_err(api.nvim_get_autocmds, { event = 'InsertEnter', buffer = bufs }) ) end) it('returns autocmds when group is specified by id', function() - local auid = meths.nvim_create_augroup('nvim_test_augroup', { clear = true }) - meths.nvim_create_autocmd('FileType', { group = auid, command = 'echo "1"' }) - meths.nvim_create_autocmd('FileType', { group = auid, command = 'echo "2"' }) + local auid = api.nvim_create_augroup('nvim_test_augroup', { clear = true }) + api.nvim_create_autocmd('FileType', { group = auid, command = 'echo "1"' }) + api.nvim_create_autocmd('FileType', { group = auid, command = 'echo "2"' }) - local aus = meths.nvim_get_autocmds { group = auid } + local aus = api.nvim_get_autocmds { group = auid } eq(2, #aus) - local aus2 = meths.nvim_get_autocmds { group = auid, event = 'InsertEnter' } + local aus2 = api.nvim_get_autocmds { group = auid, event = 'InsertEnter' } eq(0, #aus2) end) it('returns autocmds when group is specified by name', function() local auname = 'nvim_test_augroup' - meths.nvim_create_augroup(auname, { clear = true }) - meths.nvim_create_autocmd('FileType', { group = auname, command = 'echo "1"' }) - meths.nvim_create_autocmd('FileType', { group = auname, command = 'echo "2"' }) + api.nvim_create_augroup(auname, { clear = true }) + api.nvim_create_autocmd('FileType', { group = auname, command = 'echo "1"' }) + api.nvim_create_autocmd('FileType', { group = auname, command = 'echo "2"' }) - local aus = meths.nvim_get_autocmds { group = auname } + local aus = api.nvim_get_autocmds { group = auname } eq(2, #aus) - local aus2 = meths.nvim_get_autocmds { group = auname, event = 'InsertEnter' } + local aus2 = api.nvim_get_autocmds { group = auname, event = 'InsertEnter' } eq(0, #aus2) end) @@ -609,7 +609,7 @@ describe('autocmd api', function() it('can retrieve a callback from an autocmd', function() local content = 'I Am A Callback' - meths.nvim_set_var('content', content) + api.nvim_set_var('content', content) local result = exec_lua([[ local cb = function() return vim.g.content end @@ -671,7 +671,7 @@ describe('autocmd api', function() end) it('returns all groups if no group is specified', function() - local aus = meths.nvim_get_autocmds { event = 'InsertEnter' } + local aus = api.nvim_get_autocmds { event = 'InsertEnter' } if #aus ~= 4 then eq({}, aus) end @@ -680,7 +680,7 @@ describe('autocmd api', function() end) it('returns only the group specified', function() - local aus = meths.nvim_get_autocmds { + local aus = api.nvim_get_autocmds { event = 'InsertEnter', group = 'GroupOne', } @@ -691,7 +691,7 @@ describe('autocmd api', function() end) it('returns only the group specified, multiple values', function() - local aus = meths.nvim_get_autocmds { + local aus = api.nvim_get_autocmds { event = 'InsertEnter', group = 'GroupTwo', } @@ -706,7 +706,7 @@ describe('autocmd api', function() describe('groups: 2', function() it('raises error for undefined augroup name', function() - local success, code = unpack(meths.nvim_exec_lua( + local success, code = unpack(api.nvim_exec_lua( [[ return {pcall(function() vim.api.nvim_create_autocmd("FileType", { @@ -724,7 +724,7 @@ describe('autocmd api', function() end) it('raises error for undefined augroup id', function() - local success, code = unpack(meths.nvim_exec_lua( + local success, code = unpack(api.nvim_exec_lua( [[ return {pcall(function() -- Make sure the augroup is deleted @@ -745,7 +745,7 @@ describe('autocmd api', function() end) it('raises error for invalid group type', function() - local success, code = unpack(meths.nvim_exec_lua( + local success, code = unpack(api.nvim_exec_lua( [[ return {pcall(function() vim.api.nvim_create_autocmd("FileType", { @@ -763,7 +763,7 @@ describe('autocmd api', function() end) it('raises error for invalid pattern array', function() - local success, code = unpack(meths.nvim_exec_lua( + local success, code = unpack(api.nvim_exec_lua( [[ return {pcall(function() vim.api.nvim_create_autocmd("FileType", { @@ -792,7 +792,7 @@ describe('autocmd api', function() end) it('returns for literal match', function() - local aus = meths.nvim_get_autocmds { + local aus = api.nvim_get_autocmds { event = 'InsertEnter', pattern = '*', } @@ -803,7 +803,7 @@ describe('autocmd api', function() it('returns for multiple matches', function() -- vim.api.nvim_get_autocmds - local aus = meths.nvim_get_autocmds { + local aus = api.nvim_get_autocmds { event = 'InsertEnter', pattern = { '*.one', '*.two' }, } @@ -815,17 +815,17 @@ describe('autocmd api', function() end) it('should work for buffer autocmds', function() - local normalized_aus = meths.nvim_get_autocmds { + local normalized_aus = api.nvim_get_autocmds { event = 'InsertEnter', pattern = '<buffer=1>', } - local raw_aus = meths.nvim_get_autocmds { + local raw_aus = api.nvim_get_autocmds { event = 'InsertEnter', pattern = '<buffer>', } - local zero_aus = meths.nvim_get_autocmds { + local zero_aus = api.nvim_get_autocmds { event = 'InsertEnter', pattern = '<buffer=0>', } @@ -841,110 +841,110 @@ describe('autocmd api', function() it('validation', function() eq( "Invalid 'group': 9997999", - pcall_err(meths.nvim_exec_autocmds, 'FileType', { + pcall_err(api.nvim_exec_autocmds, 'FileType', { group = 9997999, }) ) eq( "Invalid 'group': 'bogus'", - pcall_err(meths.nvim_exec_autocmds, 'FileType', { + pcall_err(api.nvim_exec_autocmds, 'FileType', { group = 'bogus', }) ) eq( "Invalid 'group': expected String or Integer, got Array", - pcall_err(meths.nvim_exec_autocmds, 'FileType', { + pcall_err(api.nvim_exec_autocmds, 'FileType', { group = {}, }) ) eq( "Invalid 'group': 0", - pcall_err(meths.nvim_exec_autocmds, 'FileType', { + pcall_err(api.nvim_exec_autocmds, 'FileType', { group = 0, }) ) eq( "Invalid 'buffer': expected Buffer, got Array", - pcall_err(meths.nvim_exec_autocmds, 'FileType', { + pcall_err(api.nvim_exec_autocmds, 'FileType', { buffer = {}, }) ) eq( "Invalid 'event' item: expected String, got Array", - pcall_err(meths.nvim_exec_autocmds, { 'FileType', {} }, {}) + pcall_err(api.nvim_exec_autocmds, { 'FileType', {} }, {}) ) end) it('can trigger builtin autocmds', function() - meths.nvim_set_var('autocmd_executed', false) + api.nvim_set_var('autocmd_executed', false) - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = '*', command = 'let g:autocmd_executed = v:true', }) - eq(false, meths.nvim_get_var('autocmd_executed')) - meths.nvim_exec_autocmds('BufReadPost', {}) - eq(true, meths.nvim_get_var('autocmd_executed')) + eq(false, api.nvim_get_var('autocmd_executed')) + api.nvim_exec_autocmds('BufReadPost', {}) + eq(true, api.nvim_get_var('autocmd_executed')) end) it('can trigger multiple patterns', function() - meths.nvim_set_var('autocmd_executed', 0) + api.nvim_set_var('autocmd_executed', 0) - meths.nvim_create_autocmd('BufReadPost', { + api.nvim_create_autocmd('BufReadPost', { pattern = '*', command = 'let g:autocmd_executed += 1', }) - meths.nvim_exec_autocmds('BufReadPost', { pattern = { '*.lua', '*.vim' } }) - eq(2, meths.nvim_get_var('autocmd_executed')) + api.nvim_exec_autocmds('BufReadPost', { pattern = { '*.lua', '*.vim' } }) + eq(2, api.nvim_get_var('autocmd_executed')) - meths.nvim_create_autocmd('BufReadPre', { + api.nvim_create_autocmd('BufReadPre', { pattern = { 'bar', 'foo' }, command = 'let g:autocmd_executed += 10', }) - meths.nvim_exec_autocmds('BufReadPre', { pattern = { 'foo', 'bar', 'baz', 'frederick' } }) - eq(22, meths.nvim_get_var('autocmd_executed')) + api.nvim_exec_autocmds('BufReadPre', { pattern = { 'foo', 'bar', 'baz', 'frederick' } }) + eq(22, api.nvim_get_var('autocmd_executed')) end) it('can pass the buffer', function() - meths.nvim_set_var('buffer_executed', -1) - eq(-1, meths.nvim_get_var('buffer_executed')) + api.nvim_set_var('buffer_executed', -1) + eq(-1, api.nvim_get_var('buffer_executed')) - meths.nvim_create_autocmd('BufLeave', { + api.nvim_create_autocmd('BufLeave', { pattern = '*', command = 'let g:buffer_executed = +expand("<abuf>")', }) -- Doesn't execute for other non-matching events - meths.nvim_exec_autocmds('CursorHold', { buffer = 1 }) - eq(-1, meths.nvim_get_var('buffer_executed')) + api.nvim_exec_autocmds('CursorHold', { buffer = 1 }) + eq(-1, api.nvim_get_var('buffer_executed')) - meths.nvim_exec_autocmds('BufLeave', { buffer = 1 }) - eq(1, meths.nvim_get_var('buffer_executed')) + api.nvim_exec_autocmds('BufLeave', { buffer = 1 }) + eq(1, api.nvim_get_var('buffer_executed')) end) it('can pass the filename, pattern match', function() - meths.nvim_set_var('filename_executed', 'none') - eq('none', meths.nvim_get_var('filename_executed')) + api.nvim_set_var('filename_executed', 'none') + eq('none', api.nvim_get_var('filename_executed')) - meths.nvim_create_autocmd('BufEnter', { + api.nvim_create_autocmd('BufEnter', { pattern = '*.py', command = 'let g:filename_executed = expand("<afile>")', }) -- Doesn't execute for other non-matching events - meths.nvim_exec_autocmds('CursorHold', { buffer = 1 }) - eq('none', meths.nvim_get_var('filename_executed')) + api.nvim_exec_autocmds('CursorHold', { buffer = 1 }) + eq('none', api.nvim_get_var('filename_executed')) command('edit __init__.py') - eq('__init__.py', meths.nvim_get_var('filename_executed')) + eq('__init__.py', api.nvim_get_var('filename_executed')) end) it('cannot pass buf and fname', function() local ok = pcall( - meths.nvim_exec_autocmds, + api.nvim_exec_autocmds, 'BufReadPre', { pattern = 'literally_cannot_error.rs', buffer = 1 } ) @@ -952,73 +952,73 @@ describe('autocmd api', function() end) it('can pass the filename, exact match', function() - meths.nvim_set_var('filename_executed', 'none') - eq('none', meths.nvim_get_var('filename_executed')) + api.nvim_set_var('filename_executed', 'none') + eq('none', api.nvim_get_var('filename_executed')) command('edit other_file.txt') command('edit __init__.py') - eq('none', meths.nvim_get_var('filename_executed')) + eq('none', api.nvim_get_var('filename_executed')) - meths.nvim_create_autocmd('CursorHoldI', { + api.nvim_create_autocmd('CursorHoldI', { pattern = '__init__.py', command = 'let g:filename_executed = expand("<afile>")', }) -- Doesn't execute for other non-matching events - meths.nvim_exec_autocmds('CursorHoldI', { buffer = 1 }) - eq('none', meths.nvim_get_var('filename_executed')) + api.nvim_exec_autocmds('CursorHoldI', { buffer = 1 }) + eq('none', api.nvim_get_var('filename_executed')) - meths.nvim_exec_autocmds('CursorHoldI', { buffer = meths.nvim_get_current_buf() }) - eq('__init__.py', meths.nvim_get_var('filename_executed')) + api.nvim_exec_autocmds('CursorHoldI', { buffer = api.nvim_get_current_buf() }) + eq('__init__.py', api.nvim_get_var('filename_executed')) -- Reset filename - meths.nvim_set_var('filename_executed', 'none') + api.nvim_set_var('filename_executed', 'none') - meths.nvim_exec_autocmds('CursorHoldI', { pattern = '__init__.py' }) - eq('__init__.py', meths.nvim_get_var('filename_executed')) + api.nvim_exec_autocmds('CursorHoldI', { pattern = '__init__.py' }) + eq('__init__.py', api.nvim_get_var('filename_executed')) end) it('works with user autocmds', function() - meths.nvim_set_var('matched', 'none') + api.nvim_set_var('matched', 'none') - meths.nvim_create_autocmd('User', { + api.nvim_create_autocmd('User', { pattern = 'TestCommand', command = 'let g:matched = "matched"', }) - meths.nvim_exec_autocmds('User', { pattern = 'OtherCommand' }) - eq('none', meths.nvim_get_var('matched')) - meths.nvim_exec_autocmds('User', { pattern = 'TestCommand' }) - eq('matched', meths.nvim_get_var('matched')) + api.nvim_exec_autocmds('User', { pattern = 'OtherCommand' }) + eq('none', api.nvim_get_var('matched')) + api.nvim_exec_autocmds('User', { pattern = 'TestCommand' }) + eq('matched', api.nvim_get_var('matched')) end) it('can pass group by id', function() - meths.nvim_set_var('group_executed', false) + api.nvim_set_var('group_executed', false) - local auid = meths.nvim_create_augroup('nvim_test_augroup', { clear = true }) - meths.nvim_create_autocmd('FileType', { + local auid = api.nvim_create_augroup('nvim_test_augroup', { clear = true }) + api.nvim_create_autocmd('FileType', { group = auid, command = 'let g:group_executed = v:true', }) - eq(false, meths.nvim_get_var('group_executed')) - meths.nvim_exec_autocmds('FileType', { group = auid }) - eq(true, meths.nvim_get_var('group_executed')) + eq(false, api.nvim_get_var('group_executed')) + api.nvim_exec_autocmds('FileType', { group = auid }) + eq(true, api.nvim_get_var('group_executed')) end) it('can pass group by name', function() - meths.nvim_set_var('group_executed', false) + api.nvim_set_var('group_executed', false) local auname = 'nvim_test_augroup' - meths.nvim_create_augroup(auname, { clear = true }) - meths.nvim_create_autocmd('FileType', { + api.nvim_create_augroup(auname, { clear = true }) + api.nvim_create_autocmd('FileType', { group = auname, command = 'let g:group_executed = v:true', }) - eq(false, meths.nvim_get_var('group_executed')) - meths.nvim_exec_autocmds('FileType', { group = auname }) - eq(true, meths.nvim_get_var('group_executed')) + eq(false, api.nvim_get_var('group_executed')) + api.nvim_exec_autocmds('FileType', { group = auname }) + eq(true, api.nvim_get_var('group_executed')) end) end) @@ -1026,7 +1026,7 @@ describe('autocmd api', function() before_each(function() clear() - meths.nvim_set_var('executed', 0) + api.nvim_set_var('executed', 0) end) local make_counting_autocmd = function(opts) @@ -1040,7 +1040,7 @@ describe('autocmd api', function() resulting.group = opts.group resulting.once = opts.once - meths.nvim_create_autocmd('FileType', resulting) + api.nvim_create_autocmd('FileType', resulting) end local set_ft = function(ft) @@ -1049,12 +1049,12 @@ describe('autocmd api', function() end local get_executed_count = function() - return meths.nvim_get_var('executed') + return api.nvim_get_var('executed') end it('can be added in a group', function() local augroup = 'TestGroup' - meths.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_augroup(augroup, { clear = true }) make_counting_autocmd { group = augroup } set_ft('txt') @@ -1083,7 +1083,7 @@ describe('autocmd api', function() end) it('errors on unexpected keys', function() - local success, code = pcall(meths.nvim_create_autocmd, 'FileType', { + local success, code = pcall(api.nvim_create_autocmd, 'FileType', { pattern = '*', not_a_valid_key = 'NotDefined', }) @@ -1190,8 +1190,8 @@ describe('autocmd api', function() it('groups can be cleared', function() local augroup = 'TestGroup' - meths.nvim_create_augroup(augroup, { clear = true }) - meths.nvim_create_autocmd('FileType', { + api.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_autocmd('FileType', { group = augroup, command = 'let g:executed = g:executed + 1', }) @@ -1200,8 +1200,8 @@ describe('autocmd api', function() set_ft('txt') eq(2, get_executed_count(), 'should only count twice') - meths.nvim_create_augroup(augroup, { clear = true }) - eq({}, meths.nvim_get_autocmds { group = augroup }) + api.nvim_create_augroup(augroup, { clear = true }) + eq({}, api.nvim_get_autocmds { group = augroup }) set_ft('txt') set_ft('txt') @@ -1210,22 +1210,22 @@ describe('autocmd api', function() it('can delete non-existent groups with pcall', function() eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_name, 'noexist')]]) - eq('Vim:E367: No such group: "noexist"', pcall_err(meths.nvim_del_augroup_by_name, 'noexist')) + eq('Vim:E367: No such group: "noexist"', pcall_err(api.nvim_del_augroup_by_name, 'noexist')) eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, -12342)]]) - eq('Vim:E367: No such group: "--Deleted--"', pcall_err(meths.nvim_del_augroup_by_id, -12312)) + eq('Vim:E367: No such group: "--Deleted--"', pcall_err(api.nvim_del_augroup_by_id, -12312)) eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, 0)]]) - eq('Vim:E367: No such group: "[NULL]"', pcall_err(meths.nvim_del_augroup_by_id, 0)) + eq('Vim:E367: No such group: "[NULL]"', pcall_err(api.nvim_del_augroup_by_id, 0)) eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, 12342)]]) - eq('Vim:E367: No such group: "[NULL]"', pcall_err(meths.nvim_del_augroup_by_id, 12312)) + eq('Vim:E367: No such group: "[NULL]"', pcall_err(api.nvim_del_augroup_by_id, 12312)) end) it('groups work with once', function() local augroup = 'TestGroup' - meths.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_augroup(augroup, { clear = true }) make_counting_autocmd { group = augroup, once = true } set_ft('txt') @@ -1237,7 +1237,7 @@ describe('autocmd api', function() it('autocmds can be registered multiple times.', function() local augroup = 'TestGroup' - meths.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_augroup(augroup, { clear = true }) make_counting_autocmd { group = augroup, once = false } make_counting_autocmd { group = augroup, once = false } make_counting_autocmd { group = augroup, once = false } @@ -1251,16 +1251,16 @@ describe('autocmd api', function() it('can be deleted', function() local augroup = 'WillBeDeleted' - meths.nvim_create_augroup(augroup, { clear = true }) - meths.nvim_create_autocmd({ 'FileType' }, { + api.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_autocmd({ 'FileType' }, { pattern = '*', command = "echo 'does not matter'", }) -- Clears the augroup from before, which erases the autocmd - meths.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_augroup(augroup, { clear = true }) - local result = #meths.nvim_get_autocmds { group = augroup } + local result = #api.nvim_get_autocmds { group = augroup } eq(0, result) end) @@ -1268,10 +1268,10 @@ describe('autocmd api', function() it('can be used for buffer local autocmds', function() local augroup = 'WillBeDeleted' - meths.nvim_set_var('value_set', false) + api.nvim_set_var('value_set', false) - meths.nvim_create_augroup(augroup, { clear = true }) - meths.nvim_create_autocmd('FileType', { + api.nvim_create_augroup(augroup, { clear = true }) + api.nvim_create_autocmd('FileType', { pattern = '<buffer>', command = 'let g:value_set = v:true', }) @@ -1279,7 +1279,7 @@ describe('autocmd api', function() command 'new' command 'set filetype=python' - eq(false, meths.nvim_get_var('value_set')) + eq(false, api.nvim_get_var('value_set')) end) it('can accept vimscript functions', function() @@ -1302,7 +1302,7 @@ describe('autocmd api', function() set filetype=txt ]] - eq(2, meths.nvim_get_var('vimscript_executed')) + eq(2, api.nvim_get_var('vimscript_executed')) end) end) @@ -1314,11 +1314,11 @@ describe('autocmd api', function() command('augroup! TEMP_A') - eq(false, pcall(meths.nvim_get_autocmds, { group = 'TEMP_A' })) + eq(false, pcall(api.nvim_get_autocmds, { group = 'TEMP_A' })) -- For some reason, augroup! doesn't clear the autocmds themselves, which is just wild -- but we managed to keep this behavior. - eq(1, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(1, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) it('legacy: remove augroups that have no autocmds', function() @@ -1327,8 +1327,8 @@ describe('autocmd api', function() command('augroup! TEMP_AB') - eq(false, pcall(meths.nvim_get_autocmds, { group = 'TEMP_AB' })) - eq(0, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(false, pcall(api.nvim_get_autocmds, { group = 'TEMP_AB' })) + eq(0, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) it('legacy: multiple remove and add augroup', function() @@ -1340,7 +1340,7 @@ describe('autocmd api', function() command('augroup! TEMP_ABC') -- Should still have one autocmd :'( - local aus = meths.nvim_get_autocmds { event = 'BufReadPost' } + local aus = api.nvim_get_autocmds { event = 'BufReadPost' } eq(1, #aus, aus) command('augroup TEMP_ABC') @@ -1349,13 +1349,13 @@ describe('autocmd api', function() command('augroup END') -- Should now have two autocmds :'( - aus = meths.nvim_get_autocmds { event = 'BufReadPost' } + aus = api.nvim_get_autocmds { event = 'BufReadPost' } eq(2, #aus, aus) command('augroup! TEMP_ABC') - eq(false, pcall(meths.nvim_get_autocmds, { group = 'TEMP_ABC' })) - eq(2, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(false, pcall(api.nvim_get_autocmds, { group = 'TEMP_ABC' })) + eq(2, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) it('api: should clear and not return any autocmds for delete groups by id', function() @@ -1363,13 +1363,13 @@ describe('autocmd api', function() command('autocmd! BufReadPost *.py :echo "Hello"') command('augroup END') - local augroup_id = meths.nvim_create_augroup('TEMP_ABCD', { clear = false }) - meths.nvim_del_augroup_by_id(augroup_id) + local augroup_id = api.nvim_create_augroup('TEMP_ABCD', { clear = false }) + api.nvim_del_augroup_by_id(augroup_id) -- For good reason, we kill all the autocmds from del_augroup, -- so now this works as expected - eq(false, pcall(meths.nvim_get_autocmds, { group = 'TEMP_ABCD' })) - eq(0, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(false, pcall(api.nvim_get_autocmds, { group = 'TEMP_ABCD' })) + eq(0, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) it('api: should clear and not return any autocmds for delete groups by name', function() @@ -1377,12 +1377,12 @@ describe('autocmd api', function() command('autocmd! BufReadPost *.py :echo "Hello"') command('augroup END') - meths.nvim_del_augroup_by_name('TEMP_ABCDE') + api.nvim_del_augroup_by_name('TEMP_ABCDE') -- For good reason, we kill all the autocmds from del_augroup, -- so now this works as expected - eq(false, pcall(meths.nvim_get_autocmds, { group = 'TEMP_ABCDE' })) - eq(0, #meths.nvim_get_autocmds { event = 'BufReadPost' }) + eq(false, pcall(api.nvim_get_autocmds, { group = 'TEMP_ABCDE' })) + eq(0, #api.nvim_get_autocmds { event = 'BufReadPost' }) end) end) @@ -1390,18 +1390,18 @@ describe('autocmd api', function() it('validation', function() eq( "Cannot use both 'pattern' and 'buffer'", - pcall_err(meths.nvim_clear_autocmds, { + pcall_err(api.nvim_clear_autocmds, { pattern = '*', buffer = 42, }) ) eq( "Invalid 'event' item: expected String, got Array", - pcall_err(meths.nvim_clear_autocmds, { + pcall_err(api.nvim_clear_autocmds, { event = { 'FileType', {} }, }) ) - eq("Invalid 'group': 0", pcall_err(meths.nvim_clear_autocmds, { group = 0 })) + eq("Invalid 'group': 0", pcall_err(api.nvim_clear_autocmds, { group = 0 })) end) it('should clear based on event + pattern', function() @@ -1409,17 +1409,17 @@ describe('autocmd api', function() command('autocmd InsertEnter *.txt :echo "Text Files Are Cool"') local search = { event = 'InsertEnter', pattern = '*.txt' } - local before_delete = meths.nvim_get_autocmds(search) + local before_delete = api.nvim_get_autocmds(search) eq(1, #before_delete) - local before_delete_all = meths.nvim_get_autocmds { event = search.event } + local before_delete_all = api.nvim_get_autocmds { event = search.event } eq(2, #before_delete_all) - meths.nvim_clear_autocmds(search) - local after_delete = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds(search) + local after_delete = api.nvim_get_autocmds(search) eq(0, #after_delete) - local after_delete_all = meths.nvim_get_autocmds { event = search.event } + local after_delete_all = api.nvim_get_autocmds { event = search.event } eq(1, #after_delete_all) end) @@ -1428,11 +1428,11 @@ describe('autocmd api', function() command('autocmd InsertEnter *.txt :echo "Text Files Are Cool"') local search = { event = 'InsertEnter' } - local before_delete = meths.nvim_get_autocmds(search) + local before_delete = api.nvim_get_autocmds(search) eq(2, #before_delete) - meths.nvim_clear_autocmds(search) - local after_delete = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds(search) + local after_delete = api.nvim_get_autocmds(search) eq(0, #after_delete) end) @@ -1443,18 +1443,17 @@ describe('autocmd api', function() command('autocmd InsertLeave *.TestPat2 :echo "Leave 2"') local search = { pattern = '*.TestPat1' } - local before_delete = meths.nvim_get_autocmds(search) + local before_delete = api.nvim_get_autocmds(search) eq(2, #before_delete) local before_delete_events = - meths.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } + api.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } eq(4, #before_delete_events) - meths.nvim_clear_autocmds(search) - local after_delete = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds(search) + local after_delete = api.nvim_get_autocmds(search) eq(0, #after_delete) - local after_delete_events = - meths.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } + local after_delete_events = api.nvim_get_autocmds { event = { 'InsertEnter', 'InsertLeave' } } eq(2, #after_delete_events) end) @@ -1464,11 +1463,11 @@ describe('autocmd api', function() command('autocmd InsertEnter *.TestPat1 :echo "Enter Pattern"') local search = { event = 'InsertEnter' } - local before_delete = meths.nvim_get_autocmds(search) + local before_delete = api.nvim_get_autocmds(search) eq(2, #before_delete) - meths.nvim_clear_autocmds { buffer = 0 } - local after_delete = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds { buffer = 0 } + local after_delete = api.nvim_get_autocmds(search) eq(1, #after_delete) eq('*.TestPat1', after_delete[1].pattern) end) @@ -1481,17 +1480,17 @@ describe('autocmd api', function() command('augroup END') local search = { event = 'InsertEnter', group = 'TestNvimClearAutocmds' } - local before_delete = meths.nvim_get_autocmds(search) + local before_delete = api.nvim_get_autocmds(search) eq(2, #before_delete) -- Doesn't clear without passing group. - meths.nvim_clear_autocmds { buffer = 0 } - local without_group = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds { buffer = 0 } + local without_group = api.nvim_get_autocmds(search) eq(2, #without_group) -- Doesn't clear with passing group. - meths.nvim_clear_autocmds { buffer = 0, group = search.group } - local with_group = meths.nvim_get_autocmds(search) + api.nvim_clear_autocmds { buffer = 0, group = search.group } + local with_group = api.nvim_get_autocmds(search) eq(1, #with_group) end) end) diff --git a/test/functional/api/buffer_spec.lua b/test/functional/api/buffer_spec.lua index b1b4c9f583..10be4c56a7 100644 --- a/test/functional/api/buffer_spec.lua +++ b/test/functional/api/buffer_spec.lua @@ -4,8 +4,8 @@ local clear = helpers.clear local eq = helpers.eq local ok = helpers.ok local describe_lua_and_rpc = helpers.describe_lua_and_rpc(describe) -local meths = helpers.meths -local funcs = helpers.funcs +local api = helpers.api +local fn = helpers.fn local request = helpers.request local exc_exec = helpers.exc_exec local exec_lua = helpers.exec_lua @@ -41,120 +41,114 @@ describe('api/buf', function() end) it("doesn't crash just after set undolevels=1 #24894", function() - local buf = meths.nvim_create_buf(false, true) - meths.nvim_buf_set_option(buf, 'undolevels', -1) - meths.nvim_buf_set_lines(buf, 0, 1, false, {}) + local buf = api.nvim_create_buf(false, true) + api.nvim_buf_set_option(buf, 'undolevels', -1) + api.nvim_buf_set_lines(buf, 0, 1, false, {}) assert_alive() end) it('cursor position is maintained after lines are inserted #9961', function() -- replace the buffer contents with these three lines. - meths.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) + api.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) -- Set the current cursor to {3, 2}. - meths.nvim_win_set_cursor(0, { 3, 2 }) + api.nvim_win_set_cursor(0, { 3, 2 }) -- add 2 lines and delete 1 line above the current cursor position. - meths.nvim_buf_set_lines(0, 1, 2, true, { 'line5', 'line6' }) + api.nvim_buf_set_lines(0, 1, 2, true, { 'line5', 'line6' }) -- check the current set of lines in the buffer. - eq({ 'line1', 'line5', 'line6', 'line3', 'line4' }, meths.nvim_buf_get_lines(0, 0, -1, true)) + eq({ 'line1', 'line5', 'line6', 'line3', 'line4' }, api.nvim_buf_get_lines(0, 0, -1, true)) -- cursor should be moved below by 1 line. - eq({ 4, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 4, 2 }, api.nvim_win_get_cursor(0)) -- add a line after the current cursor position. - meths.nvim_buf_set_lines(0, 5, 5, true, { 'line7' }) + api.nvim_buf_set_lines(0, 5, 5, true, { 'line7' }) -- check the current set of lines in the buffer. eq( { 'line1', 'line5', 'line6', 'line3', 'line4', 'line7' }, - meths.nvim_buf_get_lines(0, 0, -1, true) + api.nvim_buf_get_lines(0, 0, -1, true) ) -- cursor position is unchanged. - eq({ 4, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 4, 2 }, api.nvim_win_get_cursor(0)) -- overwrite current cursor line. - meths.nvim_buf_set_lines(0, 3, 5, true, { 'line8', 'line9' }) + api.nvim_buf_set_lines(0, 3, 5, true, { 'line8', 'line9' }) -- check the current set of lines in the buffer. eq( { 'line1', 'line5', 'line6', 'line8', 'line9', 'line7' }, - meths.nvim_buf_get_lines(0, 0, -1, true) + api.nvim_buf_get_lines(0, 0, -1, true) ) -- cursor position is unchanged. - eq({ 4, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 4, 2 }, api.nvim_win_get_cursor(0)) -- delete current cursor line. - meths.nvim_buf_set_lines(0, 3, 5, true, {}) + api.nvim_buf_set_lines(0, 3, 5, true, {}) -- check the current set of lines in the buffer. - eq({ 'line1', 'line5', 'line6', 'line7' }, meths.nvim_buf_get_lines(0, 0, -1, true)) + eq({ 'line1', 'line5', 'line6', 'line7' }, api.nvim_buf_get_lines(0, 0, -1, true)) -- cursor position is unchanged. - eq({ 4, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 4, 2 }, api.nvim_win_get_cursor(0)) end) it('cursor position is maintained in non-current window', function() - meths.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) - meths.nvim_win_set_cursor(0, { 3, 2 }) - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + api.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) + api.nvim_win_set_cursor(0, { 3, 2 }) + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new') - meths.nvim_buf_set_lines(buf, 1, 2, true, { 'line5', 'line6' }) - eq( - { 'line1', 'line5', 'line6', 'line3', 'line4' }, - meths.nvim_buf_get_lines(buf, 0, -1, true) - ) - eq({ 4, 2 }, meths.nvim_win_get_cursor(win)) + api.nvim_buf_set_lines(buf, 1, 2, true, { 'line5', 'line6' }) + eq({ 'line1', 'line5', 'line6', 'line3', 'line4' }, api.nvim_buf_get_lines(buf, 0, -1, true)) + eq({ 4, 2 }, api.nvim_win_get_cursor(win)) end) it('cursor position is maintained in TWO non-current windows', function() - meths.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) - meths.nvim_win_set_cursor(0, { 3, 2 }) - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + api.nvim_buf_set_lines(0, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) + api.nvim_win_set_cursor(0, { 3, 2 }) + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('split') - meths.nvim_win_set_cursor(0, { 4, 2 }) - local win2 = meths.nvim_get_current_win() + api.nvim_win_set_cursor(0, { 4, 2 }) + local win2 = api.nvim_get_current_win() -- set current window to third one with another buffer command('new') - meths.nvim_buf_set_lines(buf, 1, 2, true, { 'line5', 'line6' }) - eq( - { 'line1', 'line5', 'line6', 'line3', 'line4' }, - meths.nvim_buf_get_lines(buf, 0, -1, true) - ) - eq({ 4, 2 }, meths.nvim_win_get_cursor(win)) - eq({ 5, 2 }, meths.nvim_win_get_cursor(win2)) + api.nvim_buf_set_lines(buf, 1, 2, true, { 'line5', 'line6' }) + eq({ 'line1', 'line5', 'line6', 'line3', 'line4' }, api.nvim_buf_get_lines(buf, 0, -1, true)) + eq({ 4, 2 }, api.nvim_win_get_cursor(win)) + eq({ 5, 2 }, api.nvim_win_get_cursor(win2)) end) it('line_count has defined behaviour for unloaded buffers', function() -- we'll need to know our bufnr for when it gets unloaded - local bufnr = meths.nvim_buf_get_number(0) + local bufnr = api.nvim_buf_get_number(0) -- replace the buffer contents with these three lines - meths.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) + api.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) -- check the line count is correct - eq(4, meths.nvim_buf_line_count(bufnr)) + eq(4, api.nvim_buf_line_count(bufnr)) -- force unload the buffer (this will discard changes) command('new') command('bunload! ' .. bufnr) -- line count for an unloaded buffer should always be 0 - eq(0, meths.nvim_buf_line_count(bufnr)) + eq(0, api.nvim_buf_line_count(bufnr)) end) it('get_lines has defined behaviour for unloaded buffers', function() -- we'll need to know our bufnr for when it gets unloaded - local bufnr = meths.nvim_buf_get_number(0) + local bufnr = api.nvim_buf_get_number(0) -- replace the buffer contents with these three lines - meths.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) + api.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1', 'line2', 'line3', 'line4' }) -- confirm that getting lines works - eq({ 'line2', 'line3' }, meths.nvim_buf_get_lines(bufnr, 1, 3, true)) + eq({ 'line2', 'line3' }, api.nvim_buf_get_lines(bufnr, 1, 3, true)) -- force unload the buffer (this will discard changes) command('new') command('bunload! ' .. bufnr) -- attempting to get lines now always gives empty list - eq({}, meths.nvim_buf_get_lines(bufnr, 1, 3, true)) + eq({}, api.nvim_buf_get_lines(bufnr, 1, 3, true)) -- it's impossible to get out-of-bounds errors for an unloaded buffer - eq({}, meths.nvim_buf_get_lines(bufnr, 8888, 9999, true)) + eq({}, api.nvim_buf_get_lines(bufnr, 8888, 9999, true)) end) describe('handles topline', function() @@ -167,22 +161,22 @@ describe('api/buf', function() [3] = { reverse = true }, } screen:attach() - meths.nvim_buf_set_lines( + api.nvim_buf_set_lines( 0, 0, -1, true, { 'aaa', 'bbb', 'ccc', 'ddd', 'www', 'xxx', 'yyy', 'zzz' } ) - meths.nvim_set_option_value('modified', false, {}) + api.nvim_set_option_value('modified', false, {}) end) it('of current window', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new | wincmd w') - meths.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(win, { 8, 0 }) screen:expect { grid = [[ @@ -198,7 +192,7 @@ describe('api/buf', function() ]], } - meths.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) + api.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) screen:expect { grid = [[ | @@ -214,7 +208,7 @@ describe('api/buf', function() } -- replacing topline keeps it the topline - meths.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) + api.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) screen:expect { grid = [[ | @@ -230,7 +224,7 @@ describe('api/buf', function() } -- inserting just before topline does not scroll up if cursor would be moved - meths.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) + api.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) screen:expect { grid = [[ | @@ -246,7 +240,7 @@ describe('api/buf', function() unchanged = true, } - meths.nvim_win_set_cursor(0, { 7, 0 }) + api.nvim_win_set_cursor(0, { 7, 0 }) screen:expect { grid = [[ | @@ -261,7 +255,7 @@ describe('api/buf', function() ]], } - meths.nvim_buf_set_lines(buf, 4, 4, true, { 'mmmeeeee' }) + api.nvim_buf_set_lines(buf, 4, 4, true, { 'mmmeeeee' }) screen:expect { grid = [[ | @@ -278,11 +272,11 @@ describe('api/buf', function() end) it('of non-current window', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new') - meths.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(win, { 8, 0 }) screen:expect { grid = [[ @@ -298,7 +292,7 @@ describe('api/buf', function() ]], } - meths.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) + api.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) screen:expect { grid = [[ ^ | @@ -314,7 +308,7 @@ describe('api/buf', function() } -- replacing topline keeps it the topline - meths.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) + api.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) screen:expect { grid = [[ ^ | @@ -330,7 +324,7 @@ describe('api/buf', function() } -- inserting just before topline scrolls up - meths.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) + api.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) screen:expect { grid = [[ ^ | @@ -347,12 +341,12 @@ describe('api/buf', function() end) it('of split windows with same buffer', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('split') - meths.nvim_win_set_cursor(win, { 8, 0 }) - meths.nvim_win_set_cursor(0, { 1, 0 }) + api.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(0, { 1, 0 }) screen:expect { grid = [[ @@ -370,7 +364,7 @@ describe('api/buf', function() | ]], } - meths.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) + api.nvim_buf_set_lines(buf, 0, 2, true, { 'aaabbb' }) screen:expect { grid = [[ @@ -390,7 +384,7 @@ describe('api/buf', function() } -- replacing topline keeps it the topline - meths.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) + api.nvim_buf_set_lines(buf, 3, 4, true, { 'wwweeee' }) screen:expect { grid = [[ ^aaabbb | @@ -409,7 +403,7 @@ describe('api/buf', function() } -- inserting just before topline scrolls up - meths.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) + api.nvim_buf_set_lines(buf, 3, 3, true, { 'mmm' }) screen:expect { grid = [[ ^aaabbb | @@ -430,15 +424,15 @@ describe('api/buf', function() end) it('handles clearing out non-current buffer #24911', function() - local buf = meths.nvim_get_current_buf() - meths.nvim_buf_set_lines(buf, 0, -1, true, { 'aaa', 'bbb', 'ccc' }) + local buf = api.nvim_get_current_buf() + api.nvim_buf_set_lines(buf, 0, -1, true, { 'aaa', 'bbb', 'ccc' }) command('new') - meths.nvim_buf_set_lines(0, 0, -1, true, { 'xxx', 'yyy', 'zzz' }) + api.nvim_buf_set_lines(0, 0, -1, true, { 'xxx', 'yyy', 'zzz' }) - meths.nvim_buf_set_lines(buf, 0, -1, true, {}) - eq({ 'xxx', 'yyy', 'zzz' }, meths.nvim_buf_get_lines(0, 0, -1, true)) - eq({ '' }, meths.nvim_buf_get_lines(buf, 0, -1, true)) + api.nvim_buf_set_lines(buf, 0, -1, true, {}) + eq({ 'xxx', 'yyy', 'zzz' }, api.nvim_buf_get_lines(0, 0, -1, true)) + eq({ '' }, api.nvim_buf_get_lines(buf, 0, -1, true)) end) end) @@ -520,24 +514,24 @@ describe('api/buf', function() end) end) - describe_lua_and_rpc('nvim_buf_get_lines, nvim_buf_set_lines', function(api) + describe_lua_and_rpc('nvim_buf_get_lines, nvim_buf_set_lines', function(lua_or_rpc) local function get_lines(...) - return api.meths.nvim_buf_get_lines(0, ...) + return lua_or_rpc.nvim_buf_get_lines(0, ...) end local function set_lines(...) - return api.meths.nvim_buf_set_lines(0, ...) + return lua_or_rpc.nvim_buf_set_lines(0, ...) end local function line_count() - return api.meths.nvim_buf_line_count(0) + return lua_or_rpc.nvim_buf_line_count(0) end it('fails correctly when input is not valid', function() - eq(1, api.meths.nvim_buf_get_number(0)) + eq(1, lua_or_rpc.nvim_buf_get_number(0)) eq( [['replacement string' item contains newlines]], - pcall_err(api.meths.nvim_buf_set_lines, 1, 1, 2, false, { 'b\na' }) + pcall_err(lua_or_rpc.nvim_buf_set_lines, 1, 1, 2, false, { 'b\na' }) ) end) @@ -545,7 +539,7 @@ describe('api/buf', function() command('set nomodifiable') eq( [[Buffer is not 'modifiable']], - pcall_err(api.meths.nvim_buf_set_lines, 1, 1, 2, false, { 'a', 'b' }) + pcall_err(lua_or_rpc.nvim_buf_set_lines, 1, 1, 2, false, { 'a', 'b' }) ) end) @@ -701,7 +695,7 @@ describe('api/buf', function() Who would win? A real window with proper text]]) - local buf = api.meths.nvim_create_buf(false, true) + local buf = lua_or_rpc.nvim_create_buf(false, true) screen:expect([[ Who would win? | A real window | @@ -710,7 +704,7 @@ describe('api/buf', function() | ]]) - api.meths.nvim_buf_set_lines(buf, 0, -1, true, { 'or some', 'scratchy text' }) + lua_or_rpc.nvim_buf_set_lines(buf, 0, -1, true, { 'or some', 'scratchy text' }) feed('i') -- provoke redraw screen:expect([[ Who would win? | @@ -726,41 +720,41 @@ describe('api/buf', function() visible buffer line 1 line 2 ]]) - local hiddenbuf = api.meths.nvim_create_buf(false, true) + local hiddenbuf = lua_or_rpc.nvim_create_buf(false, true) command('vsplit') command('vsplit') feed('<c-w>l<c-w>l<c-w>l') - eq(3, funcs.winnr()) + eq(3, fn.winnr()) feed('<c-w>h') - eq(2, funcs.winnr()) - api.meths.nvim_buf_set_lines(hiddenbuf, 0, -1, true, { 'hidden buffer line 1', 'line 2' }) + eq(2, fn.winnr()) + lua_or_rpc.nvim_buf_set_lines(hiddenbuf, 0, -1, true, { 'hidden buffer line 1', 'line 2' }) feed('<c-w>p') - eq(3, funcs.winnr()) + eq(3, fn.winnr()) end) it('set_lines on unloaded buffer #8659 #22670', function() - local bufnr = meths.nvim_buf_get_number(0) - meths.nvim_buf_set_lines(bufnr, 0, -1, false, { 'a', 'b', 'c' }) - meths.nvim_buf_set_name(bufnr, 'set_lines') + local bufnr = api.nvim_get_current_buf().id + lua_or_rpc.nvim_buf_set_lines(bufnr, 0, -1, false, { 'a', 'b', 'c' }) + lua_or_rpc.nvim_buf_set_name(bufnr, 'set_lines') finally(function() os.remove('set_lines') end) command('write!') command('new') command('bunload! ' .. bufnr) - local new_bufnr = funcs.bufnr('set_lines', true) - meths.nvim_buf_set_lines(new_bufnr, 0, -1, false, {}) - eq({ '' }, meths.nvim_buf_get_lines(new_bufnr, 0, -1, false)) + local new_bufnr = fn.bufnr('set_lines', true) + lua_or_rpc.nvim_buf_set_lines(new_bufnr, 0, -1, false, {}) + eq({ '' }, lua_or_rpc.nvim_buf_get_lines(new_bufnr, 0, -1, false)) end) end) describe('nvim_buf_set_text', function() local function get_lines(...) - return meths.nvim_buf_get_lines(0, ...) + return api.nvim_buf_get_lines(0, ...) end local function set_text(...) - return meths.nvim_buf_set_text(0, ...) + return api.nvim_buf_set_text(0, ...) end it('works', function() @@ -840,12 +834,12 @@ describe('api/buf', function() ]]) -- position the cursor on `!` - meths.nvim_win_set_cursor(0, { 1, 11 }) + api.nvim_win_set_cursor(0, { 1, 11 }) -- replace 'world' with 'foo' set_text(0, 6, 0, 11, { 'foo' }) eq('hello foo!', curbuf_depr('get_line', 0)) -- cursor should be moved left by two columns (replacement is shorter by 2 chars) - eq({ 1, 9 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 9 }, api.nvim_win_get_cursor(0)) end) it('updates the cursor position in non-current window', function() @@ -853,18 +847,18 @@ describe('api/buf', function() hello world!]]) -- position the cursor on `!` - meths.nvim_win_set_cursor(0, { 1, 11 }) + api.nvim_win_set_cursor(0, { 1, 11 }) - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new') -- replace 'world' with 'foo' - meths.nvim_buf_set_text(buf, 0, 6, 0, 11, { 'foo' }) - eq({ 'hello foo!' }, meths.nvim_buf_get_lines(buf, 0, -1, true)) + api.nvim_buf_set_text(buf, 0, 6, 0, 11, { 'foo' }) + eq({ 'hello foo!' }, api.nvim_buf_get_lines(buf, 0, -1, true)) -- cursor should be moved left by two columns (replacement is shorter by 2 chars) - eq({ 1, 9 }, meths.nvim_win_get_cursor(win)) + eq({ 1, 9 }, api.nvim_win_get_cursor(win)) end) it('updates the cursor position in TWO non-current windows', function() @@ -872,24 +866,24 @@ describe('api/buf', function() hello world!]]) -- position the cursor on `!` - meths.nvim_win_set_cursor(0, { 1, 11 }) - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + api.nvim_win_set_cursor(0, { 1, 11 }) + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('split') - local win2 = meths.nvim_get_current_win() + local win2 = api.nvim_get_current_win() -- position the cursor on `w` - meths.nvim_win_set_cursor(0, { 1, 6 }) + api.nvim_win_set_cursor(0, { 1, 6 }) command('new') -- replace 'hello' with 'foo' - meths.nvim_buf_set_text(buf, 0, 0, 0, 5, { 'foo' }) - eq({ 'foo world!' }, meths.nvim_buf_get_lines(buf, 0, -1, true)) + api.nvim_buf_set_text(buf, 0, 0, 0, 5, { 'foo' }) + eq({ 'foo world!' }, api.nvim_buf_get_lines(buf, 0, -1, true)) -- both cursors should be moved left by two columns (replacement is shorter by 2 chars) - eq({ 1, 9 }, meths.nvim_win_get_cursor(win)) - eq({ 1, 4 }, meths.nvim_win_get_cursor(win2)) + eq({ 1, 9 }, api.nvim_win_get_cursor(win)) + eq({ 1, 4 }, api.nvim_win_get_cursor(win2)) end) describe('when text is being added right at cursor position #22526', function() @@ -898,12 +892,12 @@ describe('api/buf', function() abcd]]) -- position the cursor on 'c' - meths.nvim_win_set_cursor(0, { 1, 2 }) + api.nvim_win_set_cursor(0, { 1, 2 }) -- add 'xxx' before 'c' set_text(0, 2, 0, 2, { 'xxx' }) eq({ 'abxxxcd' }, get_lines(0, -1, true)) -- cursor should be on 'c' - eq({ 1, 5 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 5 }, api.nvim_win_get_cursor(0)) end) it('updates the cursor position only in non-current window when in INSERT mode', function() @@ -911,7 +905,7 @@ describe('api/buf', function() abcd]]) -- position the cursor on 'c' - meths.nvim_win_set_cursor(0, { 1, 2 }) + api.nvim_win_set_cursor(0, { 1, 2 }) -- open vertical split feed('<c-w>v') -- get into INSERT mode to treat cursor @@ -921,13 +915,13 @@ describe('api/buf', function() set_text(0, 2, 0, 2, { 'xxx' }) eq({ 'abxxxcd' }, get_lines(0, -1, true)) -- in the current window cursor should stay after 'b' - eq({ 1, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 2 }, api.nvim_win_get_cursor(0)) -- quit INSERT mode feed('<esc>') -- close current window feed('<c-w>c') -- in another window cursor should be on 'c' - eq({ 1, 5 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 5 }, api.nvim_win_get_cursor(0)) end) end) @@ -937,12 +931,12 @@ describe('api/buf', function() abcd]]) -- position the cursor on 'b' - meths.nvim_win_set_cursor(0, { 1, 1 }) + api.nvim_win_set_cursor(0, { 1, 1 }) -- delete 'b' set_text(0, 1, 0, 2, {}) eq({ 'acd' }, get_lines(0, -1, true)) -- cursor is now on 'c' - eq({ 1, 1 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 1 }, api.nvim_win_get_cursor(0)) end) it('maintains INSERT-mode cursor position current/non-current window', function() @@ -950,7 +944,7 @@ describe('api/buf', function() abcd]]) -- position the cursor on 'b' - meths.nvim_win_set_cursor(0, { 1, 1 }) + api.nvim_win_set_cursor(0, { 1, 1 }) -- open vertical split feed('<c-w>v') -- get into INSERT mode to treat cursor @@ -960,13 +954,13 @@ describe('api/buf', function() set_text(0, 1, 0, 2, {}) eq({ 'acd' }, get_lines(0, -1, true)) -- cursor in the current window should stay after 'a' - eq({ 1, 1 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 1 }, api.nvim_win_get_cursor(0)) -- quit INSERT mode feed('<esc>') -- close current window feed('<c-w>c') -- cursor in non-current window should stay on 'c' - eq({ 1, 1 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 1 }, api.nvim_win_get_cursor(0)) end) end) @@ -978,7 +972,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on ' ' before 'first' - meths.nvim_win_set_cursor(0, { 1, 14 }) + api.nvim_win_set_cursor(0, { 1, 14 }) set_text(0, 15, 2, 11, { 'the line we do not want', @@ -990,7 +984,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should stay at the same position - eq({ 1, 14 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 14 }, api.nvim_win_get_cursor(0)) end) it('maintains cursor position if at start_row and column is still valid', function() @@ -1000,7 +994,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'f' in 'first' - meths.nvim_win_set_cursor(0, { 1, 15 }) + api.nvim_win_set_cursor(0, { 1, 15 }) set_text(0, 15, 2, 11, { 'the line we do not want', @@ -1012,7 +1006,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should stay at the same position - eq({ 1, 15 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 15 }, api.nvim_win_get_cursor(0)) end) it('adjusts cursor column to keep it valid if start_row got smaller', function() @@ -1022,7 +1016,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 't' in 'first' - meths.nvim_win_set_cursor(0, { 1, 19 }) + api.nvim_win_set_cursor(0, { 1, 19 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 15, 2, 24, {'last'}) @@ -1031,7 +1025,7 @@ describe('api/buf', function() eq({ 'This should be last' }, get_lines(0, -1, true)) -- cursor should end up on 't' in 'last' - eq({ 1, 18 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 18 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 18 }, cursor) end) @@ -1043,7 +1037,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 't' in 'first' - meths.nvim_win_set_cursor(0, { 1, 19 }) + api.nvim_win_set_cursor(0, { 1, 19 }) -- enter INSERT mode to treat cursor as being after 't' feed('a') @@ -1054,7 +1048,7 @@ describe('api/buf', function() eq({ 'This should be last' }, get_lines(0, -1, true)) -- cursor should end up after 't' in 'last' - eq({ 1, 19 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 19 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 19 }, cursor) end) @@ -1066,7 +1060,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'w' in 'want' - meths.nvim_win_set_cursor(0, { 2, 31 }) + api.nvim_win_set_cursor(0, { 2, 31 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 15, 2, 11, { @@ -1083,7 +1077,7 @@ describe('api/buf', function() 'and then the last one', }, get_lines(0, -1, true)) -- cursor column should end up at the end of a row - eq({ 2, 5 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 5 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 5 }, cursor) end) @@ -1097,7 +1091,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'w' in 'want' - meths.nvim_win_set_cursor(0, { 2, 31 }) + api.nvim_win_set_cursor(0, { 2, 31 }) -- enter INSERT mode feed('a') @@ -1116,7 +1110,7 @@ describe('api/buf', function() 'and then the last one', }, get_lines(0, -1, true)) -- cursor column should end up at the end of a row - eq({ 2, 6 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 6 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 6 }, cursor) end @@ -1129,7 +1123,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'n' in 'finally' - meths.nvim_win_set_cursor(0, { 3, 6 }) + api.nvim_win_set_cursor(0, { 3, 6 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 15, 2, 11, { @@ -1145,7 +1139,7 @@ describe('api/buf', function() }, get_lines(0, -1, true)) -- cursor should end up on 'y' in 'hopefully' -- to stay in the range, because it got smaller - eq({ 2, 12 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 12 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 12 }, cursor) end) @@ -1157,7 +1151,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'r' in 'there' - meths.nvim_win_set_cursor(0, { 2, 8 }) + api.nvim_win_set_cursor(0, { 2, 8 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 15, 2, 12, {}) @@ -1166,7 +1160,7 @@ describe('api/buf', function() eq({ 'This should be the last one' }, get_lines(0, -1, true)) -- cursor should end up on the next column after deleted range - eq({ 1, 15 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 15 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 15 }, cursor) end) @@ -1178,7 +1172,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'r' in 'there' - meths.nvim_win_set_cursor(0, { 2, 8 }) + api.nvim_win_set_cursor(0, { 2, 8 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 0, 2, 4, {}) @@ -1187,7 +1181,7 @@ describe('api/buf', function() eq({ 'finally the last one' }, get_lines(0, -1, true)) -- cursor should end up in column 0 - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 0 }, cursor) end) @@ -1199,7 +1193,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'y' in 'finally' - meths.nvim_win_set_cursor(0, { 3, 10 }) + api.nvim_win_set_cursor(0, { 3, 10 }) set_text(0, 15, 2, 11, { '1', 'this 2', 'and then' }) eq({ @@ -1208,7 +1202,7 @@ describe('api/buf', function() 'and then the last one', }, get_lines(0, -1, true)) -- cursor should end up on 'n' in 'then' - eq({ 3, 7 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 7 }, api.nvim_win_get_cursor(0)) end) it( @@ -1220,7 +1214,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'y' at 'finally' - meths.nvim_win_set_cursor(0, { 3, 10 }) + api.nvim_win_set_cursor(0, { 3, 10 }) -- enter INSERT mode to treat cursor as being between 'l' and 'y' feed('i') set_text(0, 15, 2, 11, { '1', 'this 2', 'and then' }) @@ -1231,7 +1225,7 @@ describe('api/buf', function() 'and then the last one', }, get_lines(0, -1, true)) -- cursor should end up after 'n' in 'then' - eq({ 3, 8 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 8 }, api.nvim_win_get_cursor(0)) end ) @@ -1242,7 +1236,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'y' in 'finally' - meths.nvim_win_set_cursor(0, { 3, 10 }) + api.nvim_win_set_cursor(0, { 3, 10 }) set_text(2, 4, 2, 11, { 'then' }) eq({ @@ -1251,7 +1245,7 @@ describe('api/buf', function() 'and then the last one', }, get_lines(0, -1, true)) -- cursor should end up on 'n' in 'then' - eq({ 3, 7 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 7 }, api.nvim_win_get_cursor(0)) end) it('does not move cursor column after end of a line', function() @@ -1260,7 +1254,7 @@ describe('api/buf', function() !!!]]) -- position cursor on the last '1' - meths.nvim_win_set_cursor(0, { 2, 2 }) + api.nvim_win_set_cursor(0, { 2, 2 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 33, 1, 3, {}) @@ -1269,7 +1263,7 @@ describe('api/buf', function() eq({ 'This should be the only line here' }, get_lines(0, -1, true)) -- cursor should end up on '!' - eq({ 1, 32 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 32 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 32 }, cursor) end) @@ -1278,7 +1272,7 @@ describe('api/buf', function() insert('\n!!!') -- position cursor on the last '1' - meths.nvim_win_set_cursor(0, { 2, 2 }) + api.nvim_win_set_cursor(0, { 2, 2 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 0, 1, 3, {}) @@ -1287,7 +1281,7 @@ describe('api/buf', function() eq({ '' }, get_lines(0, -1, true)) -- cursor should end up on '!' - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 0 }, cursor) end) @@ -1300,7 +1294,7 @@ describe('api/buf', function() and finally the last one]]) -- position cursor on 't' in 'want' - meths.nvim_win_set_cursor(0, { 2, 34 }) + api.nvim_win_set_cursor(0, { 2, 34 }) -- turn on virtualedit command('set virtualedit=all') @@ -1318,7 +1312,7 @@ describe('api/buf', function() }, get_lines(0, -1, true)) -- cursor should end up on 'y' in 'hopefully' -- to stay in the range - eq({ 2, 12 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 12 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 12 }, cursor) -- coladd should be 0 @@ -1337,7 +1331,7 @@ describe('api/buf', function() and finally the last one]]) -- position cursor on 't' in 'want' - meths.nvim_win_set_cursor(0, { 2, 34 }) + api.nvim_win_set_cursor(0, { 2, 34 }) -- turn on virtualedit command('set virtualedit=all') -- move cursor after eol @@ -1358,7 +1352,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should end up at eol of a new row - eq({ 2, 26 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 26 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 26 }, cursor) -- coladd should be increased so that cursor stays in the same screen column @@ -1379,7 +1373,7 @@ describe('api/buf', function() and finally the last one]]) -- position cursor on 't' in 'first' - meths.nvim_win_set_cursor(0, { 1, 19 }) + api.nvim_win_set_cursor(0, { 1, 19 }) -- turn on virtualedit command('set virtualedit=all') -- move cursor after eol @@ -1400,7 +1394,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should end up at eol of a new row - eq({ 1, 38 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 38 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 38 }, cursor) -- coladd should be increased so that cursor stays in the same screen column @@ -1422,7 +1416,7 @@ describe('api/buf', function() and finally the last one]]) -- position cursor on 't' in 'first' - meths.nvim_win_set_cursor(0, { 1, 19 }) + api.nvim_win_set_cursor(0, { 1, 19 }) -- turn on virtualedit command('set virtualedit=all') -- move cursor after eol just a bit @@ -1443,7 +1437,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should stay at the same screen column - eq({ 1, 22 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 22 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 22 }, cursor) -- coladd should become 0 @@ -1466,7 +1460,7 @@ describe('api/buf', function() and finally the last one]]) -- position cursor on 'e' in 'more' - meths.nvim_win_set_cursor(0, { 3, 11 }) + api.nvim_win_set_cursor(0, { 3, 11 }) -- turn on virtualedit command('set virtualedit=all') -- move cursor after eol @@ -1487,7 +1481,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should end up at eol of a new row - eq({ 2, 26 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 26 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 2, 26 }, cursor) -- coladd should be increased so that cursor stays in the same screen column @@ -1510,17 +1504,17 @@ describe('api/buf', function() line]]) -- position the cursor on 'i' - meths.nvim_win_set_cursor(0, { 3, 2 }) + api.nvim_win_set_cursor(0, { 3, 2 }) set_text(1, 6, 2, 0, {}) eq({ 'first line', 'second line' }, get_lines(0, -1, true)) -- cursor should stay on 'i' - eq({ 2, 8 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 8 }, api.nvim_win_get_cursor(0)) -- add a newline back set_text(1, 6, 1, 6, { '', '' }) eq({ 'first line', 'second', ' line' }, get_lines(0, -1, true)) -- cursor should return back to the original position - eq({ 3, 2 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 2 }, api.nvim_win_get_cursor(0)) end) it( @@ -1532,11 +1526,11 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 'h' in 'the' - meths.nvim_win_set_cursor(0, { 3, 13 }) + api.nvim_win_set_cursor(0, { 3, 13 }) set_text(0, 14, 2, 11, {}) eq({ 'This should be the last one' }, get_lines(0, -1, true)) -- cursor should stay on 'h' - eq({ 1, 16 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 16 }, api.nvim_win_get_cursor(0)) -- add deleted lines back set_text(0, 14, 0, 14, { ' first', @@ -1549,7 +1543,7 @@ describe('api/buf', function() 'and finally the last one', }, get_lines(0, -1, true)) -- cursor should return back to the original position - eq({ 3, 13 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 13 }, api.nvim_win_get_cursor(0)) end ) @@ -1562,7 +1556,7 @@ describe('api/buf', function() and finally the last one]]) -- position the cursor on 's' in 'last' - meths.nvim_win_set_cursor(0, { 3, 18 }) + api.nvim_win_set_cursor(0, { 3, 18 }) set_text(0, 15, 2, 11, { 'the line we do not want', 'but hopefully', @@ -1573,7 +1567,7 @@ describe('api/buf', function() 'but hopefully the last one', }, get_lines(0, -1, true)) -- cursor should stay on 's' - eq({ 2, 20 }, meths.nvim_win_get_cursor(0)) + eq({ 2, 20 }, api.nvim_win_get_cursor(0)) set_text(0, 15, 1, 13, { 'first', @@ -1587,7 +1581,7 @@ describe('api/buf', function() 'and finally the last one', }, get_lines(0, -1, true)) -- cursor should return back to the original position - eq({ 3, 18 }, meths.nvim_win_get_cursor(0)) + eq({ 3, 18 }, api.nvim_win_get_cursor(0)) end ) @@ -1597,7 +1591,7 @@ describe('api/buf', function() ]]) -- position cursor at the empty line - meths.nvim_win_set_cursor(0, { 2, 0 }) + api.nvim_win_set_cursor(0, { 2, 0 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 33, 1, 0, {'!'}) @@ -1606,7 +1600,7 @@ describe('api/buf', function() eq({ 'This should be the only line here!' }, get_lines(0, -1, true)) -- cursor should end up on '!' - eq({ 1, 33 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 33 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 33 }, cursor) end) @@ -1617,7 +1611,7 @@ describe('api/buf', function() eq({ '', '' }, get_lines(0, -1, true)) -- position cursor on the last '1' - meths.nvim_win_set_cursor(0, { 2, 2 }) + api.nvim_win_set_cursor(0, { 2, 2 }) local cursor = exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 0, 1, 0, {''}) @@ -1626,7 +1620,7 @@ describe('api/buf', function() eq({ '' }, get_lines(0, -1, true)) -- cursor should end up on '!' - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) -- immediate call to nvim_win_get_cursor should have returned the same position eq({ 1, 0 }, cursor) end) @@ -1638,46 +1632,46 @@ describe('api/buf', function() end) it('adjusts extmarks', function() - local ns = meths.nvim_create_namespace('my-fancy-plugin') + local ns = api.nvim_create_namespace('my-fancy-plugin') insert([[ foo bar baz ]]) - local id1 = meths.nvim_buf_set_extmark(0, ns, 0, 1, {}) - local id2 = meths.nvim_buf_set_extmark(0, ns, 0, 7, {}) - local id3 = meths.nvim_buf_set_extmark(0, ns, 1, 1, {}) + local id1 = api.nvim_buf_set_extmark(0, ns, 0, 1, {}) + local id2 = api.nvim_buf_set_extmark(0, ns, 0, 7, {}) + local id3 = api.nvim_buf_set_extmark(0, ns, 1, 1, {}) set_text(0, 4, 0, 7, { 'q' }) eq({ 'foo q', 'baz' }, get_lines(0, 2, true)) -- mark before replacement point is unaffected - eq({ 0, 1 }, meths.nvim_buf_get_extmark_by_id(0, ns, id1, {})) + eq({ 0, 1 }, api.nvim_buf_get_extmark_by_id(0, ns, id1, {})) -- mark gets shifted back because the replacement was shorter - eq({ 0, 5 }, meths.nvim_buf_get_extmark_by_id(0, ns, id2, {})) + eq({ 0, 5 }, api.nvim_buf_get_extmark_by_id(0, ns, id2, {})) -- mark on the next line is unaffected - eq({ 1, 1 }, meths.nvim_buf_get_extmark_by_id(0, ns, id3, {})) + eq({ 1, 1 }, api.nvim_buf_get_extmark_by_id(0, ns, id3, {})) -- replacing the text spanning two lines will adjust the mark on the next line set_text(0, 3, 1, 3, { 'qux' }) eq({ 'fooqux', '' }, get_lines(0, 2, true)) - eq({ 0, 6 }, meths.nvim_buf_get_extmark_by_id(0, ns, id3, {})) + eq({ 0, 6 }, api.nvim_buf_get_extmark_by_id(0, ns, id3, {})) -- but mark before replacement point is still unaffected - eq({ 0, 1 }, meths.nvim_buf_get_extmark_by_id(0, ns, id1, {})) + eq({ 0, 1 }, api.nvim_buf_get_extmark_by_id(0, ns, id1, {})) -- and the mark in the middle was shifted to the end of the insertion - eq({ 0, 6 }, meths.nvim_buf_get_extmark_by_id(0, ns, id2, {})) + eq({ 0, 6 }, api.nvim_buf_get_extmark_by_id(0, ns, id2, {})) -- marks should be put back into the same place after undoing set_text(0, 0, 0, 2, { '' }) feed('u') - eq({ 0, 1 }, meths.nvim_buf_get_extmark_by_id(0, ns, id1, {})) - eq({ 0, 6 }, meths.nvim_buf_get_extmark_by_id(0, ns, id2, {})) - eq({ 0, 6 }, meths.nvim_buf_get_extmark_by_id(0, ns, id3, {})) + eq({ 0, 1 }, api.nvim_buf_get_extmark_by_id(0, ns, id1, {})) + eq({ 0, 6 }, api.nvim_buf_get_extmark_by_id(0, ns, id2, {})) + eq({ 0, 6 }, api.nvim_buf_get_extmark_by_id(0, ns, id3, {})) -- marks should be shifted over by the correct number of bytes for multibyte -- chars set_text(0, 0, 0, 0, { 'Ø' }) - eq({ 0, 3 }, meths.nvim_buf_get_extmark_by_id(0, ns, id1, {})) - eq({ 0, 8 }, meths.nvim_buf_get_extmark_by_id(0, ns, id2, {})) - eq({ 0, 8 }, meths.nvim_buf_get_extmark_by_id(0, ns, id3, {})) + eq({ 0, 3 }, api.nvim_buf_get_extmark_by_id(0, ns, id1, {})) + eq({ 0, 8 }, api.nvim_buf_get_extmark_by_id(0, ns, id2, {})) + eq({ 0, 8 }, api.nvim_buf_get_extmark_by_id(0, ns, id3, {})) end) it('correctly marks changed region for redraw #13890', function() @@ -1689,7 +1683,7 @@ describe('api/buf', function() BBB ]]) - meths.nvim_buf_set_text(0, 0, 0, 1, 3, { 'XXX', 'YYY' }) + api.nvim_buf_set_text(0, 0, 0, 1, 3, { 'XXX', 'YYY' }) screen:expect([[ XXX | @@ -1724,7 +1718,7 @@ describe('api/buf', function() it('no heap-use-after-free when called consecutively #19643', function() set_text(0, 0, 0, 0, { 'one', '', '', 'two' }) eq({ 'one', '', '', 'two' }, get_lines(0, 4, true)) - meths.nvim_win_set_cursor(0, { 1, 0 }) + api.nvim_win_set_cursor(0, { 1, 0 }) exec_lua([[ vim.api.nvim_buf_set_text(0, 0, 3, 1, 0, {''}) vim.api.nvim_buf_set_text(0, 0, 3, 1, 0, {''}) @@ -1742,22 +1736,22 @@ describe('api/buf', function() [3] = { reverse = true }, } screen:attach() - meths.nvim_buf_set_lines( + api.nvim_buf_set_lines( 0, 0, -1, true, { 'aaa', 'bbb', 'ccc', 'ddd', 'www', 'xxx', 'yyy', 'zzz' } ) - meths.nvim_set_option_value('modified', false, {}) + api.nvim_set_option_value('modified', false, {}) end) it('of current window', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new | wincmd w') - meths.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(win, { 8, 0 }) screen:expect { grid = [[ @@ -1772,7 +1766,7 @@ describe('api/buf', function() | ]], } - meths.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) + api.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) screen:expect { grid = [[ @@ -1790,11 +1784,11 @@ describe('api/buf', function() end) it('of non-current window', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('new') - meths.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(win, { 8, 0 }) screen:expect { grid = [[ @@ -1810,7 +1804,7 @@ describe('api/buf', function() ]], } - meths.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) + api.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) screen:expect { grid = [[ ^ | @@ -1827,12 +1821,12 @@ describe('api/buf', function() end) it('of split windows with same buffer', function() - local win = meths.nvim_get_current_win() - local buf = meths.nvim_get_current_buf() + local win = api.nvim_get_current_win() + local buf = api.nvim_get_current_buf() command('split') - meths.nvim_win_set_cursor(win, { 8, 0 }) - meths.nvim_win_set_cursor(0, { 1, 1 }) + api.nvim_win_set_cursor(win, { 8, 0 }) + api.nvim_win_set_cursor(0, { 1, 1 }) screen:expect { grid = [[ @@ -1850,7 +1844,7 @@ describe('api/buf', function() | ]], } - meths.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) + api.nvim_buf_set_text(buf, 0, 3, 1, 0, { 'X' }) screen:expect { grid = [[ @@ -1872,8 +1866,8 @@ describe('api/buf', function() end) end) - describe_lua_and_rpc('nvim_buf_get_text', function(api) - local get_text = api.meths.nvim_buf_get_text + describe_lua_and_rpc('nvim_buf_get_text', function(lua_or_rpc) + local get_text = lua_or_rpc.nvim_buf_get_text before_each(function() insert([[ hello foo! @@ -1898,7 +1892,7 @@ describe('api/buf', function() eq('Index out of bounds', pcall_err(get_text, 0, 0, 0, 3, 0, {})) eq('Index out of bounds', pcall_err(get_text, 0, 0, 0, -4, 0, {})) -- no ml_get errors should happen #19017 - eq('', meths.nvim_get_vvar('errmsg')) + eq('', api.nvim_get_vvar('errmsg')) end) it('errors when start is greater than end', function() @@ -1908,10 +1902,10 @@ describe('api/buf', function() end) describe('nvim_buf_get_offset', function() - local get_offset = meths.nvim_buf_get_offset + local get_offset = api.nvim_buf_get_offset it('works', function() - meths.nvim_buf_set_lines(0, 0, -1, true, { 'Some\r', 'exa\000mple', '', 'buf\rfer', 'text' }) - eq(5, meths.nvim_buf_line_count(0)) + api.nvim_buf_set_lines(0, 0, -1, true, { 'Some\r', 'exa\000mple', '', 'buf\rfer', 'text' }) + eq(5, api.nvim_buf_line_count(0)) eq(0, get_offset(0, 0)) eq(6, get_offset(0, 1)) eq(15, get_offset(0, 2)) @@ -1921,33 +1915,33 @@ describe('api/buf', function() eq('Index out of bounds', pcall_err(get_offset, 0, 6)) eq('Index out of bounds', pcall_err(get_offset, 0, -1)) - meths.nvim_set_option_value('eol', false, {}) - meths.nvim_set_option_value('fixeol', false, {}) + api.nvim_set_option_value('eol', false, {}) + api.nvim_set_option_value('fixeol', false, {}) eq(28, get_offset(0, 5)) -- fileformat is ignored - meths.nvim_set_option_value('fileformat', 'dos', {}) + api.nvim_set_option_value('fileformat', 'dos', {}) eq(0, get_offset(0, 0)) eq(6, get_offset(0, 1)) eq(15, get_offset(0, 2)) eq(16, get_offset(0, 3)) eq(24, get_offset(0, 4)) eq(28, get_offset(0, 5)) - meths.nvim_set_option_value('eol', true, {}) + api.nvim_set_option_value('eol', true, {}) eq(29, get_offset(0, 5)) command('set hidden') command('enew') - eq(6, meths.nvim_buf_get_offset(1, 1)) + eq(6, api.nvim_buf_get_offset(1, 1)) command('bunload! 1') - eq(-1, meths.nvim_buf_get_offset(1, 1)) - eq(-1, meths.nvim_buf_get_offset(1, 0)) + eq(-1, api.nvim_buf_get_offset(1, 1)) + eq(-1, api.nvim_buf_get_offset(1, 0)) end) it('works in empty buffer', function() eq(0, get_offset(0, 0)) eq(1, get_offset(0, 1)) - eq(-1, funcs.line2byte('$')) + eq(-1, fn.line2byte('$')) end) it('works in buffer with one line inserted', function() @@ -1959,28 +1953,28 @@ describe('api/buf', function() describe('nvim_buf_get_var, nvim_buf_set_var, nvim_buf_del_var', function() it('works', function() - meths.nvim_buf_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_buf_get_var(0, 'lua')) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_eval('b:lua')) - eq(1, funcs.exists('b:lua')) - meths.nvim_buf_del_var(0, 'lua') - eq(0, funcs.exists('b:lua')) - eq('Key not found: lua', pcall_err(meths.nvim_buf_del_var, 0, 'lua')) - meths.nvim_buf_set_var(0, 'lua', 1) + api.nvim_buf_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_buf_get_var(0, 'lua')) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_eval('b:lua')) + eq(1, fn.exists('b:lua')) + api.nvim_buf_del_var(0, 'lua') + eq(0, fn.exists('b:lua')) + eq('Key not found: lua', pcall_err(api.nvim_buf_del_var, 0, 'lua')) + api.nvim_buf_set_var(0, 'lua', 1) command('lockvar b:lua') - eq('Key is locked: lua', pcall_err(meths.nvim_buf_del_var, 0, 'lua')) - eq('Key is locked: lua', pcall_err(meths.nvim_buf_set_var, 0, 'lua', 1)) - eq('Key is read-only: changedtick', pcall_err(meths.nvim_buf_del_var, 0, 'changedtick')) - eq('Key is read-only: changedtick', pcall_err(meths.nvim_buf_set_var, 0, 'changedtick', 1)) + eq('Key is locked: lua', pcall_err(api.nvim_buf_del_var, 0, 'lua')) + eq('Key is locked: lua', pcall_err(api.nvim_buf_set_var, 0, 'lua', 1)) + eq('Key is read-only: changedtick', pcall_err(api.nvim_buf_del_var, 0, 'changedtick')) + eq('Key is read-only: changedtick', pcall_err(api.nvim_buf_set_var, 0, 'changedtick', 1)) end) end) describe('nvim_buf_get_changedtick', function() it('works', function() - eq(2, meths.nvim_buf_get_changedtick(0)) - meths.nvim_buf_set_lines(0, 0, 1, false, { 'abc\0', '\0def', 'ghi' }) - eq(3, meths.nvim_buf_get_changedtick(0)) - eq(3, meths.nvim_buf_get_var(0, 'changedtick')) + eq(2, api.nvim_buf_get_changedtick(0)) + api.nvim_buf_set_lines(0, 0, 1, false, { 'abc\0', '\0def', 'ghi' }) + eq(3, api.nvim_buf_get_changedtick(0)) + eq(3, api.nvim_buf_get_var(0, 'changedtick')) end) it('buffer_set_var returns the old value', function() @@ -2001,33 +1995,33 @@ describe('api/buf', function() describe('nvim_get_option_value, nvim_set_option_value', function() it('works', function() - eq(8, meths.nvim_get_option_value('shiftwidth', {})) - meths.nvim_set_option_value('shiftwidth', 4, {}) - eq(4, meths.nvim_get_option_value('shiftwidth', {})) + eq(8, api.nvim_get_option_value('shiftwidth', {})) + api.nvim_set_option_value('shiftwidth', 4, {}) + eq(4, api.nvim_get_option_value('shiftwidth', {})) -- global-local option - meths.nvim_set_option_value('define', 'test', { buf = 0 }) - eq('test', meths.nvim_get_option_value('define', { buf = 0 })) + api.nvim_set_option_value('define', 'test', { buf = 0 }) + eq('test', api.nvim_get_option_value('define', { buf = 0 })) -- Doesn't change the global value - eq('', meths.nvim_get_option_value('define', { scope = 'global' })) + eq('', api.nvim_get_option_value('define', { scope = 'global' })) end) it('returns values for unset local options', function() -- 'undolevels' is only set to its "unset" value when a new buffer is -- created command('enew') - eq(-123456, meths.nvim_get_option_value('undolevels', { buf = 0 })) + eq(-123456, api.nvim_get_option_value('undolevels', { buf = 0 })) end) end) describe('nvim_buf_get_name, nvim_buf_set_name', function() it('works', function() command('new') - eq('', meths.nvim_buf_get_name(0)) - local new_name = meths.nvim_eval('resolve(tempname())') - meths.nvim_buf_set_name(0, new_name) - eq(new_name, meths.nvim_buf_get_name(0)) + eq('', api.nvim_buf_get_name(0)) + local new_name = api.nvim_eval('resolve(tempname())') + api.nvim_buf_set_name(0, new_name) + eq(new_name, api.nvim_buf_get_name(0)) command('w!') - eq(1, funcs.filereadable(new_name)) + eq(1, fn.filereadable(new_name)) os.remove(new_name) end) end) @@ -2035,121 +2029,121 @@ describe('api/buf', function() describe('nvim_buf_is_loaded', function() it('works', function() -- record our buffer number for when we unload it - local bufnr = meths.nvim_buf_get_number(0) + local bufnr = api.nvim_buf_get_number(0) -- api should report that the buffer is loaded - ok(meths.nvim_buf_is_loaded(bufnr)) + ok(api.nvim_buf_is_loaded(bufnr)) -- hide the current buffer by switching to a new empty buffer -- Careful! we need to modify the buffer first or vim will just reuse it - meths.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1' }) + api.nvim_buf_set_lines(bufnr, 0, -1, true, { 'line1' }) command('hide enew') -- confirm the buffer is hidden, but still loaded - local infolist = meths.nvim_eval('getbufinfo(' .. bufnr .. ')') + local infolist = api.nvim_eval('getbufinfo(' .. bufnr .. ')') eq(1, #infolist) eq(1, infolist[1].hidden) eq(1, infolist[1].loaded) -- now force unload the buffer command('bunload! ' .. bufnr) -- confirm the buffer is unloaded - infolist = meths.nvim_eval('getbufinfo(' .. bufnr .. ')') + infolist = api.nvim_eval('getbufinfo(' .. bufnr .. ')') eq(0, infolist[1].loaded) -- nvim_buf_is_loaded() should also report the buffer as unloaded - eq(false, meths.nvim_buf_is_loaded(bufnr)) + eq(false, api.nvim_buf_is_loaded(bufnr)) end) end) describe('nvim_buf_is_valid', function() it('works', function() command('new') - local b = meths.nvim_get_current_buf() - ok(meths.nvim_buf_is_valid(b)) + local b = api.nvim_get_current_buf() + ok(api.nvim_buf_is_valid(b)) command('bw!') - ok(not meths.nvim_buf_is_valid(b)) + ok(not api.nvim_buf_is_valid(b)) end) end) describe('nvim_buf_delete', function() it('allows for just deleting', function() command('new') - local b = meths.nvim_get_current_buf() - ok(meths.nvim_buf_is_valid(b)) - meths.nvim_buf_delete(b, {}) - ok(not meths.nvim_buf_is_loaded(b)) - ok(not meths.nvim_buf_is_valid(b)) + local b = api.nvim_get_current_buf() + ok(api.nvim_buf_is_valid(b)) + api.nvim_buf_delete(b, {}) + ok(not api.nvim_buf_is_loaded(b)) + ok(not api.nvim_buf_is_valid(b)) end) it('allows for just unloading', function() command('new') - local b = meths.nvim_get_current_buf() - ok(meths.nvim_buf_is_valid(b)) - meths.nvim_buf_delete(b, { unload = true }) - ok(not meths.nvim_buf_is_loaded(b)) - ok(meths.nvim_buf_is_valid(b)) + local b = api.nvim_get_current_buf() + ok(api.nvim_buf_is_valid(b)) + api.nvim_buf_delete(b, { unload = true }) + ok(not api.nvim_buf_is_loaded(b)) + ok(api.nvim_buf_is_valid(b)) end) end) describe('nvim_buf_get_mark', function() it('works', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_win_set_cursor(0, { 3, 4 }) + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_win_set_cursor(0, { 3, 4 }) command('mark v') - eq({ 3, 0 }, meths.nvim_buf_get_mark(0, 'v')) + eq({ 3, 0 }, api.nvim_buf_get_mark(0, 'v')) end) end) describe('nvim_buf_set_mark', function() it('works with buffer local marks', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - eq(true, meths.nvim_buf_set_mark(0, 'z', 1, 1, {})) - eq({ 1, 1 }, meths.nvim_buf_get_mark(0, 'z')) - eq({ 0, 1, 2, 0 }, funcs.getpos("'z")) + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + eq(true, api.nvim_buf_set_mark(0, 'z', 1, 1, {})) + eq({ 1, 1 }, api.nvim_buf_get_mark(0, 'z')) + eq({ 0, 1, 2, 0 }, fn.getpos("'z")) end) it('works with file/uppercase marks', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - eq(true, meths.nvim_buf_set_mark(0, 'Z', 3, 2, {})) - eq({ 3, 2 }, meths.nvim_buf_get_mark(0, 'Z')) - eq({ meths.nvim_get_current_buf().id, 3, 3, 0 }, funcs.getpos("'Z")) + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + eq(true, api.nvim_buf_set_mark(0, 'Z', 3, 2, {})) + eq({ 3, 2 }, api.nvim_buf_get_mark(0, 'Z')) + eq({ api.nvim_get_current_buf().id, 3, 3, 0 }, fn.getpos("'Z")) end) it('fails when invalid marks names are used', function() - eq(false, pcall(meths.nvim_buf_set_mark, 0, '!', 1, 0, {})) - eq(false, pcall(meths.nvim_buf_set_mark, 0, 'fail', 1, 0, {})) + eq(false, pcall(api.nvim_buf_set_mark, 0, '!', 1, 0, {})) + eq(false, pcall(api.nvim_buf_set_mark, 0, 'fail', 1, 0, {})) end) it('fails when invalid buffer number is used', function() - eq(false, pcall(meths.nvim_buf_set_mark, 99, 'a', 1, 1, {})) + eq(false, pcall(api.nvim_buf_set_mark, 99, 'a', 1, 1, {})) end) end) describe('nvim_buf_del_mark', function() it('works with buffer local marks', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_buf_set_mark(0, 'z', 3, 1, {}) - eq(true, meths.nvim_buf_del_mark(0, 'z')) - eq({ 0, 0 }, meths.nvim_buf_get_mark(0, 'z')) + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_buf_set_mark(0, 'z', 3, 1, {}) + eq(true, api.nvim_buf_del_mark(0, 'z')) + eq({ 0, 0 }, api.nvim_buf_get_mark(0, 'z')) end) it('works with file/uppercase marks', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_buf_set_mark(0, 'Z', 3, 3, {}) - eq(true, meths.nvim_buf_del_mark(0, 'Z')) - eq({ 0, 0 }, meths.nvim_buf_get_mark(0, 'Z')) + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_buf_set_mark(0, 'Z', 3, 3, {}) + eq(true, api.nvim_buf_del_mark(0, 'Z')) + eq({ 0, 0 }, api.nvim_buf_get_mark(0, 'Z')) end) it('returns false in marks not set in this buffer', function() - local abuf = meths.nvim_create_buf(false, true) - meths.nvim_buf_set_lines(abuf, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_buf_set_mark(abuf, 'A', 2, 2, {}) - eq(false, meths.nvim_buf_del_mark(0, 'A')) - eq({ 2, 2 }, meths.nvim_buf_get_mark(abuf, 'A')) + local abuf = api.nvim_create_buf(false, true) + api.nvim_buf_set_lines(abuf, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_buf_set_mark(abuf, 'A', 2, 2, {}) + eq(false, api.nvim_buf_del_mark(0, 'A')) + eq({ 2, 2 }, api.nvim_buf_get_mark(abuf, 'A')) end) it('returns false if mark was not deleted', function() - meths.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_buf_set_mark(0, 'z', 3, 1, {}) - eq(true, meths.nvim_buf_del_mark(0, 'z')) - eq(false, meths.nvim_buf_del_mark(0, 'z')) -- Mark was already deleted + api.nvim_buf_set_lines(0, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_buf_set_mark(0, 'z', 3, 1, {}) + eq(true, api.nvim_buf_del_mark(0, 'z')) + eq(false, api.nvim_buf_del_mark(0, 'z')) -- Mark was already deleted end) it('fails when invalid marks names are used', function() - eq(false, pcall(meths.nvim_buf_del_mark, 0, '!')) - eq(false, pcall(meths.nvim_buf_del_mark, 0, 'fail')) + eq(false, pcall(api.nvim_buf_del_mark, 0, '!')) + eq(false, pcall(api.nvim_buf_del_mark, 0, 'fail')) end) it('fails when invalid buffer number is used', function() - eq(false, pcall(meths.nvim_buf_del_mark, 99, 'a')) + eq(false, pcall(api.nvim_buf_del_mark, 99, 'a')) end) end) end) diff --git a/test/functional/api/buffer_updates_spec.lua b/test/functional/api/buffer_updates_spec.lua index 254e7d4d42..050d4adfec 100644 --- a/test/functional/api/buffer_updates_spec.lua +++ b/test/functional/api/buffer_updates_spec.lua @@ -1,8 +1,8 @@ local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear local eq, ok = helpers.eq, helpers.ok -local funcs = helpers.funcs -local meths = helpers.meths +local fn = helpers.fn +local api = helpers.api local command, eval, next_msg = helpers.command, helpers.eval, helpers.next_msg local nvim_prog = helpers.nvim_prog local pcall_err = helpers.pcall_err @@ -24,7 +24,7 @@ local function expectn(name, args) end local function sendkeys(keys) - meths.nvim_input(keys) + api.nvim_input(keys) -- give nvim some time to process msgpack requests before possibly sending -- more key presses - otherwise they all pile up in the queue and get -- processed at once @@ -37,7 +37,7 @@ local function open(activate, lines) local filename = helpers.tmpname() write_file(filename, table.concat(lines, '\n') .. '\n', true) command('edit ' .. filename) - local b = meths.nvim_get_current_buf() + local b = api.nvim_get_current_buf() -- what is the value of b:changedtick? local tick = eval('b:changedtick') @@ -45,7 +45,7 @@ local function open(activate, lines) -- arrive as expected if activate then local firstline = 0 - ok(meths.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) expectn('nvim_buf_lines_event', { b, tick, firstline, -1, lines, false }) end @@ -62,12 +62,12 @@ local function editoriginal(activate, lines) end local function reopen(buf, expectedlines) - ok(meths.nvim_buf_detach(buf)) + ok(api.nvim_buf_detach(buf)) expectn('nvim_buf_detach_event', { buf }) -- for some reason the :edit! increments tick by 2 command('edit!') local tick = eval('b:changedtick') - ok(meths.nvim_buf_attach(buf, true, {})) + ok(api.nvim_buf_attach(buf, true, {})) local firstline = 0 expectn('nvim_buf_lines_event', { buf, tick, firstline, -1, expectedlines, false }) command('normal! gg') @@ -197,21 +197,21 @@ describe('API: buffer events:', function() -- add a line at the start of an empty file command('enew') tick = eval('b:changedtick') - local b2 = meths.nvim_get_current_buf() - ok(meths.nvim_buf_attach(b2, true, {})) + local b2 = api.nvim_get_current_buf() + ok(api.nvim_buf_attach(b2, true, {})) expectn('nvim_buf_lines_event', { b2, tick, 0, -1, { '' }, false }) eval('append(0, ["new line 1"])') tick = tick + 1 expectn('nvim_buf_lines_event', { b2, tick, 0, 0, { 'new line 1' }, false }) -- turn off buffer events manually - meths.nvim_buf_detach(b2) + api.nvim_buf_detach(b2) expectn('nvim_buf_detach_event', { b2 }) -- add multiple lines to a blank file command('enew!') - local b3 = meths.nvim_get_current_buf() - ok(meths.nvim_buf_attach(b3, true, {})) + local b3 = api.nvim_get_current_buf() + ok(api.nvim_buf_attach(b3, true, {})) tick = eval('b:changedtick') expectn('nvim_buf_lines_event', { b3, tick, 0, -1, { '' }, false }) eval('append(0, ["new line 1", "new line 2", "new line 3"])') @@ -222,7 +222,7 @@ describe('API: buffer events:', function() ) -- use the API itself to add a line to the start of the buffer - meths.nvim_buf_set_lines(b3, 0, 0, true, { 'New First Line' }) + api.nvim_buf_set_lines(b3, 0, 0, true, { 'New First Line' }) tick = tick + 1 expectn('nvim_buf_lines_event', { b3, tick, 0, 0, { 'New First Line' }, false }) end) @@ -306,8 +306,8 @@ describe('API: buffer events:', function() command('bdelete!') tick = 2 expectn('nvim_buf_detach_event', { b }) - local bnew = meths.nvim_get_current_buf() - ok(meths.nvim_buf_attach(bnew, true, {})) + local bnew = api.nvim_get_current_buf() + ok(api.nvim_buf_attach(bnew, true, {})) expectn('nvim_buf_lines_event', { bnew, tick, 0, -1, { '' }, false }) sendkeys('i') sendkeys('h') @@ -472,25 +472,25 @@ describe('API: buffer events:', function() end) it('does not get confused if enabled/disabled many times', function() - local channel = meths.nvim_get_api_info()[1] + local channel = api.nvim_get_api_info()[1] local b, tick = editoriginal(false) -- Enable buffer events many times. - ok(meths.nvim_buf_attach(b, true, {})) - ok(meths.nvim_buf_attach(b, true, {})) - ok(meths.nvim_buf_attach(b, true, {})) - ok(meths.nvim_buf_attach(b, true, {})) - ok(meths.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) + ok(api.nvim_buf_attach(b, true, {})) expectn('nvim_buf_lines_event', { b, tick, 0, -1, origlines, false }) eval('rpcnotify(' .. channel .. ', "Hello There")') expectn('Hello There', {}) -- Disable buffer events many times. - ok(meths.nvim_buf_detach(b)) - ok(meths.nvim_buf_detach(b)) - ok(meths.nvim_buf_detach(b)) - ok(meths.nvim_buf_detach(b)) - ok(meths.nvim_buf_detach(b)) + ok(api.nvim_buf_detach(b)) + ok(api.nvim_buf_detach(b)) + ok(api.nvim_buf_detach(b)) + ok(api.nvim_buf_detach(b)) + ok(api.nvim_buf_detach(b)) expectn('nvim_buf_detach_event', { b }) eval('rpcnotify(' .. channel .. ', "Hello Again")') expectn('Hello Again', {}) @@ -573,7 +573,7 @@ describe('API: buffer events:', function() it('works with :diffput and :diffget', function() local b1, tick1 = editoriginal(true, { 'AAA', 'BBB' }) - local channel = meths.nvim_get_api_info()[1] + local channel = api.nvim_get_api_info()[1] command('diffthis') command('rightbelow vsplit') local b2, tick2 = open(true, { 'BBB', 'CCC' }) @@ -690,7 +690,7 @@ describe('API: buffer events:', function() it('detaches if the buffer is closed', function() local b, tick = editoriginal(true, { 'AAA' }) - local channel = meths.nvim_get_api_info()[1] + local channel = api.nvim_get_api_info()[1] -- Test that buffer events are working. command('normal! x') @@ -729,7 +729,7 @@ describe('API: buffer events:', function() it(':enew! does not detach hidden buffer', function() local b, tick = editoriginal(true, { 'AAA', 'BBB' }) - local channel = meths.nvim_get_api_info()[1] + local channel = api.nvim_get_api_info()[1] command('set undoreload=1 hidden') command('normal! x') @@ -743,7 +743,7 @@ describe('API: buffer events:', function() it('stays attached if the buffer is hidden', function() local b, tick = editoriginal(true, { 'AAA' }) - local channel = meths.nvim_get_api_info()[1] + local channel = api.nvim_get_api_info()[1] -- Test that buffer events are working. command('normal! x') @@ -790,14 +790,14 @@ describe('API: buffer events:', function() it('does not send the buffer content if not requested', function() clear() local b, tick = editoriginal(false) - ok(meths.nvim_buf_attach(b, false, {})) + ok(api.nvim_buf_attach(b, false, {})) expectn('nvim_buf_changedtick_event', { b, tick }) end) it('returns a proper error on nonempty options dict', function() clear() local b = editoriginal(false) - eq("Invalid key: 'builtin'", pcall_err(meths.nvim_buf_attach, b, false, { builtin = 'asfd' })) + eq("Invalid key: 'builtin'", pcall_err(api.nvim_buf_attach, b, false, { builtin = 'asfd' })) end) it('nvim_buf_attach returns response after delay #8634', function() @@ -869,12 +869,12 @@ describe('API: buffer events:', function() it('when :terminal lines change', function() local buffer_lines = {} local expected_lines = {} - funcs.termopen({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '-n', '-c', 'set shortmess+=A' }, { + fn.termopen({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '-n', '-c', 'set shortmess+=A' }, { env = { VIMRUNTIME = os.getenv('VIMRUNTIME') }, }) - local b = meths.nvim_get_current_buf() - ok(meths.nvim_buf_attach(b, true, {})) + local b = api.nvim_get_current_buf() + ok(api.nvim_buf_attach(b, true, {})) for _ = 1, 22 do table.insert(expected_lines, '~') diff --git a/test/functional/api/command_spec.lua b/test/functional/api/command_spec.lua index dc6a68da03..f73b9c8b13 100644 --- a/test/functional/api/command_spec.lua +++ b/test/functional/api/command_spec.lua @@ -4,14 +4,14 @@ local NIL = vim.NIL local clear = helpers.clear local command = helpers.command local eq = helpers.eq -local meths = helpers.meths +local api = helpers.api local matches = helpers.matches local source = helpers.source local pcall_err = helpers.pcall_err local exec_lua = helpers.exec_lua local assert_alive = helpers.assert_alive local feed = helpers.feed -local funcs = helpers.funcs +local fn = helpers.fn describe('nvim_get_commands', function() local cmd_dict = { @@ -49,39 +49,39 @@ describe('nvim_get_commands', function() before_each(clear) it('gets empty list if no commands were defined', function() - eq({}, meths.nvim_get_commands({ builtin = false })) + eq({}, api.nvim_get_commands({ builtin = false })) end) it('validation', function() - eq('builtin=true not implemented', pcall_err(meths.nvim_get_commands, { builtin = true })) - eq("Invalid key: 'foo'", pcall_err(meths.nvim_get_commands, { foo = 'blah' })) + eq('builtin=true not implemented', pcall_err(api.nvim_get_commands, { builtin = true })) + eq("Invalid key: 'foo'", pcall_err(api.nvim_get_commands, { foo = 'blah' })) end) it('gets global user-defined commands', function() -- Define a command. command('command -nargs=1 Hello echo "Hello World"') - eq({ Hello = cmd_dict }, meths.nvim_get_commands({ builtin = false })) + eq({ Hello = cmd_dict }, api.nvim_get_commands({ builtin = false })) -- Define another command. command('command -nargs=? Pwd pwd') - eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, meths.nvim_get_commands({ builtin = false })) + eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, api.nvim_get_commands({ builtin = false })) -- Delete a command. command('delcommand Pwd') - eq({ Hello = cmd_dict }, meths.nvim_get_commands({ builtin = false })) + eq({ Hello = cmd_dict }, api.nvim_get_commands({ builtin = false })) end) it('gets buffer-local user-defined commands', function() -- Define a buffer-local command. command('command -buffer -nargs=1 Hello echo "Hello World"') - eq({ Hello = cmd_dict }, meths.nvim_buf_get_commands(0, { builtin = false })) + eq({ Hello = cmd_dict }, api.nvim_buf_get_commands(0, { builtin = false })) -- Define another buffer-local command. command('command -buffer -nargs=? Pwd pwd') - eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, meths.nvim_buf_get_commands(0, { builtin = false })) + eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, api.nvim_buf_get_commands(0, { builtin = false })) -- Delete a command. command('delcommand Pwd') - eq({ Hello = cmd_dict }, meths.nvim_buf_get_commands(0, { builtin = false })) + eq({ Hello = cmd_dict }, api.nvim_buf_get_commands(0, { builtin = false })) -- {builtin=true} always returns empty for buffer-local case. - eq({}, meths.nvim_buf_get_commands(0, { builtin = true })) + eq({}, api.nvim_buf_get_commands(0, { builtin = true })) end) it('gets various command attributes', function() @@ -169,9 +169,9 @@ describe('nvim_get_commands', function() let s:foo = 1 command -complete=custom,ListUsers -nargs=+ Finger !finger <args> ]]) - eq({ Finger = cmd1 }, meths.nvim_get_commands({ builtin = false })) + eq({ Finger = cmd1 }, api.nvim_get_commands({ builtin = false })) command('command -nargs=1 -complete=dir -addr=arguments -count=10 TestCmd pwd <args>') - eq({ Finger = cmd1, TestCmd = cmd0 }, meths.nvim_get_commands({ builtin = false })) + eq({ Finger = cmd1, TestCmd = cmd0 }, api.nvim_get_commands({ builtin = false })) source([[ function! s:foo() abort @@ -191,7 +191,7 @@ describe('nvim_get_commands', function() -- TODO(justinmk): Order is stable but undefined. Sort before return? eq( { Cmd2 = cmd2, Cmd3 = cmd3, Cmd4 = cmd4, Finger = cmd1, TestCmd = cmd0 }, - meths.nvim_get_commands({ builtin = false }) + api.nvim_get_commands({ builtin = false }) ) end) end) @@ -200,9 +200,9 @@ describe('nvim_create_user_command', function() before_each(clear) it('works with strings', function() - meths.nvim_create_user_command('SomeCommand', 'let g:command_fired = <args>', { nargs = 1 }) + api.nvim_create_user_command('SomeCommand', 'let g:command_fired = <args>', { nargs = 1 }) command('SomeCommand 42') - eq(42, meths.nvim_eval('g:command_fired')) + eq(42, api.nvim_eval('g:command_fired')) end) it('works with Lua functions', function() @@ -644,10 +644,10 @@ describe('nvim_create_user_command', function() end) it('can define buffer-local commands', function() - local bufnr = meths.nvim_create_buf(false, false) - meths.nvim_buf_create_user_command(bufnr, 'Hello', '', {}) + local bufnr = api.nvim_create_buf(false, false) + api.nvim_buf_create_user_command(bufnr, 'Hello', '', {}) matches('Not an editor command: Hello', pcall_err(command, 'Hello')) - meths.nvim_set_current_buf(bufnr) + api.nvim_set_current_buf(bufnr) command('Hello') assert_alive() end) @@ -670,9 +670,9 @@ describe('nvim_create_user_command', function() ]] feed(':Test a<Tab>') - eq('Test aaa', funcs.getcmdline()) + eq('Test aaa', fn.getcmdline()) feed('<C-U>Test b<Tab>') - eq('Test bbb', funcs.getcmdline()) + eq('Test bbb', fn.getcmdline()) end) it('does not allow invalid command names', function() @@ -729,29 +729,29 @@ describe('nvim_create_user_command', function() vim.api.nvim_cmd({ cmd = 'echo', args = { '&verbose' }, mods = opts.smods }, {}) end, {}) ]] - eq('3', meths.nvim_cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true })) + eq('3', api.nvim_cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true })) - eq(1, #meths.nvim_list_tabpages()) + eq(1, #api.nvim_list_tabpages()) exec_lua [[ vim.api.nvim_create_user_command('MySplit', function(opts) vim.api.nvim_cmd({ cmd = 'split', mods = opts.smods }, {}) end, {}) ]] - meths.nvim_cmd({ cmd = 'MySplit' }, {}) - eq(1, #meths.nvim_list_tabpages()) - eq(2, #meths.nvim_list_wins()) - meths.nvim_cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {}) - eq(2, #meths.nvim_list_tabpages()) - eq(2, funcs.tabpagenr()) - meths.nvim_cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {}) - eq(3, #meths.nvim_list_tabpages()) - eq(2, funcs.tabpagenr()) - meths.nvim_cmd({ cmd = 'MySplit', mods = { tab = 3 } }, {}) - eq(4, #meths.nvim_list_tabpages()) - eq(4, funcs.tabpagenr()) - meths.nvim_cmd({ cmd = 'MySplit', mods = { tab = 0 } }, {}) - eq(5, #meths.nvim_list_tabpages()) - eq(1, funcs.tabpagenr()) + api.nvim_cmd({ cmd = 'MySplit' }, {}) + eq(1, #api.nvim_list_tabpages()) + eq(2, #api.nvim_list_wins()) + api.nvim_cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {}) + eq(2, #api.nvim_list_tabpages()) + eq(2, fn.tabpagenr()) + api.nvim_cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {}) + eq(3, #api.nvim_list_tabpages()) + eq(2, fn.tabpagenr()) + api.nvim_cmd({ cmd = 'MySplit', mods = { tab = 3 } }, {}) + eq(4, #api.nvim_list_tabpages()) + eq(4, fn.tabpagenr()) + api.nvim_cmd({ cmd = 'MySplit', mods = { tab = 0 } }, {}) + eq(5, #api.nvim_list_tabpages()) + eq(1, fn.tabpagenr()) end) end) @@ -759,16 +759,16 @@ describe('nvim_del_user_command', function() before_each(clear) it('can delete global commands', function() - meths.nvim_create_user_command('Hello', 'echo "Hi"', {}) + api.nvim_create_user_command('Hello', 'echo "Hi"', {}) command('Hello') - meths.nvim_del_user_command('Hello') + api.nvim_del_user_command('Hello') matches('Not an editor command: Hello', pcall_err(command, 'Hello')) end) it('can delete buffer-local commands', function() - meths.nvim_buf_create_user_command(0, 'Hello', 'echo "Hi"', {}) + api.nvim_buf_create_user_command(0, 'Hello', 'echo "Hi"', {}) command('Hello') - meths.nvim_buf_del_user_command(0, 'Hello') + api.nvim_buf_del_user_command(0, 'Hello') matches('Not an editor command: Hello', pcall_err(command, 'Hello')) end) end) diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua index 668ce43588..ed7c52971d 100644 --- a/test/functional/api/extmark_spec.lua +++ b/test/functional/api/extmark_spec.lua @@ -10,7 +10,7 @@ local feed = helpers.feed local clear = helpers.clear local command = helpers.command local exec = helpers.exec -local meths = helpers.meths +local api = helpers.api local assert_alive = helpers.assert_alive local function expect(contents) @@ -24,21 +24,21 @@ local function set_extmark(ns_id, id, line, col, opts) if id ~= nil and id ~= 0 then opts.id = id end - return meths.nvim_buf_set_extmark(0, ns_id, line, col, opts) + return api.nvim_buf_set_extmark(0, ns_id, line, col, opts) end local function get_extmarks(ns_id, start, end_, opts) if opts == nil then opts = {} end - return meths.nvim_buf_get_extmarks(0, ns_id, start, end_, opts) + return api.nvim_buf_get_extmarks(0, ns_id, start, end_, opts) end local function get_extmark_by_id(ns_id, id, opts) if opts == nil then opts = {} end - return meths.nvim_buf_get_extmark_by_id(0, ns_id, id, opts) + return api.nvim_buf_get_extmark_by_id(0, ns_id, id, opts) end local function check_undo_redo(ns, mark, sr, sc, er, ec) --s = start, e = end @@ -196,11 +196,11 @@ describe('API/extmarks', function() eq({ row, col }, rv) -- remove the test marks - eq(true, meths.nvim_buf_del_extmark(0, ns, marks[1])) - eq(false, meths.nvim_buf_del_extmark(0, ns, marks[1])) - eq(true, meths.nvim_buf_del_extmark(0, ns, marks[2])) - eq(false, meths.nvim_buf_del_extmark(0, ns, marks[3])) - eq(false, meths.nvim_buf_del_extmark(0, ns, 1000)) + eq(true, api.nvim_buf_del_extmark(0, ns, marks[1])) + eq(false, api.nvim_buf_del_extmark(0, ns, marks[1])) + eq(true, api.nvim_buf_del_extmark(0, ns, marks[2])) + eq(false, api.nvim_buf_del_extmark(0, ns, marks[3])) + eq(false, api.nvim_buf_del_extmark(0, ns, 1000)) end) it('can clear a specific namespace range', function() @@ -208,7 +208,7 @@ describe('API/extmarks', function() set_extmark(ns2, 1, 0, 1) -- force a new undo buffer feed('o<esc>') - meths.nvim_buf_clear_namespace(0, ns2, 0, -1) + api.nvim_buf_clear_namespace(0, ns2, 0, -1) eq({ { 1, 0, 1 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 })) eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 })) feed('u') @@ -224,7 +224,7 @@ describe('API/extmarks', function() set_extmark(ns2, 1, 0, 1) -- force a new undo buffer feed('o<esc>') - meths.nvim_buf_clear_namespace(0, -1, 0, -1) + api.nvim_buf_clear_namespace(0, -1, 0, -1) eq({}, get_extmarks(ns, { 0, 0 }, { -1, -1 })) eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 })) feed('u') @@ -242,14 +242,14 @@ describe('API/extmarks', function() eq({ { 1, 0, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 })) feed('dd') eq({ { 1, 1, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 })) - meths.nvim_buf_clear_namespace(0, ns, 0, -1) + api.nvim_buf_clear_namespace(0, ns, 0, -1) eq({}, get_extmarks(ns, { 0, 0 }, { -1, -1 })) set_extmark(ns, 1, 0, 0, { right_gravity = false }) set_extmark(ns, 2, 1, 0, { right_gravity = false }) eq({ { 1, 0, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 })) feed('u') eq({ { 1, 0, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 })) - meths.nvim_buf_clear_namespace(0, ns, 0, -1) + api.nvim_buf_clear_namespace(0, ns, 0, -1) end) it('querying for information and ranges', function() @@ -931,7 +931,7 @@ describe('API/extmarks', function() -- Test unset feed('o<esc>') - meths.nvim_buf_del_extmark(0, ns, marks[3]) + api.nvim_buf_del_extmark(0, ns, marks[3]) feed('u') rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }) -- undo does NOT restore deleted marks @@ -987,10 +987,10 @@ describe('API/extmarks', function() rv = get_extmarks(ns2, positions[2], positions[1]) eq(2, #rv) - meths.nvim_buf_del_extmark(0, ns, marks[1]) + api.nvim_buf_del_extmark(0, ns, marks[1]) rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }) eq(2, #rv) - meths.nvim_buf_del_extmark(0, ns2, marks[1]) + api.nvim_buf_del_extmark(0, ns2, marks[1]) rv = get_extmarks(ns2, { 0, 0 }, { -1, -1 }) eq(2, #rv) end) @@ -1427,7 +1427,7 @@ describe('API/extmarks', function() "Invalid 'ns_id': 3", pcall_err(set_extmark, ns_invalid, marks[1], positions[1][1], positions[1][2]) ) - eq("Invalid 'ns_id': 3", pcall_err(meths.nvim_buf_del_extmark, 0, ns_invalid, marks[1])) + eq("Invalid 'ns_id': 3", pcall_err(api.nvim_buf_del_extmark, 0, ns_invalid, marks[1])) eq("Invalid 'ns_id': 3", pcall_err(get_extmarks, ns_invalid, positions[1], positions[2])) eq("Invalid 'ns_id': 3", pcall_err(get_extmark_by_id, ns_invalid, marks[1])) end) @@ -1470,7 +1470,7 @@ describe('API/extmarks', function() it('in read-only buffer', function() command('view! runtime/doc/help.txt') - eq(true, meths.nvim_get_option_value('ro', {})) + eq(true, api.nvim_get_option_value('ro', {})) local id = set_extmark(ns, 0, 0, 2) eq({ { id, 0, 2 } }, get_extmarks(ns, 0, -1)) end) @@ -1478,8 +1478,8 @@ describe('API/extmarks', function() it('can set a mark to other buffer', function() local buf = request('nvim_create_buf', 0, 1) request('nvim_buf_set_lines', buf, 0, -1, 1, { '', '' }) - local id = meths.nvim_buf_set_extmark(buf, ns, 1, 0, {}) - eq({ { id, 1, 0 } }, meths.nvim_buf_get_extmarks(buf, ns, 0, -1, {})) + local id = api.nvim_buf_set_extmark(buf, ns, 1, 0, {}) + eq({ { id, 1, 0 } }, api.nvim_buf_get_extmarks(buf, ns, 0, -1, {})) end) it('does not crash with append/delete/undo sequence', function() @@ -1495,30 +1495,30 @@ describe('API/extmarks', function() it('works with left and right gravity', function() -- right gravity should move with inserted text, while -- left gravity should stay in place. - meths.nvim_buf_set_extmark(0, ns, 0, 5, { right_gravity = false }) - meths.nvim_buf_set_extmark(0, ns, 0, 5, { right_gravity = true }) + api.nvim_buf_set_extmark(0, ns, 0, 5, { right_gravity = false }) + api.nvim_buf_set_extmark(0, ns, 0, 5, { right_gravity = true }) feed([[Aasdfasdf]]) - eq({ { 1, 0, 5 }, { 2, 0, 13 } }, meths.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + eq({ { 1, 0, 5 }, { 2, 0, 13 } }, api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) -- but both move when text is inserted before feed([[<esc>Iasdf<esc>]]) - -- eq({}, meths.nvim_buf_get_lines(0, 0, -1, true)) - eq({ { 1, 0, 9 }, { 2, 0, 17 } }, meths.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + -- eq({}, api.nvim_buf_get_lines(0, 0, -1, true)) + eq({ { 1, 0, 9 }, { 2, 0, 17 } }, api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) -- clear text - meths.nvim_buf_set_text(0, 0, 0, 0, 17, {}) + api.nvim_buf_set_text(0, 0, 0, 0, 17, {}) -- handles set_text correctly as well - eq({ { 1, 0, 0 }, { 2, 0, 0 } }, meths.nvim_buf_get_extmarks(0, ns, 0, -1, {})) - meths.nvim_buf_set_text(0, 0, 0, 0, 0, { 'asdfasdf' }) - eq({ { 1, 0, 0 }, { 2, 0, 8 } }, meths.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + eq({ { 1, 0, 0 }, { 2, 0, 0 } }, api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + api.nvim_buf_set_text(0, 0, 0, 0, 0, { 'asdfasdf' }) + eq({ { 1, 0, 0 }, { 2, 0, 8 } }, api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) feed('u') -- handles pasting exec([[let @a='asdfasdf']]) feed([["ap]]) - eq({ { 1, 0, 0 }, { 2, 0, 8 } }, meths.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + eq({ { 1, 0, 0 }, { 2, 0, 8 } }, api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) end) it('can accept "end_row" or "end_line" #16548', function() @@ -1545,7 +1545,7 @@ describe('API/extmarks', function() it('in prompt buffer', function() feed('dd') local id = set_extmark(ns, marks[1], 0, 0, {}) - meths.nvim_set_option_value('buftype', 'prompt', {}) + api.nvim_set_option_value('buftype', 'prompt', {}) feed('i<esc>') eq({ { id, 0, 2 } }, get_extmarks(ns, 0, -1)) end) @@ -1639,7 +1639,7 @@ describe('API/extmarks', function() right_gravity = true, }, }, get_extmark_by_id(ns, marks[3], { details = true })) - meths.nvim_buf_clear_namespace(0, ns, 0, -1) + api.nvim_buf_clear_namespace(0, ns, 0, -1) -- legacy sign mark includes sign name command('sign define sign1 text=s1 texthl=Title linehl=LineNR numhl=Normal culhl=CursorLine') command('sign place 1 name=sign1 line=1') @@ -1693,7 +1693,7 @@ describe('API/extmarks', function() screen = Screen.new(40, 6) screen:attach() feed('dd6iaaa bbb ccc<CR><ESC>gg') - meths.nvim_set_option_value('signcolumn', 'auto:2', {}) + api.nvim_set_option_value('signcolumn', 'auto:2', {}) set_extmark(ns, 1, 0, 0, { invalidate = true, sign_text = 'S1', end_row = 1 }) set_extmark(ns, 2, 1, 0, { invalidate = true, sign_text = 'S2', end_row = 2 }) -- mark with invalidate is removed @@ -1768,7 +1768,7 @@ describe('Extmarks buffer api with many marks', function() for i = 1, 30 do lines[#lines + 1] = string.rep('x ', i) end - meths.nvim_buf_set_lines(0, 0, -1, true, lines) + api.nvim_buf_set_lines(0, 0, -1, true, lines) local ns = ns1 local q = 0 for i = 0, 29 do @@ -1802,16 +1802,16 @@ describe('Extmarks buffer api with many marks', function() end) it('can clear all marks in ns', function() - meths.nvim_buf_clear_namespace(0, ns1, 0, -1) + api.nvim_buf_clear_namespace(0, ns1, 0, -1) eq({}, get_marks(ns1)) eq(ns_marks[ns2], get_marks(ns2)) - meths.nvim_buf_clear_namespace(0, ns2, 0, -1) + api.nvim_buf_clear_namespace(0, ns2, 0, -1) eq({}, get_marks(ns1)) eq({}, get_marks(ns2)) end) it('can clear line range', function() - meths.nvim_buf_clear_namespace(0, ns1, 10, 20) + api.nvim_buf_clear_namespace(0, ns1, 10, 20) for id, mark in pairs(ns_marks[ns1]) do if 10 <= mark[1] and mark[1] < 20 then ns_marks[ns1][id] = nil diff --git a/test/functional/api/highlight_spec.lua b/test/functional/api/highlight_spec.lua index b86fe550a1..1973d3e1c7 100644 --- a/test/functional/api/highlight_spec.lua +++ b/test/functional/api/highlight_spec.lua @@ -4,8 +4,8 @@ local Screen = require('test.functional.ui.screen') local eq, eval = helpers.eq, helpers.eval local command = helpers.command local exec_capture = helpers.exec_capture -local meths = helpers.meths -local funcs = helpers.funcs +local api = helpers.api +local fn = helpers.fn local pcall_err = helpers.pcall_err local ok = helpers.ok local assert_alive = helpers.assert_alive @@ -52,128 +52,125 @@ describe('API: highlight', function() it('nvim_get_hl_by_id', function() local hl_id = eval("hlID('NewHighlight')") - eq(expected_cterm, meths.nvim_get_hl_by_id(hl_id, false)) + eq(expected_cterm, api.nvim_get_hl_by_id(hl_id, false)) hl_id = eval("hlID('NewHighlight')") -- Test valid id. - eq(expected_rgb, meths.nvim_get_hl_by_id(hl_id, true)) + eq(expected_rgb, api.nvim_get_hl_by_id(hl_id, true)) -- Test invalid id. - eq('Invalid highlight id: 30000', pcall_err(meths.nvim_get_hl_by_id, 30000, false)) + eq('Invalid highlight id: 30000', pcall_err(api.nvim_get_hl_by_id, 30000, false)) -- Test all highlight properties. command('hi NewHighlight gui=underline,bold,italic,reverse,strikethrough,altfont,nocombine') - eq(expected_rgb2, meths.nvim_get_hl_by_id(hl_id, true)) + eq(expected_rgb2, api.nvim_get_hl_by_id(hl_id, true)) -- Test undercurl command('hi NewHighlight gui=undercurl') - eq(expected_undercurl, meths.nvim_get_hl_by_id(hl_id, true)) + eq(expected_undercurl, api.nvim_get_hl_by_id(hl_id, true)) -- Test nil argument. eq( 'Wrong type for argument 1 when calling nvim_get_hl_by_id, expecting Integer', - pcall_err(meths.nvim_get_hl_by_id, { nil }, false) + pcall_err(api.nvim_get_hl_by_id, { nil }, false) ) -- Test 0 argument. - eq('Invalid highlight id: 0', pcall_err(meths.nvim_get_hl_by_id, 0, false)) + eq('Invalid highlight id: 0', pcall_err(api.nvim_get_hl_by_id, 0, false)) -- Test -1 argument. - eq('Invalid highlight id: -1', pcall_err(meths.nvim_get_hl_by_id, -1, false)) + eq('Invalid highlight id: -1', pcall_err(api.nvim_get_hl_by_id, -1, false)) -- Test highlight group without ctermbg value. command('hi Normal ctermfg=red ctermbg=yellow') command('hi NewConstant ctermfg=green guifg=white guibg=blue') hl_id = eval("hlID('NewConstant')") - eq({ foreground = 10 }, meths.nvim_get_hl_by_id(hl_id, false)) + eq({ foreground = 10 }, api.nvim_get_hl_by_id(hl_id, false)) -- Test highlight group without ctermfg value. command('hi clear NewConstant') command('hi NewConstant ctermbg=Magenta guifg=white guibg=blue') - eq({ background = 13 }, meths.nvim_get_hl_by_id(hl_id, false)) + eq({ background = 13 }, api.nvim_get_hl_by_id(hl_id, false)) -- Test highlight group with ctermfg and ctermbg values. command('hi clear NewConstant') command('hi NewConstant ctermfg=green ctermbg=Magenta guifg=white guibg=blue') - eq({ foreground = 10, background = 13 }, meths.nvim_get_hl_by_id(hl_id, false)) + eq({ foreground = 10, background = 13 }, api.nvim_get_hl_by_id(hl_id, false)) end) it('nvim_get_hl_by_name', function() local expected_normal = { background = Screen.colors.Yellow, foreground = Screen.colors.Red } -- Test `Normal` default values. - eq({}, meths.nvim_get_hl_by_name('Normal', true)) + eq({}, api.nvim_get_hl_by_name('Normal', true)) - eq(expected_cterm, meths.nvim_get_hl_by_name('NewHighlight', false)) - eq(expected_rgb, meths.nvim_get_hl_by_name('NewHighlight', true)) + eq(expected_cterm, api.nvim_get_hl_by_name('NewHighlight', false)) + eq(expected_rgb, api.nvim_get_hl_by_name('NewHighlight', true)) -- Test `Normal` modified values. command('hi Normal guifg=red guibg=yellow') - eq(expected_normal, meths.nvim_get_hl_by_name('Normal', true)) + eq(expected_normal, api.nvim_get_hl_by_name('Normal', true)) -- Test invalid name. eq( "Invalid highlight name: 'unknown_highlight'", - pcall_err(meths.nvim_get_hl_by_name, 'unknown_highlight', false) + pcall_err(api.nvim_get_hl_by_name, 'unknown_highlight', false) ) -- Test nil argument. eq( 'Wrong type for argument 1 when calling nvim_get_hl_by_name, expecting String', - pcall_err(meths.nvim_get_hl_by_name, { nil }, false) + pcall_err(api.nvim_get_hl_by_name, { nil }, false) ) -- Test empty string argument. - eq('Invalid highlight name', pcall_err(meths.nvim_get_hl_by_name, '', false)) + eq('Invalid highlight name', pcall_err(api.nvim_get_hl_by_name, '', false)) -- Test "standout" attribute. #8054 - eq({ underline = true }, meths.nvim_get_hl_by_name('cursorline', 0)) + eq({ underline = true }, api.nvim_get_hl_by_name('cursorline', 0)) command('hi CursorLine cterm=standout,underline term=standout,underline gui=standout,underline') command('set cursorline') - eq({ underline = true, standout = true }, meths.nvim_get_hl_by_name('cursorline', 0)) + eq({ underline = true, standout = true }, api.nvim_get_hl_by_name('cursorline', 0)) -- Test cterm & Normal values. #18024 (tail) & #18980 -- Ensure Normal, and groups that match Normal return their fg & bg cterm values - meths.nvim_set_hl(0, 'Normal', { ctermfg = 17, ctermbg = 213 }) - meths.nvim_set_hl(0, 'NotNormal', { ctermfg = 17, ctermbg = 213, nocombine = true }) + api.nvim_set_hl(0, 'Normal', { ctermfg = 17, ctermbg = 213 }) + api.nvim_set_hl(0, 'NotNormal', { ctermfg = 17, ctermbg = 213, nocombine = true }) -- Note colors are "cterm" values, not rgb-as-ints - eq({ foreground = 17, background = 213 }, meths.nvim_get_hl_by_name('Normal', false)) + eq({ foreground = 17, background = 213 }, api.nvim_get_hl_by_name('Normal', false)) eq( { foreground = 17, background = 213, nocombine = true }, - meths.nvim_get_hl_by_name('NotNormal', false) + api.nvim_get_hl_by_name('NotNormal', false) ) end) it('nvim_get_hl_id_by_name', function() -- precondition: use a hl group that does not yet exist - eq( - "Invalid highlight name: 'Shrubbery'", - pcall_err(meths.nvim_get_hl_by_name, 'Shrubbery', true) - ) - eq(0, funcs.hlID('Shrubbery')) + eq("Invalid highlight name: 'Shrubbery'", pcall_err(api.nvim_get_hl_by_name, 'Shrubbery', true)) + eq(0, fn.hlID('Shrubbery')) - local hl_id = meths.nvim_get_hl_id_by_name('Shrubbery') + local hl_id = api.nvim_get_hl_id_by_name('Shrubbery') ok(hl_id > 0) - eq(hl_id, funcs.hlID('Shrubbery')) + eq(hl_id, fn.hlID('Shrubbery')) command('hi Shrubbery guifg=#888888 guibg=#888888') eq( { foreground = tonumber('0x888888'), background = tonumber('0x888888') }, - meths.nvim_get_hl_by_id(hl_id, true) + api.nvim_get_hl_by_id(hl_id, true) ) eq( { foreground = tonumber('0x888888'), background = tonumber('0x888888') }, - meths.nvim_get_hl_by_name('Shrubbery', true) + api.nvim_get_hl_by_name('Shrubbery', true) ) end) it("nvim_buf_add_highlight to other buffer doesn't crash if undo is disabled #12873", function() command('vsplit file') - local err, _ = pcall(meths.nvim_set_option_value, 'undofile', false, { buf = 1 }) + local err, _ = pcall(api.nvim_set_option_value, 'undofile', false, { buf = 1 }) eq(true, err) - err, _ = pcall(meths.nvim_set_option_value, 'undolevels', -1, { buf = 1 }) + err, _ = pcall(api.nvim_set_option_value, 'undolevels', -1, { buf = 1 }) eq(true, err) - err, _ = pcall(meths.nvim_buf_add_highlight, 1, -1, 'Question', 0, 0, -1) + err, _ = pcall(api.nvim_buf_add_highlight, 1, -1, 'Question', 0, 0, -1) eq(true, err) assert_alive() end) @@ -244,8 +241,8 @@ describe('API: set highlight', function() } local function get_ns() - local ns = meths.nvim_create_namespace('Test_set_hl') - meths.nvim_set_hl_ns(ns) + local ns = api.nvim_create_namespace('Test_set_hl') + api.nvim_set_hl_ns(ns) return ns end @@ -254,51 +251,51 @@ describe('API: set highlight', function() it('validation', function() eq( "Invalid 'blend': out of range", - pcall_err(meths.nvim_set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = 999 }) + pcall_err(api.nvim_set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = 999 }) ) eq( "Invalid 'blend': expected Integer, got Array", - pcall_err(meths.nvim_set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = {} }) + pcall_err(api.nvim_set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = {} }) ) end) it('can set gui highlight', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight1) - eq(highlight1, meths.nvim_get_hl_by_name('Test_hl', true)) + api.nvim_set_hl(ns, 'Test_hl', highlight1) + eq(highlight1, api.nvim_get_hl_by_name('Test_hl', true)) end) it('can set cterm highlight', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight2_config) - eq(highlight2_result, meths.nvim_get_hl_by_name('Test_hl', false)) + api.nvim_set_hl(ns, 'Test_hl', highlight2_config) + eq(highlight2_result, api.nvim_get_hl_by_name('Test_hl', false)) end) it('can set empty cterm attr', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', { cterm = {} }) - eq({}, meths.nvim_get_hl_by_name('Test_hl', false)) + api.nvim_set_hl(ns, 'Test_hl', { cterm = {} }) + eq({}, api.nvim_get_hl_by_name('Test_hl', false)) end) it('cterm attr defaults to gui attr', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight1) + api.nvim_set_hl(ns, 'Test_hl', highlight1) eq({ bold = true, italic = true, - }, meths.nvim_get_hl_by_name('Test_hl', false)) + }, api.nvim_get_hl_by_name('Test_hl', false)) end) it('can overwrite attr for cterm', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight3_config) - eq(highlight3_result_gui, meths.nvim_get_hl_by_name('Test_hl', true)) - eq(highlight3_result_cterm, meths.nvim_get_hl_by_name('Test_hl', false)) + api.nvim_set_hl(ns, 'Test_hl', highlight3_config) + eq(highlight3_result_gui, api.nvim_get_hl_by_name('Test_hl', true)) + eq(highlight3_result_cterm, api.nvim_get_hl_by_name('Test_hl', false)) end) it('only allows one underline attribute #22371', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', { + api.nvim_set_hl(ns, 'Test_hl', { underdouble = true, underdotted = true, cterm = { @@ -306,21 +303,21 @@ describe('API: set highlight', function() undercurl = true, }, }) - eq({ undercurl = true }, meths.nvim_get_hl_by_name('Test_hl', false)) - eq({ underdotted = true }, meths.nvim_get_hl_by_name('Test_hl', true)) + eq({ undercurl = true }, api.nvim_get_hl_by_name('Test_hl', false)) + eq({ underdotted = true }, api.nvim_get_hl_by_name('Test_hl', true)) end) it('can set a highlight in the global namespace', function() - meths.nvim_set_hl(0, 'Test_hl', highlight2_config) + api.nvim_set_hl(0, 'Test_hl', highlight2_config) eq( 'Test_hl xxx cterm=underline,reverse ctermfg=8 ctermbg=15 gui=underline,reverse', exec_capture('highlight Test_hl') ) - meths.nvim_set_hl(0, 'Test_hl', { background = highlight_color.bg }) + api.nvim_set_hl(0, 'Test_hl', { background = highlight_color.bg }) eq('Test_hl xxx guibg=#0032aa', exec_capture('highlight Test_hl')) - meths.nvim_set_hl(0, 'Test_hl2', highlight3_config) + api.nvim_set_hl(0, 'Test_hl2', highlight3_config) eq( 'Test_hl2 xxx cterm=italic,reverse,strikethrough,altfont,nocombine ctermfg=8 ctermbg=15 gui=bold,underdashed,italic,reverse,strikethrough,altfont guifg=#ff0000 guibg=#0032aa', exec_capture('highlight Test_hl2') @@ -328,63 +325,63 @@ describe('API: set highlight', function() -- Colors are stored with the name they are defined, but -- with canonical casing - meths.nvim_set_hl(0, 'Test_hl3', { bg = 'reD', fg = 'bLue' }) + api.nvim_set_hl(0, 'Test_hl3', { bg = 'reD', fg = 'bLue' }) eq('Test_hl3 xxx guifg=Blue guibg=Red', exec_capture('highlight Test_hl3')) end) it('can modify a highlight in the global namespace', function() - meths.nvim_set_hl(0, 'Test_hl3', { bg = 'red', fg = 'blue' }) + api.nvim_set_hl(0, 'Test_hl3', { bg = 'red', fg = 'blue' }) eq('Test_hl3 xxx guifg=Blue guibg=Red', exec_capture('highlight Test_hl3')) - meths.nvim_set_hl(0, 'Test_hl3', { bg = 'red' }) + api.nvim_set_hl(0, 'Test_hl3', { bg = 'red' }) eq('Test_hl3 xxx guibg=Red', exec_capture('highlight Test_hl3')) - meths.nvim_set_hl(0, 'Test_hl3', { ctermbg = 9, ctermfg = 12 }) + api.nvim_set_hl(0, 'Test_hl3', { ctermbg = 9, ctermfg = 12 }) eq('Test_hl3 xxx ctermfg=12 ctermbg=9', exec_capture('highlight Test_hl3')) - meths.nvim_set_hl(0, 'Test_hl3', { ctermbg = 'red', ctermfg = 'blue' }) + api.nvim_set_hl(0, 'Test_hl3', { ctermbg = 'red', ctermfg = 'blue' }) eq('Test_hl3 xxx ctermfg=12 ctermbg=9', exec_capture('highlight Test_hl3')) - meths.nvim_set_hl(0, 'Test_hl3', { ctermbg = 9 }) + api.nvim_set_hl(0, 'Test_hl3', { ctermbg = 9 }) eq('Test_hl3 xxx ctermbg=9', exec_capture('highlight Test_hl3')) eq( "Invalid highlight color: 'redd'", - pcall_err(meths.nvim_set_hl, 0, 'Test_hl3', { fg = 'redd' }) + pcall_err(api.nvim_set_hl, 0, 'Test_hl3', { fg = 'redd' }) ) eq( "Invalid highlight color: 'bleu'", - pcall_err(meths.nvim_set_hl, 0, 'Test_hl3', { ctermfg = 'bleu' }) + pcall_err(api.nvim_set_hl, 0, 'Test_hl3', { ctermfg = 'bleu' }) ) - meths.nvim_set_hl(0, 'Test_hl3', { fg = '#FF00FF' }) + api.nvim_set_hl(0, 'Test_hl3', { fg = '#FF00FF' }) eq('Test_hl3 xxx guifg=#ff00ff', exec_capture('highlight Test_hl3')) eq( "Invalid highlight color: '#FF00FF'", - pcall_err(meths.nvim_set_hl, 0, 'Test_hl3', { ctermfg = '#FF00FF' }) + pcall_err(api.nvim_set_hl, 0, 'Test_hl3', { ctermfg = '#FF00FF' }) ) for _, fg_val in ipairs { nil, 'NONE', 'nOnE', '', -1 } do - meths.nvim_set_hl(0, 'Test_hl3', { fg = fg_val }) + api.nvim_set_hl(0, 'Test_hl3', { fg = fg_val }) eq('Test_hl3 xxx cleared', exec_capture('highlight Test_hl3')) end - meths.nvim_set_hl(0, 'Test_hl3', { fg = '#FF00FF', blend = 50 }) + api.nvim_set_hl(0, 'Test_hl3', { fg = '#FF00FF', blend = 50 }) eq('Test_hl3 xxx guifg=#ff00ff blend=50', exec_capture('highlight Test_hl3')) end) it("correctly sets 'Normal' internal properties", function() -- Normal has some special handling internally. #18024 - meths.nvim_set_hl(0, 'Normal', { fg = '#000083', bg = '#0000F3' }) - eq({ foreground = 131, background = 243 }, meths.nvim_get_hl_by_name('Normal', true)) + api.nvim_set_hl(0, 'Normal', { fg = '#000083', bg = '#0000F3' }) + eq({ foreground = 131, background = 243 }, api.nvim_get_hl_by_name('Normal', true)) end) it('does not segfault on invalid group name #20009', function() eq( "Invalid highlight name: 'foo bar'", - pcall_err(meths.nvim_set_hl, 0, 'foo bar', { bold = true }) + pcall_err(api.nvim_set_hl, 0, 'foo bar', { bold = true }) ) assert_alive() end) @@ -452,14 +449,14 @@ describe('API: get highlight', function() local function get_ns() -- Test namespace filtering behavior - local ns2 = meths.nvim_create_namespace('Another_namespace') - meths.nvim_set_hl(ns2, 'Test_hl', { ctermfg = 23 }) - meths.nvim_set_hl(ns2, 'Test_another_hl', { link = 'Test_hl' }) - meths.nvim_set_hl(ns2, 'Test_hl_link', { link = 'Test_another_hl' }) - meths.nvim_set_hl(ns2, 'Test_another_hl_link', { link = 'Test_hl_link' }) + local ns2 = api.nvim_create_namespace('Another_namespace') + api.nvim_set_hl(ns2, 'Test_hl', { ctermfg = 23 }) + api.nvim_set_hl(ns2, 'Test_another_hl', { link = 'Test_hl' }) + api.nvim_set_hl(ns2, 'Test_hl_link', { link = 'Test_another_hl' }) + api.nvim_set_hl(ns2, 'Test_another_hl_link', { link = 'Test_hl_link' }) - local ns = meths.nvim_create_namespace('Test_set_hl') - meths.nvim_set_hl_ns(ns) + local ns = api.nvim_create_namespace('Test_set_hl') + api.nvim_set_hl_ns(ns) return ns end @@ -469,24 +466,24 @@ describe('API: get highlight', function() it('validation', function() eq( "Invalid 'name': expected String, got Integer", - pcall_err(meths.nvim_get_hl, 0, { name = 177 }) + pcall_err(api.nvim_get_hl, 0, { name = 177 }) ) - eq('Highlight id out of bounds', pcall_err(meths.nvim_get_hl, 0, { name = 'Test set hl' })) + eq('Highlight id out of bounds', pcall_err(api.nvim_get_hl, 0, { name = 'Test set hl' })) end) it('nvim_get_hl with create flag', function() - eq({}, meths.nvim_get_hl(0, { name = 'Foo', create = false })) - eq(0, funcs.hlexists('Foo')) - meths.nvim_get_hl(0, { name = 'Bar', create = true }) - eq(1, funcs.hlexists('Bar')) - meths.nvim_get_hl(0, { name = 'FooBar' }) - eq(1, funcs.hlexists('FooBar')) + eq({}, api.nvim_get_hl(0, { name = 'Foo', create = false })) + eq(0, fn.hlexists('Foo')) + api.nvim_get_hl(0, { name = 'Bar', create = true }) + eq(1, fn.hlexists('Bar')) + api.nvim_get_hl(0, { name = 'FooBar' }) + eq(1, fn.hlexists('FooBar')) end) it('can get all highlights in current namespace', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', { bg = '#B4BEFE' }) - meths.nvim_set_hl(ns, 'Test_hl_link', { link = 'Test_hl' }) + api.nvim_set_hl(ns, 'Test_hl', { bg = '#B4BEFE' }) + api.nvim_set_hl(ns, 'Test_hl_link', { link = 'Test_hl' }) eq({ Test_hl = { bg = 11845374, @@ -494,42 +491,42 @@ describe('API: get highlight', function() Test_hl_link = { link = 'Test_hl', }, - }, meths.nvim_get_hl(ns, {})) + }, api.nvim_get_hl(ns, {})) end) it('can get gui highlight', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight1) - eq(highlight1, meths.nvim_get_hl(ns, { name = 'Test_hl' })) + api.nvim_set_hl(ns, 'Test_hl', highlight1) + eq(highlight1, api.nvim_get_hl(ns, { name = 'Test_hl' })) end) it('can get cterm highlight', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight2) - eq(highlight2, meths.nvim_get_hl(ns, { name = 'Test_hl' })) + api.nvim_set_hl(ns, 'Test_hl', highlight2) + eq(highlight2, api.nvim_get_hl(ns, { name = 'Test_hl' })) end) it('can get empty cterm attr', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', { cterm = {} }) - eq({}, meths.nvim_get_hl(ns, { name = 'Test_hl' })) + api.nvim_set_hl(ns, 'Test_hl', { cterm = {} }) + eq({}, api.nvim_get_hl(ns, { name = 'Test_hl' })) end) it('cterm attr defaults to gui attr', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight1) - eq(highlight1, meths.nvim_get_hl(ns, { name = 'Test_hl' })) + api.nvim_set_hl(ns, 'Test_hl', highlight1) + eq(highlight1, api.nvim_get_hl(ns, { name = 'Test_hl' })) end) it('can overwrite attr for cterm', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', highlight3_config) - eq(highlight3_result, meths.nvim_get_hl(ns, { name = 'Test_hl' })) + api.nvim_set_hl(ns, 'Test_hl', highlight3_config) + eq(highlight3_result, api.nvim_get_hl(ns, { name = 'Test_hl' })) end) it('only allows one underline attribute #22371', function() local ns = get_ns() - meths.nvim_set_hl(ns, 'Test_hl', { + api.nvim_set_hl(ns, 'Test_hl', { underdouble = true, underdotted = true, cterm = { @@ -539,33 +536,33 @@ describe('API: get highlight', function() }) eq( { underdotted = true, cterm = { undercurl = true } }, - meths.nvim_get_hl(ns, { name = 'Test_hl' }) + api.nvim_get_hl(ns, { name = 'Test_hl' }) ) end) it('can get a highlight in the global namespace', function() - meths.nvim_set_hl(0, 'Test_hl', highlight2) - eq(highlight2, meths.nvim_get_hl(0, { name = 'Test_hl' })) + api.nvim_set_hl(0, 'Test_hl', highlight2) + eq(highlight2, api.nvim_get_hl(0, { name = 'Test_hl' })) - meths.nvim_set_hl(0, 'Test_hl', { background = highlight_color.bg }) + api.nvim_set_hl(0, 'Test_hl', { background = highlight_color.bg }) eq({ bg = 12970, - }, meths.nvim_get_hl(0, { name = 'Test_hl' })) + }, api.nvim_get_hl(0, { name = 'Test_hl' })) - meths.nvim_set_hl(0, 'Test_hl2', highlight3_config) - eq(highlight3_result, meths.nvim_get_hl(0, { name = 'Test_hl2' })) + api.nvim_set_hl(0, 'Test_hl2', highlight3_config) + eq(highlight3_result, api.nvim_get_hl(0, { name = 'Test_hl2' })) -- Colors are stored with the name they are defined, but -- with canonical casing - meths.nvim_set_hl(0, 'Test_hl3', { bg = 'reD', fg = 'bLue' }) + api.nvim_set_hl(0, 'Test_hl3', { bg = 'reD', fg = 'bLue' }) eq({ bg = 16711680, fg = 255, - }, meths.nvim_get_hl(0, { name = 'Test_hl3' })) + }, api.nvim_get_hl(0, { name = 'Test_hl3' })) end) it('nvim_get_hl by id', function() - local hl_id = meths.nvim_get_hl_id_by_name('NewHighlight') + local hl_id = api.nvim_get_hl_id_by_name('NewHighlight') command( 'hi NewHighlight cterm=underline ctermbg=green guifg=red guibg=yellow guisp=blue gui=bold' @@ -577,14 +574,14 @@ describe('API: get highlight', function() bold = true, ctermbg = 10, cterm = { underline = true }, - }, meths.nvim_get_hl(0, { id = hl_id })) + }, api.nvim_get_hl(0, { id = hl_id })) -- Test 0 argument - eq('Highlight id out of bounds', pcall_err(meths.nvim_get_hl, 0, { id = 0 })) + eq('Highlight id out of bounds', pcall_err(api.nvim_get_hl, 0, { id = 0 })) eq( "Invalid 'id': expected Integer, got String", - pcall_err(meths.nvim_get_hl, 0, { id = 'Test_set_hl' }) + pcall_err(api.nvim_get_hl, 0, { id = 'Test_set_hl' }) ) -- Test all highlight properties. @@ -602,7 +599,7 @@ describe('API: get highlight', function() underline = true, ctermbg = 10, cterm = { underline = true }, - }, meths.nvim_get_hl(0, { id = hl_id })) + }, api.nvim_get_hl(0, { id = hl_id })) -- Test undercurl command('hi NewHighlight gui=undercurl') @@ -613,16 +610,16 @@ describe('API: get highlight', function() undercurl = true, ctermbg = 10, cterm = { underline = true }, - }, meths.nvim_get_hl(0, { id = hl_id })) + }, api.nvim_get_hl(0, { id = hl_id })) end) it('can correctly detect links', function() command('hi String guifg=#a6e3a1 ctermfg=NONE') command('hi link @string string') command('hi link @string.cpp @string') - eq({ fg = 10937249 }, meths.nvim_get_hl(0, { name = 'String' })) - eq({ link = 'String' }, meths.nvim_get_hl(0, { name = '@string' })) - eq({ fg = 10937249 }, meths.nvim_get_hl(0, { name = '@string.cpp', link = false })) + eq({ fg = 10937249 }, api.nvim_get_hl(0, { name = 'String' })) + eq({ link = 'String' }, api.nvim_get_hl(0, { name = '@string' })) + eq({ fg = 10937249 }, api.nvim_get_hl(0, { name = '@string.cpp', link = false })) end) it('can get all attributes for a linked group', function() @@ -631,55 +628,55 @@ describe('API: get highlight', function() command('hi! link Foo Bar') eq( { link = 'Bar', fg = tonumber('00ff00', 16), bold = true, underline = true }, - meths.nvim_get_hl(0, { name = 'Foo', link = true }) + api.nvim_get_hl(0, { name = 'Foo', link = true }) ) end) it('can set link as well as other attributes', function() command('hi Bar guifg=red') local hl = { link = 'Bar', fg = tonumber('00ff00', 16), bold = true, cterm = { bold = true } } - meths.nvim_set_hl(0, 'Foo', hl) - eq(hl, meths.nvim_get_hl(0, { name = 'Foo', link = true })) + api.nvim_set_hl(0, 'Foo', hl) + eq(hl, api.nvim_get_hl(0, { name = 'Foo', link = true })) end) it("doesn't contain unset groups", function() - local id = meths.nvim_get_hl_id_by_name '@foobar.hubbabubba' + local id = api.nvim_get_hl_id_by_name '@foobar.hubbabubba' ok(id > 0) - local data = meths.nvim_get_hl(0, {}) + local data = api.nvim_get_hl(0, {}) eq(nil, data['@foobar.hubbabubba']) eq(nil, data['@foobar']) command 'hi @foobar.hubbabubba gui=bold' - data = meths.nvim_get_hl(0, {}) + data = api.nvim_get_hl(0, {}) eq({ bold = true }, data['@foobar.hubbabubba']) eq(nil, data['@foobar']) -- @foobar.hubbabubba was explicitly cleared and thus shows up -- but @foobar was never touched, and thus doesn't command 'hi clear @foobar.hubbabubba' - data = meths.nvim_get_hl(0, {}) + data = api.nvim_get_hl(0, {}) eq({}, data['@foobar.hubbabubba']) eq(nil, data['@foobar']) end) it('should return default flag', function() - meths.nvim_set_hl(0, 'Tried', { fg = '#00ff00', default = true }) - eq({ fg = tonumber('00ff00', 16), default = true }, meths.nvim_get_hl(0, { name = 'Tried' })) + api.nvim_set_hl(0, 'Tried', { fg = '#00ff00', default = true }) + eq({ fg = tonumber('00ff00', 16), default = true }, api.nvim_get_hl(0, { name = 'Tried' })) end) it('should not output empty gui and cterm #23474', function() - meths.nvim_set_hl(0, 'Foo', { default = true }) - meths.nvim_set_hl(0, 'Bar', { default = true, fg = '#ffffff' }) - meths.nvim_set_hl(0, 'FooBar', { default = true, fg = '#ffffff', cterm = { bold = true } }) - meths.nvim_set_hl( + api.nvim_set_hl(0, 'Foo', { default = true }) + api.nvim_set_hl(0, 'Bar', { default = true, fg = '#ffffff' }) + api.nvim_set_hl(0, 'FooBar', { default = true, fg = '#ffffff', cterm = { bold = true } }) + api.nvim_set_hl( 0, 'FooBarA', { default = true, fg = '#ffffff', cterm = { bold = true, italic = true } } ) eq('Foo xxx cleared', exec_capture('highlight Foo')) - eq({ default = true }, meths.nvim_get_hl(0, { name = 'Foo' })) + eq({ default = true }, api.nvim_get_hl(0, { name = 'Foo' })) eq('Bar xxx guifg=#ffffff', exec_capture('highlight Bar')) eq('FooBar xxx cterm=bold guifg=#ffffff', exec_capture('highlight FooBar')) eq('FooBarA xxx cterm=bold,italic guifg=#ffffff', exec_capture('highlight FooBarA')) @@ -688,27 +685,27 @@ describe('API: get highlight', function() it('can override exist highlight group by force #20323', function() local white = tonumber('ffffff', 16) local green = tonumber('00ff00', 16) - meths.nvim_set_hl(0, 'Foo', { fg = white }) - meths.nvim_set_hl(0, 'Foo', { fg = green, force = true }) - eq({ fg = green }, meths.nvim_get_hl(0, { name = 'Foo' })) - meths.nvim_set_hl(0, 'Bar', { link = 'Comment', default = true }) - meths.nvim_set_hl(0, 'Bar', { link = 'Foo', default = true, force = true }) - eq({ link = 'Foo', default = true }, meths.nvim_get_hl(0, { name = 'Bar' })) + api.nvim_set_hl(0, 'Foo', { fg = white }) + api.nvim_set_hl(0, 'Foo', { fg = green, force = true }) + eq({ fg = green }, api.nvim_get_hl(0, { name = 'Foo' })) + api.nvim_set_hl(0, 'Bar', { link = 'Comment', default = true }) + api.nvim_set_hl(0, 'Bar', { link = 'Foo', default = true, force = true }) + eq({ link = 'Foo', default = true }, api.nvim_get_hl(0, { name = 'Bar' })) end) end) describe('API: set/get highlight namespace', function() it('set/get highlight namespace', function() - eq(0, meths.nvim_get_hl_ns({})) - local ns = meths.nvim_create_namespace('') - meths.nvim_set_hl_ns(ns) - eq(ns, meths.nvim_get_hl_ns({})) + eq(0, api.nvim_get_hl_ns({})) + local ns = api.nvim_create_namespace('') + api.nvim_set_hl_ns(ns) + eq(ns, api.nvim_get_hl_ns({})) end) it('set/get window highlight namespace', function() - eq(-1, meths.nvim_get_hl_ns({ winid = 0 })) - local ns = meths.nvim_create_namespace('') - meths.nvim_win_set_hl_ns(0, ns) - eq(ns, meths.nvim_get_hl_ns({ winid = 0 })) + eq(-1, api.nvim_get_hl_ns({ winid = 0 })) + local ns = api.nvim_create_namespace('') + api.nvim_win_set_hl_ns(0, ns) + eq(ns, api.nvim_get_hl_ns({ winid = 0 })) end) end) diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua index b7de7732e8..4f57f6d0bd 100644 --- a/test/functional/api/keymap_spec.lua +++ b/test/functional/api/keymap_spec.lua @@ -6,8 +6,8 @@ local eq, neq = helpers.eq, helpers.neq local exec_lua = helpers.exec_lua local exec = helpers.exec local feed = helpers.feed -local funcs = helpers.funcs -local meths = helpers.meths +local fn = helpers.fn +local api = helpers.api local source = helpers.source local pcall_err = helpers.pcall_err @@ -55,7 +55,7 @@ describe('nvim_get_keymap', function() } it('returns empty list when no map', function() - eq({}, meths.nvim_get_keymap('n')) + eq({}, api.nvim_get_keymap('n')) end) it('returns list of all applicable mappings', function() @@ -64,8 +64,8 @@ describe('nvim_get_keymap', function() -- Should be the same as the dictionary we supplied earlier -- and the dictionary you would get from maparg -- since this is a global map, and not script local - eq({ foo_bar_map_table }, meths.nvim_get_keymap('n')) - eq({ funcs.maparg('foo', 'n', false, true) }, meths.nvim_get_keymap('n')) + eq({ foo_bar_map_table }, api.nvim_get_keymap('n')) + eq({ fn.maparg('foo', 'n', false, true) }, api.nvim_get_keymap('n')) -- Add another mapping command('nnoremap foo_longer bar_longer') @@ -74,11 +74,11 @@ describe('nvim_get_keymap', function() foolong_bar_map_table['lhsraw'] = 'foo_longer' foolong_bar_map_table['rhs'] = 'bar_longer' - eq({ foolong_bar_map_table, foo_bar_map_table }, meths.nvim_get_keymap('n')) + eq({ foolong_bar_map_table, foo_bar_map_table }, api.nvim_get_keymap('n')) -- Remove a mapping command('unmap foo_longer') - eq({ foo_bar_map_table }, meths.nvim_get_keymap('n')) + eq({ foo_bar_map_table }, api.nvim_get_keymap('n')) end) it('works for other modes', function() @@ -92,7 +92,7 @@ describe('nvim_get_keymap', function() insert_table['mode'] = 'i' insert_table['mode_bits'] = 0x10 - eq({ insert_table }, meths.nvim_get_keymap('i')) + eq({ insert_table }, api.nvim_get_keymap('i')) end) it('considers scope', function() @@ -109,8 +109,8 @@ describe('nvim_get_keymap', function() command('nnoremap <buffer> foo bar') -- The buffer mapping should not show up - eq({ foolong_bar_map_table }, meths.nvim_get_keymap('n')) - eq({ buffer_table }, meths.nvim_buf_get_keymap(0, 'n')) + eq({ foolong_bar_map_table }, api.nvim_get_keymap('n')) + eq({ buffer_table }, api.nvim_buf_get_keymap(0, 'n')) end) it('considers scope for overlapping maps', function() @@ -121,12 +121,12 @@ describe('nvim_get_keymap', function() command('nnoremap <buffer> foo bar') - eq({ foo_bar_map_table }, meths.nvim_get_keymap('n')) - eq({ buffer_table }, meths.nvim_buf_get_keymap(0, 'n')) + eq({ foo_bar_map_table }, api.nvim_get_keymap('n')) + eq({ buffer_table }, api.nvim_buf_get_keymap(0, 'n')) end) it('can retrieve mapping for different buffers', function() - local original_buffer = meths.nvim_buf_get_number(0) + local original_buffer = api.nvim_buf_get_number(0) -- Place something in each of the buffers to make sure they stick around -- and set hidden so we can leave them command('set hidden') @@ -135,21 +135,21 @@ describe('nvim_get_keymap', function() command('new') command('normal! ihello 3') - local final_buffer = meths.nvim_buf_get_number(0) + local final_buffer = api.nvim_buf_get_number(0) command('nnoremap <buffer> foo bar') -- Final buffer will have buffer mappings local buffer_table = shallowcopy(foo_bar_map_table) buffer_table['buffer'] = final_buffer - eq({ buffer_table }, meths.nvim_buf_get_keymap(final_buffer, 'n')) - eq({ buffer_table }, meths.nvim_buf_get_keymap(0, 'n')) + eq({ buffer_table }, api.nvim_buf_get_keymap(final_buffer, 'n')) + eq({ buffer_table }, api.nvim_buf_get_keymap(0, 'n')) command('buffer ' .. original_buffer) - eq(original_buffer, meths.nvim_buf_get_number(0)) + eq(original_buffer, api.nvim_buf_get_number(0)) -- Original buffer won't have any mappings - eq({}, meths.nvim_get_keymap('n')) - eq({}, meths.nvim_buf_get_keymap(0, 'n')) - eq({ buffer_table }, meths.nvim_buf_get_keymap(final_buffer, 'n')) + eq({}, api.nvim_get_keymap('n')) + eq({}, api.nvim_buf_get_keymap(0, 'n')) + eq({ buffer_table }, api.nvim_buf_get_keymap(final_buffer, 'n')) end) -- Test toggle switches for basic options @@ -189,7 +189,7 @@ describe('nvim_get_keymap', function() function() make_new_windows(new_windows) command(map .. ' ' .. option_token .. ' foo bar') - local result = meths.nvim_get_keymap(mode)[1][option] + local result = api.nvim_get_keymap(mode)[1][option] eq(global_on_result, result) end ) @@ -207,7 +207,7 @@ describe('nvim_get_keymap', function() function() make_new_windows(new_windows) command(map .. ' <buffer> ' .. option_token .. ' foo bar') - local result = meths.nvim_buf_get_keymap(0, mode)[1][option] + local result = api.nvim_buf_get_keymap(0, mode)[1][option] eq(buffer_on_result, result) end ) @@ -226,7 +226,7 @@ describe('nvim_get_keymap', function() function() make_new_windows(new_windows) command(map .. ' baz bat') - local result = meths.nvim_get_keymap(mode)[1][option] + local result = api.nvim_get_keymap(mode)[1][option] eq(global_off_result, result) end ) @@ -244,7 +244,7 @@ describe('nvim_get_keymap', function() make_new_windows(new_windows) command(map .. ' <buffer> foo bar') - local result = meths.nvim_buf_get_keymap(0, mode)[1][option] + local result = api.nvim_buf_get_keymap(0, mode)[1][option] eq(buffer_off_result, result) end ) @@ -275,9 +275,9 @@ describe('nvim_get_keymap', function() nnoremap fizz :call <SID>maparg_test_function()<CR> ]]) - local sid_result = meths.nvim_get_keymap('n')[1]['sid'] + local sid_result = api.nvim_get_keymap('n')[1]['sid'] eq(1, sid_result) - eq('testing', meths.nvim_call_function('<SNR>' .. sid_result .. '_maparg_test_function', {})) + eq('testing', api.nvim_call_function('<SNR>' .. sid_result .. '_maparg_test_function', {})) end) it('returns script numbers for buffer maps', function() @@ -288,15 +288,15 @@ describe('nvim_get_keymap', function() nnoremap <buffer> fizz :call <SID>maparg_test_function()<CR> ]]) - local sid_result = meths.nvim_buf_get_keymap(0, 'n')[1]['sid'] + local sid_result = api.nvim_buf_get_keymap(0, 'n')[1]['sid'] eq(1, sid_result) - eq('testing', meths.nvim_call_function('<SNR>' .. sid_result .. '_maparg_test_function', {})) + eq('testing', api.nvim_call_function('<SNR>' .. sid_result .. '_maparg_test_function', {})) end) it('works with <F12> and others', function() command('nnoremap <F12> :let g:maparg_test_var = 1<CR>') - eq('<F12>', meths.nvim_get_keymap('n')[1]['lhs']) - eq(':let g:maparg_test_var = 1<CR>', meths.nvim_get_keymap('n')[1]['rhs']) + eq('<F12>', api.nvim_get_keymap('n')[1]['lhs']) + eq(':let g:maparg_test_var = 1<CR>', api.nvim_get_keymap('n')[1]['rhs']) end) it('works correctly despite various &cpo settings', function() @@ -339,7 +339,7 @@ describe('nvim_get_keymap', function() -- wrapper around get_keymap() that drops "lhsraw" and "lhsrawalt" which are hard to check local function get_keymap_noraw(...) - local ret = meths.nvim_get_keymap(...) + local ret = api.nvim_get_keymap(...) for _, item in ipairs(ret) do item.lhsraw = nil item.lhsrawalt = nil @@ -390,7 +390,7 @@ describe('nvim_get_keymap', function() lnum = 0, } command('nnoremap \\|<Char-0x20><Char-32><Space><Bar> \\|<Char-0x20><Char-32><Space> <Bar>') - eq({ space_table }, meths.nvim_get_keymap('n')) + eq({ space_table }, api.nvim_get_keymap('n')) end) it('can handle lua mappings', function() @@ -419,7 +419,7 @@ describe('nvim_get_keymap', function() ]]) eq(3, exec_lua([[return GlobalCount]])) - local mapargs = meths.nvim_get_keymap('n') + local mapargs = api.nvim_get_keymap('n') mapargs[1].callback = nil eq({ lhs = 'asdf', @@ -440,7 +440,7 @@ describe('nvim_get_keymap', function() end) it('can handle map descriptions', function() - meths.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' }) + api.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' }) eq({ lhs = 'lhs', lhsraw = 'lhs', @@ -458,7 +458,7 @@ describe('nvim_get_keymap', function() noremap = 0, lnum = 0, desc = 'map description', - }, meths.nvim_get_keymap('n')[1]) + }, api.nvim_get_keymap('n')[1]) end) end) @@ -511,7 +511,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() -- Gets a maparg() dict from Nvim, if one exists. local function get_mapargs(mode, lhs) - local mapargs = funcs.maparg(lhs, normalize_mapmode(mode), mode:sub(-1) == 'a', true) + local mapargs = fn.maparg(lhs, normalize_mapmode(mode), mode:sub(-1) == 'a', true) -- drop "lhsraw" and "lhsrawalt" which are hard to check mapargs.lhsraw = nil mapargs.lhsrawalt = nil @@ -520,9 +520,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function() it('error on empty LHS', function() -- escape parentheses in lua string, else comparison fails erroneously - eq('Invalid (empty) LHS', pcall_err(meths.nvim_set_keymap, '', '', 'rhs', {})) - eq('Invalid (empty) LHS', pcall_err(meths.nvim_set_keymap, '', '', '', {})) - eq('Invalid (empty) LHS', pcall_err(meths.nvim_del_keymap, '', '')) + eq('Invalid (empty) LHS', pcall_err(api.nvim_set_keymap, '', '', 'rhs', {})) + eq('Invalid (empty) LHS', pcall_err(api.nvim_set_keymap, '', '', '', {})) + eq('Invalid (empty) LHS', pcall_err(api.nvim_del_keymap, '', '')) end) it('error if LHS longer than MAXMAPLEN', function() @@ -534,19 +534,19 @@ describe('nvim_set_keymap, nvim_del_keymap', function() end -- exactly 50 chars should be fine - meths.nvim_set_keymap('', lhs, 'rhs', {}) + api.nvim_set_keymap('', lhs, 'rhs', {}) -- del_keymap should unmap successfully - meths.nvim_del_keymap('', lhs) + api.nvim_del_keymap('', lhs) eq({}, get_mapargs('', lhs)) -- 51 chars should produce an error lhs = lhs .. '1' eq( 'LHS exceeds maximum map length: ' .. lhs, - pcall_err(meths.nvim_set_keymap, '', lhs, 'rhs', {}) + pcall_err(api.nvim_set_keymap, '', lhs, 'rhs', {}) ) - eq('LHS exceeds maximum map length: ' .. lhs, pcall_err(meths.nvim_del_keymap, '', lhs)) + eq('LHS exceeds maximum map length: ' .. lhs, pcall_err(api.nvim_del_keymap, '', lhs)) end) it('does not throw errors when rhs is longer than MAXMAPLEN', function() @@ -556,65 +556,65 @@ describe('nvim_set_keymap, nvim_del_keymap', function() rhs = rhs .. (i % 10) end rhs = rhs .. '1' - meths.nvim_set_keymap('', 'lhs', rhs, {}) + api.nvim_set_keymap('', 'lhs', rhs, {}) eq(generate_mapargs('', 'lhs', rhs), get_mapargs('', 'lhs')) end) it('error on invalid mode shortname', function() - eq('Invalid mode shortname: " "', pcall_err(meths.nvim_set_keymap, ' ', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "m"', pcall_err(meths.nvim_set_keymap, 'm', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "?"', pcall_err(meths.nvim_set_keymap, '?', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "y"', pcall_err(meths.nvim_set_keymap, 'y', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "p"', pcall_err(meths.nvim_set_keymap, 'p', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "a"', pcall_err(meths.nvim_set_keymap, 'a', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "oa"', pcall_err(meths.nvim_set_keymap, 'oa', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "!o"', pcall_err(meths.nvim_set_keymap, '!o', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "!i"', pcall_err(meths.nvim_set_keymap, '!i', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "!!"', pcall_err(meths.nvim_set_keymap, '!!', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "map"', pcall_err(meths.nvim_set_keymap, 'map', 'lhs', 'rhs', {})) - eq('Invalid mode shortname: "vmap"', pcall_err(meths.nvim_set_keymap, 'vmap', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: " "', pcall_err(api.nvim_set_keymap, ' ', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "m"', pcall_err(api.nvim_set_keymap, 'm', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "?"', pcall_err(api.nvim_set_keymap, '?', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "y"', pcall_err(api.nvim_set_keymap, 'y', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "p"', pcall_err(api.nvim_set_keymap, 'p', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "a"', pcall_err(api.nvim_set_keymap, 'a', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "oa"', pcall_err(api.nvim_set_keymap, 'oa', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "!o"', pcall_err(api.nvim_set_keymap, '!o', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "!i"', pcall_err(api.nvim_set_keymap, '!i', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "!!"', pcall_err(api.nvim_set_keymap, '!!', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "map"', pcall_err(api.nvim_set_keymap, 'map', 'lhs', 'rhs', {})) + eq('Invalid mode shortname: "vmap"', pcall_err(api.nvim_set_keymap, 'vmap', 'lhs', 'rhs', {})) eq( 'Invalid mode shortname: "xnoremap"', - pcall_err(meths.nvim_set_keymap, 'xnoremap', 'lhs', 'rhs', {}) + pcall_err(api.nvim_set_keymap, 'xnoremap', 'lhs', 'rhs', {}) ) - eq('Invalid mode shortname: " "', pcall_err(meths.nvim_del_keymap, ' ', 'lhs')) - eq('Invalid mode shortname: "m"', pcall_err(meths.nvim_del_keymap, 'm', 'lhs')) - eq('Invalid mode shortname: "?"', pcall_err(meths.nvim_del_keymap, '?', 'lhs')) - eq('Invalid mode shortname: "y"', pcall_err(meths.nvim_del_keymap, 'y', 'lhs')) - eq('Invalid mode shortname: "p"', pcall_err(meths.nvim_del_keymap, 'p', 'lhs')) - eq('Invalid mode shortname: "a"', pcall_err(meths.nvim_del_keymap, 'a', 'lhs')) - eq('Invalid mode shortname: "oa"', pcall_err(meths.nvim_del_keymap, 'oa', 'lhs')) - eq('Invalid mode shortname: "!o"', pcall_err(meths.nvim_del_keymap, '!o', 'lhs')) - eq('Invalid mode shortname: "!i"', pcall_err(meths.nvim_del_keymap, '!i', 'lhs')) - eq('Invalid mode shortname: "!!"', pcall_err(meths.nvim_del_keymap, '!!', 'lhs')) - eq('Invalid mode shortname: "map"', pcall_err(meths.nvim_del_keymap, 'map', 'lhs')) - eq('Invalid mode shortname: "vmap"', pcall_err(meths.nvim_del_keymap, 'vmap', 'lhs')) - eq('Invalid mode shortname: "xnoremap"', pcall_err(meths.nvim_del_keymap, 'xnoremap', 'lhs')) + eq('Invalid mode shortname: " "', pcall_err(api.nvim_del_keymap, ' ', 'lhs')) + eq('Invalid mode shortname: "m"', pcall_err(api.nvim_del_keymap, 'm', 'lhs')) + eq('Invalid mode shortname: "?"', pcall_err(api.nvim_del_keymap, '?', 'lhs')) + eq('Invalid mode shortname: "y"', pcall_err(api.nvim_del_keymap, 'y', 'lhs')) + eq('Invalid mode shortname: "p"', pcall_err(api.nvim_del_keymap, 'p', 'lhs')) + eq('Invalid mode shortname: "a"', pcall_err(api.nvim_del_keymap, 'a', 'lhs')) + eq('Invalid mode shortname: "oa"', pcall_err(api.nvim_del_keymap, 'oa', 'lhs')) + eq('Invalid mode shortname: "!o"', pcall_err(api.nvim_del_keymap, '!o', 'lhs')) + eq('Invalid mode shortname: "!i"', pcall_err(api.nvim_del_keymap, '!i', 'lhs')) + eq('Invalid mode shortname: "!!"', pcall_err(api.nvim_del_keymap, '!!', 'lhs')) + eq('Invalid mode shortname: "map"', pcall_err(api.nvim_del_keymap, 'map', 'lhs')) + eq('Invalid mode shortname: "vmap"', pcall_err(api.nvim_del_keymap, 'vmap', 'lhs')) + eq('Invalid mode shortname: "xnoremap"', pcall_err(api.nvim_del_keymap, 'xnoremap', 'lhs')) end) it('error on invalid optnames', function() eq( "Invalid key: 'silentt'", - pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', { silentt = true }) + pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', { silentt = true }) ) - eq("Invalid key: 'sidd'", pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', { sidd = false })) + eq("Invalid key: 'sidd'", pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', { sidd = false })) eq( "Invalid key: 'nowaiT'", - pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', { nowaiT = false }) + pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', { nowaiT = false }) ) end) it('error on <buffer> option key', function() eq( "Invalid key: 'buffer'", - pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', { buffer = true }) + pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', { buffer = true }) ) end) it('error when "replace_keycodes" is used without "expr"', function() eq( '"replace_keycodes" requires "expr"', - pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', { replace_keycodes = true }) + pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', { replace_keycodes = true }) ) end) @@ -624,45 +624,45 @@ describe('nvim_set_keymap, nvim_del_keymap', function() it('throws an error when given non-boolean value for ' .. opt, function() local opts = {} opts[opt] = 'fooo' - eq(opt .. ' is not a boolean', pcall_err(meths.nvim_set_keymap, 'n', 'lhs', 'rhs', opts)) + eq(opt .. ' is not a boolean', pcall_err(api.nvim_set_keymap, 'n', 'lhs', 'rhs', opts)) end) end -- Perform tests of basic functionality it('sets ordinary mappings', function() - meths.nvim_set_keymap('n', 'lhs', 'rhs', {}) + api.nvim_set_keymap('n', 'lhs', 'rhs', {}) eq(generate_mapargs('n', 'lhs', 'rhs'), get_mapargs('n', 'lhs')) - meths.nvim_set_keymap('v', 'lhs', 'rhs', {}) + api.nvim_set_keymap('v', 'lhs', 'rhs', {}) eq(generate_mapargs('v', 'lhs', 'rhs'), get_mapargs('v', 'lhs')) end) it('does not throw when LHS or RHS have leading/trailing whitespace', function() - meths.nvim_set_keymap('n', ' lhs', 'rhs', {}) + api.nvim_set_keymap('n', ' lhs', 'rhs', {}) eq(generate_mapargs('n', '<Space><Space><Space>lhs', 'rhs'), get_mapargs('n', ' lhs')) - meths.nvim_set_keymap('n', 'lhs ', 'rhs', {}) + api.nvim_set_keymap('n', 'lhs ', 'rhs', {}) eq(generate_mapargs('n', 'lhs<Space><Space><Space><Space>', 'rhs'), get_mapargs('n', 'lhs ')) - meths.nvim_set_keymap('v', ' lhs ', '\trhs\t\f', {}) + api.nvim_set_keymap('v', ' lhs ', '\trhs\t\f', {}) eq(generate_mapargs('v', '<Space>lhs<Space><Space>', '\trhs\t\f'), get_mapargs('v', ' lhs ')) end) it('can set noremap mappings', function() - meths.nvim_set_keymap('x', 'lhs', 'rhs', { noremap = true }) + api.nvim_set_keymap('x', 'lhs', 'rhs', { noremap = true }) eq(generate_mapargs('x', 'lhs', 'rhs', { noremap = true }), get_mapargs('x', 'lhs')) - meths.nvim_set_keymap('t', 'lhs', 'rhs', { noremap = true }) + api.nvim_set_keymap('t', 'lhs', 'rhs', { noremap = true }) eq(generate_mapargs('t', 'lhs', 'rhs', { noremap = true }), get_mapargs('t', 'lhs')) end) it('can unmap mappings', function() - meths.nvim_set_keymap('v', 'lhs', 'rhs', {}) - meths.nvim_del_keymap('v', 'lhs') + api.nvim_set_keymap('v', 'lhs', 'rhs', {}) + api.nvim_del_keymap('v', 'lhs') eq({}, get_mapargs('v', 'lhs')) - meths.nvim_set_keymap('t', 'lhs', 'rhs', { noremap = true }) - meths.nvim_del_keymap('t', 'lhs') + api.nvim_set_keymap('t', 'lhs', 'rhs', { noremap = true }) + api.nvim_del_keymap('t', 'lhs') eq({}, get_mapargs('t', 'lhs')) end) @@ -670,8 +670,8 @@ describe('nvim_set_keymap, nvim_del_keymap', function() it('"!" and empty string are synonyms for mapmode-nvo', function() local nvo_shortnames = { '', '!' } for _, name in ipairs(nvo_shortnames) do - meths.nvim_set_keymap(name, 'lhs', 'rhs', {}) - meths.nvim_del_keymap(name, 'lhs') + api.nvim_set_keymap(name, 'lhs', 'rhs', {}) + api.nvim_del_keymap(name, 'lhs') eq({}, get_mapargs(name, 'lhs')) end end) @@ -681,48 +681,48 @@ describe('nvim_set_keymap, nvim_del_keymap', function() for _, rhs in ipairs(special_chars) do local mapmode = '!' it('can set mappings with special characters, lhs: ' .. lhs .. ', rhs: ' .. rhs, function() - meths.nvim_set_keymap(mapmode, lhs, rhs, {}) + api.nvim_set_keymap(mapmode, lhs, rhs, {}) eq(generate_mapargs(mapmode, lhs, rhs), get_mapargs(mapmode, lhs)) end) end end it('can set mappings containing literal keycodes', function() - meths.nvim_set_keymap('n', '\n\r\n', 'rhs', {}) + api.nvim_set_keymap('n', '\n\r\n', 'rhs', {}) local expected = generate_mapargs('n', '<NL><CR><NL>', 'rhs') eq(expected, get_mapargs('n', '<NL><CR><NL>')) end) it('can set mappings whose RHS is a <Nop>', function() - meths.nvim_set_keymap('i', 'lhs', '<Nop>', {}) + api.nvim_set_keymap('i', 'lhs', '<Nop>', {}) command('normal ilhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) -- imap to <Nop> does nothing + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, 0)) -- imap to <Nop> does nothing eq(generate_mapargs('i', 'lhs', '<Nop>', {}), get_mapargs('i', 'lhs')) -- also test for case insensitivity - meths.nvim_set_keymap('i', 'lhs', '<nOp>', {}) + api.nvim_set_keymap('i', 'lhs', '<nOp>', {}) command('normal ilhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, 0)) -- note: RHS in returned mapargs() dict reflects the original RHS -- provided by the user eq(generate_mapargs('i', 'lhs', '<nOp>', {}), get_mapargs('i', 'lhs')) - meths.nvim_set_keymap('i', 'lhs', '<NOP>', {}) + api.nvim_set_keymap('i', 'lhs', '<NOP>', {}) command('normal ilhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, 0)) eq(generate_mapargs('i', 'lhs', '<NOP>', {}), get_mapargs('i', 'lhs')) -- a single ^V in RHS is also <Nop> (see :h map-empty-rhs) - meths.nvim_set_keymap('i', 'lhs', '\022', {}) + api.nvim_set_keymap('i', 'lhs', '\022', {}) command('normal ilhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, 0)) eq(generate_mapargs('i', 'lhs', '\022', {}), get_mapargs('i', 'lhs')) end) it('treats an empty RHS in a mapping like a <Nop>', function() - meths.nvim_set_keymap('i', 'lhs', '', {}) + api.nvim_set_keymap('i', 'lhs', '', {}) command('normal ilhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, 0)) eq(generate_mapargs('i', 'lhs', '', {}), get_mapargs('i', 'lhs')) end) @@ -730,8 +730,8 @@ describe('nvim_set_keymap, nvim_del_keymap', function() -- Taken from the legacy test: test_mapping.vim. Exposes a bug in which -- replace_termcodes changes the length of the mapping's LHS, but -- do_map continues to use the *old* length of LHS. - meths.nvim_set_keymap('i', '<M-">', 'foo', {}) - meths.nvim_del_keymap('i', '<M-">') + api.nvim_set_keymap('i', '<M-">', 'foo', {}) + api.nvim_del_keymap('i', '<M-">') eq({}, get_mapargs('i', '<M-">')) end) @@ -741,18 +741,18 @@ describe('nvim_set_keymap, nvim_del_keymap', function() command([[call nvim_set_keymap('i', "\<space>", "\<tab>", {})]]) eq(generate_mapargs('i', '<Space>', '\t', { sid = 0 }), get_mapargs('i', '<Space>')) feed('i ') - eq({ '\t' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '\t' }, api.nvim_buf_get_lines(0, 0, -1, 0)) end ) it('throws appropriate error messages when setting <unique> maps', function() - meths.nvim_set_keymap('l', 'lhs', 'rhs', {}) + api.nvim_set_keymap('l', 'lhs', 'rhs', {}) eq( 'E227: mapping already exists for lhs', - pcall_err(meths.nvim_set_keymap, 'l', 'lhs', 'rhs', { unique = true }) + pcall_err(api.nvim_set_keymap, 'l', 'lhs', 'rhs', { unique = true }) ) -- different mapmode, no error should be thrown - meths.nvim_set_keymap('t', 'lhs', 'rhs', { unique = true }) + api.nvim_set_keymap('t', 'lhs', 'rhs', { unique = true }) end) it('can set <expr> mappings whose RHS change dynamically', function() @@ -763,50 +763,50 @@ describe('nvim_set_keymap, nvim_del_keymap', function() return g:flip endfunction ]]) - eq(1, meths.nvim_call_function('FlipFlop', {})) - eq(0, meths.nvim_call_function('FlipFlop', {})) - eq(1, meths.nvim_call_function('FlipFlop', {})) - eq(0, meths.nvim_call_function('FlipFlop', {})) + eq(1, api.nvim_call_function('FlipFlop', {})) + eq(0, api.nvim_call_function('FlipFlop', {})) + eq(1, api.nvim_call_function('FlipFlop', {})) + eq(0, api.nvim_call_function('FlipFlop', {})) - meths.nvim_set_keymap('i', 'lhs', 'FlipFlop()', { expr = true }) + api.nvim_set_keymap('i', 'lhs', 'FlipFlop()', { expr = true }) command('normal ilhs') - eq({ '1' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '1' }, api.nvim_buf_get_lines(0, 0, -1, 0)) command('normal! ggVGd') command('normal ilhs') - eq({ '0' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ '0' }, api.nvim_buf_get_lines(0, 0, -1, 0)) end) it('can set mappings that do trigger other mappings', function() - meths.nvim_set_keymap('i', 'mhs', 'rhs', {}) - meths.nvim_set_keymap('i', 'lhs', 'mhs', {}) + api.nvim_set_keymap('i', 'mhs', 'rhs', {}) + api.nvim_set_keymap('i', 'lhs', 'mhs', {}) command('normal imhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, -1, 0)) command('normal! ggVGd') command('normal ilhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, -1, 0)) end) it("can set noremap mappings that don't trigger other mappings", function() - meths.nvim_set_keymap('i', 'mhs', 'rhs', {}) - meths.nvim_set_keymap('i', 'lhs', 'mhs', { noremap = true }) + api.nvim_set_keymap('i', 'mhs', 'rhs', {}) + api.nvim_set_keymap('i', 'lhs', 'mhs', { noremap = true }) command('normal imhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, -1, 0)) command('normal! ggVGd') command('normal ilhs') -- shouldn't trigger mhs-to-rhs mapping - eq({ 'mhs' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ 'mhs' }, api.nvim_buf_get_lines(0, 0, -1, 0)) end) it('can set nowait mappings that fire without waiting', function() - meths.nvim_set_keymap('i', '123456', 'longer', {}) - meths.nvim_set_keymap('i', '123', 'shorter', { nowait = true }) + api.nvim_set_keymap('i', '123456', 'longer', {}) + api.nvim_set_keymap('i', '123', 'shorter', { nowait = true }) -- feed keys one at a time; if all keys arrive atomically, the longer -- mapping will trigger @@ -815,29 +815,29 @@ describe('nvim_set_keymap, nvim_del_keymap', function() feed(c) sleep(5) end - eq({ 'shorter456' }, meths.nvim_buf_get_lines(0, 0, -1, 0)) + eq({ 'shorter456' }, api.nvim_buf_get_lines(0, 0, -1, 0)) end) -- Perform exhaustive tests of basic functionality local mapmodes = { 'n', 'v', 'x', 's', 'o', '!', 'i', 'l', 'c', 't', '', 'ia', 'ca', '!a' } for _, mapmode in ipairs(mapmodes) do it('can set/unset normal mappings in mapmode ' .. mapmode, function() - meths.nvim_set_keymap(mapmode, 'lhs', 'rhs', {}) + api.nvim_set_keymap(mapmode, 'lhs', 'rhs', {}) eq(generate_mapargs(mapmode, 'lhs', 'rhs'), get_mapargs(mapmode, 'lhs')) -- some mapmodes (like 'o') will prevent other mapmodes (like '!') from -- taking effect, so unmap after each mapping - meths.nvim_del_keymap(mapmode, 'lhs') + api.nvim_del_keymap(mapmode, 'lhs') eq({}, get_mapargs(mapmode, 'lhs')) end) end for _, mapmode in ipairs(mapmodes) do it('can set/unset noremap mappings using mapmode ' .. mapmode, function() - meths.nvim_set_keymap(mapmode, 'lhs', 'rhs', { noremap = true }) + api.nvim_set_keymap(mapmode, 'lhs', 'rhs', { noremap = true }) eq(generate_mapargs(mapmode, 'lhs', 'rhs', { noremap = true }), get_mapargs(mapmode, 'lhs')) - meths.nvim_del_keymap(mapmode, 'lhs') + api.nvim_del_keymap(mapmode, 'lhs') eq({}, get_mapargs(mapmode, 'lhs')) end) end @@ -849,12 +849,12 @@ describe('nvim_set_keymap, nvim_del_keymap', function() -- Test with single mappings for _, maparg in ipairs(optnames) do it('can set/unset ' .. mapmode .. '-mappings with maparg: ' .. maparg, function() - meths.nvim_set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = true }) + api.nvim_set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = true }) eq( generate_mapargs(mapmode, 'lhs', 'rhs', { [maparg] = true }), get_mapargs(mapmode, 'lhs') ) - meths.nvim_del_keymap(mapmode, 'lhs') + api.nvim_del_keymap(mapmode, 'lhs') eq({}, get_mapargs(mapmode, 'lhs')) end) it( @@ -864,9 +864,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function() .. maparg .. ', whose value is false', function() - meths.nvim_set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = false }) + api.nvim_set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = false }) eq(generate_mapargs(mapmode, 'lhs', 'rhs'), get_mapargs(mapmode, 'lhs')) - meths.nvim_del_keymap(mapmode, 'lhs') + api.nvim_del_keymap(mapmode, 'lhs') eq({}, get_mapargs(mapmode, 'lhs')) end ) @@ -886,9 +886,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function() .. opt3, function() local opts = { [opt1] = true, [opt2] = false, [opt3] = true } - meths.nvim_set_keymap(mapmode, 'lhs', 'rhs', opts) + api.nvim_set_keymap(mapmode, 'lhs', 'rhs', opts) eq(generate_mapargs(mapmode, 'lhs', 'rhs', opts), get_mapargs(mapmode, 'lhs')) - meths.nvim_del_keymap(mapmode, 'lhs') + api.nvim_del_keymap(mapmode, 'lhs') eq({}, get_mapargs(mapmode, 'lhs')) end ) @@ -926,7 +926,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() exec_lua [[ vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() print('jkl;') end }) ]] - assert.truthy(string.match(funcs.mapcheck('asdf', 'n'), '^<Lua %d+>')) + assert.truthy(string.match(fn.mapcheck('asdf', 'n'), '^<Lua %d+>')) end) it('maparg() returns lua mapping correctly', function() @@ -939,9 +939,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function() ]]) ) - assert.truthy(string.match(funcs.maparg('asdf', 'n'), '^<Lua %d+>')) + assert.truthy(string.match(fn.maparg('asdf', 'n'), '^<Lua %d+>')) - local mapargs = funcs.maparg('asdf', 'n', false, true) + local mapargs = fn.maparg('asdf', 'n', false, true) mapargs.callback = nil mapargs.lhsraw = nil mapargs.lhsrawalt = nil @@ -968,7 +968,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() feed('aa') - eq({ 'π<M-π>foo<' }, meths.nvim_buf_get_lines(0, 0, -1, false)) + eq({ 'π<M-π>foo<' }, api.nvim_buf_get_lines(0, 0, -1, false)) end) it('can make lua expr mappings without replacing keycodes', function() @@ -978,7 +978,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() feed('iaa<esc>') - eq({ '<space>' }, meths.nvim_buf_get_lines(0, 0, -1, false)) + eq({ '<space>' }, api.nvim_buf_get_lines(0, 0, -1, false)) end) it('lua expr mapping returning nil is equivalent to returning an empty string', function() @@ -988,7 +988,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() feed('iaa<esc>') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, false)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, false)) end) it('does not reset pum in lua mapping', function() @@ -1091,7 +1091,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function() end) it('can set descriptions on mappings', function() - meths.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' }) + api.nvim_set_keymap('n', 'lhs', 'rhs', { desc = 'map description' }) eq(generate_mapargs('n', 'lhs', 'rhs', { desc = 'map description' }), get_mapargs('n', 'lhs')) eq('\nn lhs rhs\n map description', helpers.exec_capture('nmap lhs')) end) @@ -1106,10 +1106,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function() ]] feed 'iThe foo and the bar and the foo again<esc>' - eq('The 1 and the bar and the 2 again', meths.nvim_get_current_line()) + eq('The 1 and the bar and the 2 again', api.nvim_get_current_line()) feed ':let x = "The foo is the one"<cr>' - eq('The 3 is the one', meths.nvim_eval 'x') + eq('The 3 is the one', api.nvim_eval 'x') end) it('can define insert mode abbreviations with lua callbacks', function() @@ -1122,10 +1122,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function() ]] feed 'iThe foo and the bar and the foo again<esc>' - eq('The 1 and the bar and the 2 again', meths.nvim_get_current_line()) + eq('The 1 and the bar and the 2 again', api.nvim_get_current_line()) feed ':let x = "The foo is the one"<cr>' - eq('The foo is the one', meths.nvim_eval 'x') + eq('The foo is the one', api.nvim_eval 'x') end) it('can define cmdline mode abbreviations with lua callbacks', function() @@ -1138,10 +1138,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function() ]] feed 'iThe foo and the bar and the foo again<esc>' - eq('The foo and the bar and the foo again', meths.nvim_get_current_line()) + eq('The foo and the bar and the foo again', api.nvim_get_current_line()) feed ':let x = "The foo is the one"<cr>' - eq('The 1 is the one', meths.nvim_eval 'x') + eq('The 1 is the one', api.nvim_eval 'x') end) end) @@ -1164,9 +1164,9 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function() local function make_two_buffers(start_from_first) command('set hidden') - local first_buf = meths.nvim_call_function('bufnr', { '%' }) + local first_buf = api.nvim_call_function('bufnr', { '%' }) command('new') - local second_buf = meths.nvim_call_function('bufnr', { '%' }) + local second_buf = api.nvim_call_function('bufnr', { '%' }) neq(second_buf, first_buf) -- sanity check if start_from_first then @@ -1179,66 +1179,66 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function() it('rejects negative bufnr values', function() eq( 'Wrong type for argument 1 when calling nvim_buf_set_keymap, expecting Buffer', - pcall_err(meths.nvim_buf_set_keymap, -1, '', 'lhs', 'rhs', {}) + pcall_err(api.nvim_buf_set_keymap, -1, '', 'lhs', 'rhs', {}) ) end) it('can set mappings active in the current buffer but not others', function() local first, second = make_two_buffers(true) - meths.nvim_buf_set_keymap(0, '', 'lhs', 'irhs<Esc>', {}) + api.nvim_buf_set_keymap(0, '', 'lhs', 'irhs<Esc>', {}) command('normal lhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, 1, 1)) -- mapping should have no effect in new buffer switch_to_buf(second) command('normal lhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, 1, 1)) -- mapping should remain active in old buffer switch_to_buf(first) command('normal ^lhs') - eq({ 'rhsrhs' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ 'rhsrhs' }, api.nvim_buf_get_lines(0, 0, 1, 1)) end) it('can set local mappings in buffer other than current', function() local first = make_two_buffers(false) - meths.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) + api.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) -- shouldn't do anything command('normal lhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, 1, 1)) -- should take effect switch_to_buf(first) command('normal lhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, 1, 1)) end) it('can disable mappings made in another buffer, inside that buffer', function() local first = make_two_buffers(false) - meths.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) - meths.nvim_buf_del_keymap(first, '', 'lhs') + api.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) + api.nvim_buf_del_keymap(first, '', 'lhs') switch_to_buf(first) -- shouldn't do anything command('normal lhs') - eq({ '' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ '' }, api.nvim_buf_get_lines(0, 0, 1, 1)) end) it("can't disable mappings given wrong buffer handle", function() local first, second = make_two_buffers(false) - meths.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) - eq('E31: No such mapping', pcall_err(meths.nvim_buf_del_keymap, second, '', 'lhs')) + api.nvim_buf_set_keymap(first, '', 'lhs', 'irhs<Esc>', {}) + eq('E31: No such mapping', pcall_err(api.nvim_buf_del_keymap, second, '', 'lhs')) -- should still work switch_to_buf(first) command('normal lhs') - eq({ 'rhs' }, meths.nvim_buf_get_lines(0, 0, 1, 1)) + eq({ 'rhs' }, api.nvim_buf_get_lines(0, 0, 1, 1)) end) it('does not crash when setting mapping in a non-existing buffer #13541', function() - pcall_err(meths.nvim_buf_set_keymap, 100, '', 'lsh', 'irhs<Esc>', {}) + pcall_err(api.nvim_buf_set_keymap, 100, '', 'lsh', 'irhs<Esc>', {}) helpers.assert_alive() end) @@ -1264,7 +1264,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function() feed('aa') - eq({ 'π<M-π>foo<' }, meths.nvim_buf_get_lines(0, 0, -1, false)) + eq({ 'π<M-π>foo<' }, api.nvim_buf_get_lines(0, 0, -1, false)) end) it('can make lua expr mappings without replacing keycodes', function() @@ -1274,7 +1274,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function() feed('iaa<esc>') - eq({ '<space>' }, meths.nvim_buf_get_lines(0, 0, -1, false)) + eq({ '<space>' }, api.nvim_buf_get_lines(0, 0, -1, false)) end) it('can overwrite lua mappings', function() diff --git a/test/functional/api/proc_spec.lua b/test/functional/api/proc_spec.lua index 82a3968ab7..50c441792c 100644 --- a/test/functional/api/proc_spec.lua +++ b/test/functional/api/proc_spec.lua @@ -2,7 +2,7 @@ local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear local eq = helpers.eq -local funcs = helpers.funcs +local fn = helpers.fn local neq = helpers.neq local nvim_argv = helpers.nvim_argv local request = helpers.request @@ -15,28 +15,28 @@ describe('API', function() describe('nvim_get_proc_children', function() it('returns child process ids', function() - local this_pid = funcs.getpid() + local this_pid = fn.getpid() -- Might be non-zero already (left-over from some other test?), -- but this is not what is tested here. local initial_children = request('nvim_get_proc_children', this_pid) - local job1 = funcs.jobstart(nvim_argv) + local job1 = fn.jobstart(nvim_argv) retry(nil, nil, function() eq(#initial_children + 1, #request('nvim_get_proc_children', this_pid)) end) - local job2 = funcs.jobstart(nvim_argv) + local job2 = fn.jobstart(nvim_argv) retry(nil, nil, function() eq(#initial_children + 2, #request('nvim_get_proc_children', this_pid)) end) - funcs.jobstop(job1) + fn.jobstop(job1) retry(nil, nil, function() eq(#initial_children + 1, #request('nvim_get_proc_children', this_pid)) end) - funcs.jobstop(job2) + fn.jobstop(job2) retry(nil, nil, function() eq(#initial_children, #request('nvim_get_proc_children', this_pid)) end) @@ -60,7 +60,7 @@ describe('API', function() describe('nvim_get_proc', function() it('returns process info', function() - local pid = funcs.getpid() + local pid = fn.getpid() local pinfo = request('nvim_get_proc', pid) eq((is_os('win') and 'nvim.exe' or 'nvim'), pinfo.name) eq(pid, pinfo.pid) diff --git a/test/functional/api/server_notifications_spec.lua b/test/functional/api/server_notifications_spec.lua index c80f7f4f7b..f6058b14ee 100644 --- a/test/functional/api/server_notifications_spec.lua +++ b/test/functional/api/server_notifications_spec.lua @@ -2,7 +2,7 @@ local helpers = require('test.functional.helpers')(after_each) local assert_log = helpers.assert_log local eq, clear, eval, command, next_msg = helpers.eq, helpers.clear, helpers.eval, helpers.command, helpers.next_msg -local meths = helpers.meths +local api = helpers.api local exec_lua = helpers.exec_lua local retry = helpers.retry local assert_alive = helpers.assert_alive @@ -14,7 +14,7 @@ describe('notify', function() before_each(function() clear() - channel = meths.nvim_get_api_info()[1] + channel = api.nvim_get_api_info()[1] end) after_each(function() @@ -33,21 +33,21 @@ describe('notify', function() describe('passing 0 as the channel id', function() it('sends the notification/args to all subscribed channels', function() - meths.nvim_subscribe('event2') + api.nvim_subscribe('event2') eval('rpcnotify(0, "event1", 1, 2, 3)') eval('rpcnotify(0, "event2", 4, 5, 6)') eval('rpcnotify(0, "event2", 7, 8, 9)') eq({ 'notification', 'event2', { 4, 5, 6 } }, next_msg()) eq({ 'notification', 'event2', { 7, 8, 9 } }, next_msg()) - meths.nvim_unsubscribe('event2') - meths.nvim_subscribe('event1') + api.nvim_unsubscribe('event2') + api.nvim_subscribe('event1') eval('rpcnotify(0, "event2", 10, 11, 12)') eval('rpcnotify(0, "event1", 13, 14, 15)') eq({ 'notification', 'event1', { 13, 14, 15 } }, next_msg()) end) it('does not crash for deeply nested variable', function() - meths.nvim_set_var('l', {}) + api.nvim_set_var('l', {}) local nest_level = 1000 command(('call map(range(%u), "extend(g:, {\'l\': [g:l]})")'):format(nest_level - 1)) eval('rpcnotify(' .. channel .. ', "event", g:l)') @@ -79,10 +79,10 @@ describe('notify', function() clear { env = { NVIM_LOG_FILE = testlog, } } - meths.nvim_subscribe('event1') - meths.nvim_unsubscribe('doesnotexist') + api.nvim_subscribe('event1') + api.nvim_unsubscribe('doesnotexist') assert_log("tried to unsubscribe unknown event 'doesnotexist'", testlog, 10) - meths.nvim_unsubscribe('event1') + api.nvim_unsubscribe('event1') assert_alive() end) @@ -106,7 +106,7 @@ describe('notify', function() exec_lua([[ return {pcall(vim.rpcrequest, ..., 'nvim_eval', '1+1')}]], catchan) ) retry(nil, 3000, function() - eq({}, meths.nvim_get_chan_info(catchan)) + eq({}, api.nvim_get_chan_info(catchan)) end) -- cat be dead :( end) end) diff --git a/test/functional/api/server_requests_spec.lua b/test/functional/api/server_requests_spec.lua index e06d32f656..5e508e7513 100644 --- a/test/functional/api/server_requests_spec.lua +++ b/test/functional/api/server_requests_spec.lua @@ -4,10 +4,10 @@ local helpers = require('test.functional.helpers')(after_each) local clear, eval = helpers.clear, helpers.eval local eq, neq, run, stop = helpers.eq, helpers.neq, helpers.run, helpers.stop -local nvim_prog, command, funcs = helpers.nvim_prog, helpers.command, helpers.funcs +local nvim_prog, command, fn = helpers.nvim_prog, helpers.command, helpers.fn local source, next_msg = helpers.source, helpers.next_msg local ok = helpers.ok -local meths = helpers.meths +local api = helpers.api local spawn, merge_args = helpers.spawn, helpers.merge_args local set_session = helpers.set_session local pcall_err = helpers.pcall_err @@ -18,7 +18,7 @@ describe('server -> client', function() before_each(function() clear() - cid = meths.nvim_get_api_info()[1] + cid = api.nvim_get_api_info()[1] end) it('handles unexpected closed stream while preparing RPC response', function() @@ -77,15 +77,15 @@ describe('server -> client', function() describe('recursive call', function() it('works', function() local function on_setup() - meths.nvim_set_var('result1', 0) - meths.nvim_set_var('result2', 0) - meths.nvim_set_var('result3', 0) - meths.nvim_set_var('result4', 0) + api.nvim_set_var('result1', 0) + api.nvim_set_var('result2', 0) + api.nvim_set_var('result3', 0) + api.nvim_set_var('result4', 0) command('let g:result1 = rpcrequest(' .. cid .. ', "rcall", 2)') - eq(4, meths.nvim_get_var('result1')) - eq(8, meths.nvim_get_var('result2')) - eq(16, meths.nvim_get_var('result3')) - eq(32, meths.nvim_get_var('result4')) + eq(4, api.nvim_get_var('result1')) + eq(8, api.nvim_get_var('result2')) + eq(16, api.nvim_get_var('result3')) + eq(32, api.nvim_get_var('result4')) stop() end @@ -113,12 +113,12 @@ describe('server -> client', function() it('does not delay notifications during pending request', function() local received = false local function on_setup() - eq('retval', funcs.rpcrequest(cid, 'doit')) + eq('retval', fn.rpcrequest(cid, 'doit')) stop() end local function on_request(method) if method == 'doit' then - funcs.rpcnotify(cid, 'headsup') + fn.rpcnotify(cid, 'headsup') eq(true, received) return 'retval' end @@ -231,8 +231,8 @@ describe('server -> client', function() describe('jobstart()', function() local jobid before_each(function() - local channel = meths.nvim_get_api_info()[1] - meths.nvim_set_var('channel', channel) + local channel = api.nvim_get_api_info()[1] + api.nvim_set_var('channel', channel) source([[ function! s:OnEvent(id, data, event) call rpcnotify(g:channel, a:event, 0, a:data) @@ -244,7 +244,7 @@ describe('server -> client', function() \ 'rpc': v:true \ } ]]) - meths.nvim_set_var('args', { + api.nvim_set_var('args', { nvim_prog, '-ll', 'test/functional/api/rpc_fixture.lua', @@ -256,7 +256,7 @@ describe('server -> client', function() end) after_each(function() - pcall(funcs.jobstop, jobid) + pcall(fn.jobstop, jobid) end) if helpers.skip(helpers.is_os('win')) then @@ -264,16 +264,16 @@ describe('server -> client', function() end it('rpc and text stderr can be combined', function() - local status, rv = pcall(funcs.rpcrequest, jobid, 'poll') + local status, rv = pcall(fn.rpcrequest, jobid, 'poll') if not status then error(string.format('missing nvim Lua module? (%s)', rv)) end eq('ok', rv) - funcs.rpcnotify(jobid, 'ping') + fn.rpcnotify(jobid, 'ping') eq({ 'notification', 'pong', {} }, next_msg()) - eq('done!', funcs.rpcrequest(jobid, 'write_stderr', 'fluff\n')) + eq('done!', fn.rpcrequest(jobid, 'write_stderr', 'fluff\n')) eq({ 'notification', 'stderr', { 0, { 'fluff', '' } } }, next_msg()) - pcall(funcs.rpcrequest, jobid, 'exit') + pcall(fn.rpcrequest, jobid, 'exit') eq({ 'notification', 'stderr', { 0, { '' } } }, next_msg()) eq({ 'notification', 'exit', { 0, 0 } }, next_msg()) end) @@ -282,29 +282,29 @@ describe('server -> client', function() describe('connecting to another (peer) nvim', function() local nvim_argv = merge_args(helpers.nvim_argv, { '--headless' }) local function connect_test(server, mode, address) - local serverpid = funcs.getpid() + local serverpid = fn.getpid() local client = spawn(nvim_argv, false, nil, true) set_session(client) - local clientpid = funcs.getpid() + local clientpid = fn.getpid() neq(serverpid, clientpid) - local id = funcs.sockconnect(mode, address, { rpc = true }) + local id = fn.sockconnect(mode, address, { rpc = true }) ok(id > 0) - funcs.rpcrequest(id, 'nvim_set_current_line', 'hello') - local client_id = funcs.rpcrequest(id, 'nvim_get_api_info')[1] + fn.rpcrequest(id, 'nvim_set_current_line', 'hello') + local client_id = fn.rpcrequest(id, 'nvim_get_api_info')[1] set_session(server) - eq(serverpid, funcs.getpid()) - eq('hello', meths.nvim_get_current_line()) + eq(serverpid, fn.getpid()) + eq('hello', api.nvim_get_current_line()) -- method calls work both ways - funcs.rpcrequest(client_id, 'nvim_set_current_line', 'howdy!') - eq(id, funcs.rpcrequest(client_id, 'nvim_get_api_info')[1]) + fn.rpcrequest(client_id, 'nvim_set_current_line', 'howdy!') + eq(id, fn.rpcrequest(client_id, 'nvim_get_api_info')[1]) set_session(client) - eq(clientpid, funcs.getpid()) - eq('howdy!', meths.nvim_get_current_line()) + eq(clientpid, fn.getpid()) + eq('howdy!', api.nvim_get_current_line()) server:close() client:close() @@ -313,7 +313,7 @@ describe('server -> client', function() it('via named pipe', function() local server = spawn(nvim_argv) set_session(server) - local address = funcs.serverlist()[1] + local address = fn.serverlist()[1] local first = string.sub(address, 1, 1) ok(first == '/' or first == '\\') connect_test(server, 'pipe', address) @@ -322,7 +322,7 @@ describe('server -> client', function() it('via ipv4 address', function() local server = spawn(nvim_argv) set_session(server) - local status, address = pcall(funcs.serverstart, '127.0.0.1:') + local status, address = pcall(fn.serverstart, '127.0.0.1:') if not status then pending('no ipv4 stack') end @@ -333,7 +333,7 @@ describe('server -> client', function() it('via ipv6 address', function() local server = spawn(nvim_argv) set_session(server) - local status, address = pcall(funcs.serverstart, '::1:') + local status, address = pcall(fn.serverstart, '::1:') if not status then pending('no ipv6 stack') end @@ -344,7 +344,7 @@ describe('server -> client', function() it('via hostname', function() local server = spawn(nvim_argv) set_session(server) - local address = funcs.serverstart('localhost:') + local address = fn.serverstart('localhost:') eq('localhost:', string.sub(address, 1, 10)) connect_test(server, 'tcp', address) end) @@ -352,12 +352,12 @@ describe('server -> client', function() it('does not crash on receiving UI events', function() local server = spawn(nvim_argv) set_session(server) - local address = funcs.serverlist()[1] + local address = fn.serverlist()[1] local client = spawn(nvim_argv, false, nil, true) set_session(client) - local id = funcs.sockconnect('pipe', address, { rpc = true }) - funcs.rpcrequest(id, 'nvim_ui_attach', 80, 24, {}) + local id = fn.sockconnect('pipe', address, { rpc = true }) + fn.rpcrequest(id, 'nvim_ui_attach', 80, 24, {}) assert_alive() server:close() @@ -367,18 +367,18 @@ describe('server -> client', function() describe('connecting to its own pipe address', function() it('does not deadlock', function() - local address = funcs.serverlist()[1] + local address = fn.serverlist()[1] local first = string.sub(address, 1, 1) ok(first == '/' or first == '\\') - local serverpid = funcs.getpid() + local serverpid = fn.getpid() - local id = funcs.sockconnect('pipe', address, { rpc = true }) + local id = fn.sockconnect('pipe', address, { rpc = true }) - funcs.rpcrequest(id, 'nvim_set_current_line', 'hello') - eq('hello', meths.nvim_get_current_line()) - eq(serverpid, funcs.rpcrequest(id, 'nvim_eval', 'getpid()')) + fn.rpcrequest(id, 'nvim_set_current_line', 'hello') + eq('hello', api.nvim_get_current_line()) + eq(serverpid, fn.rpcrequest(id, 'nvim_eval', 'getpid()')) - eq(id, funcs.rpcrequest(id, 'nvim_get_api_info')[1]) + eq(id, fn.rpcrequest(id, 'nvim_get_api_info')[1]) end) end) end) diff --git a/test/functional/api/tabpage_spec.lua b/test/functional/api/tabpage_spec.lua index 830b547da5..65b030fc60 100644 --- a/test/functional/api/tabpage_spec.lua +++ b/test/functional/api/tabpage_spec.lua @@ -1,7 +1,7 @@ local helpers = require('test.functional.helpers')(after_each) local clear, eq, ok = helpers.clear, helpers.eq, helpers.ok -local meths = helpers.meths -local funcs = helpers.funcs +local api = helpers.api +local fn = helpers.fn local request = helpers.request local NIL = vim.NIL local pcall_err = helpers.pcall_err @@ -14,33 +14,33 @@ describe('api/tabpage', function() it('works', function() helpers.command('tabnew') helpers.command('vsplit') - local tab1, tab2 = unpack(meths.nvim_list_tabpages()) - local win1, win2, win3 = unpack(meths.nvim_list_wins()) - eq({ win1 }, meths.nvim_tabpage_list_wins(tab1)) - eq({ win2, win3 }, meths.nvim_tabpage_list_wins(tab2)) - eq(win2, meths.nvim_tabpage_get_win(tab2)) - meths.nvim_set_current_win(win3) - eq(win3, meths.nvim_tabpage_get_win(tab2)) + local tab1, tab2 = unpack(api.nvim_list_tabpages()) + local win1, win2, win3 = unpack(api.nvim_list_wins()) + eq({ win1 }, api.nvim_tabpage_list_wins(tab1)) + eq({ win2, win3 }, api.nvim_tabpage_list_wins(tab2)) + eq(win2, api.nvim_tabpage_get_win(tab2)) + api.nvim_set_current_win(win3) + eq(win3, api.nvim_tabpage_get_win(tab2)) end) it('validates args', function() - eq('Invalid tabpage id: 23', pcall_err(meths.nvim_tabpage_list_wins, 23)) + eq('Invalid tabpage id: 23', pcall_err(api.nvim_tabpage_list_wins, 23)) end) end) describe('{get,set,del}_var', function() it('works', function() - meths.nvim_tabpage_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_tabpage_get_var(0, 'lua')) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_eval('t:lua')) - eq(1, funcs.exists('t:lua')) - meths.nvim_tabpage_del_var(0, 'lua') - eq(0, funcs.exists('t:lua')) - eq('Key not found: lua', pcall_err(meths.nvim_tabpage_del_var, 0, 'lua')) - meths.nvim_tabpage_set_var(0, 'lua', 1) + api.nvim_tabpage_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_tabpage_get_var(0, 'lua')) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_eval('t:lua')) + eq(1, fn.exists('t:lua')) + api.nvim_tabpage_del_var(0, 'lua') + eq(0, fn.exists('t:lua')) + eq('Key not found: lua', pcall_err(api.nvim_tabpage_del_var, 0, 'lua')) + api.nvim_tabpage_set_var(0, 'lua', 1) command('lockvar t:lua') - eq('Key is locked: lua', pcall_err(meths.nvim_tabpage_del_var, 0, 'lua')) - eq('Key is locked: lua', pcall_err(meths.nvim_tabpage_set_var, 0, 'lua', 1)) + eq('Key is locked: lua', pcall_err(api.nvim_tabpage_del_var, 0, 'lua')) + eq('Key is locked: lua', pcall_err(api.nvim_tabpage_set_var, 0, 'lua', 1)) end) it('tabpage_set_var returns the old value', function() @@ -61,28 +61,28 @@ describe('api/tabpage', function() describe('get_number', function() it('works', function() - local tabs = meths.nvim_list_tabpages() - eq(1, meths.nvim_tabpage_get_number(tabs[1])) + local tabs = api.nvim_list_tabpages() + eq(1, api.nvim_tabpage_get_number(tabs[1])) helpers.command('tabnew') - local tab1, tab2 = unpack(meths.nvim_list_tabpages()) - eq(1, meths.nvim_tabpage_get_number(tab1)) - eq(2, meths.nvim_tabpage_get_number(tab2)) + local tab1, tab2 = unpack(api.nvim_list_tabpages()) + eq(1, api.nvim_tabpage_get_number(tab1)) + eq(2, api.nvim_tabpage_get_number(tab2)) helpers.command('-tabmove') - eq(2, meths.nvim_tabpage_get_number(tab1)) - eq(1, meths.nvim_tabpage_get_number(tab2)) + eq(2, api.nvim_tabpage_get_number(tab1)) + eq(1, api.nvim_tabpage_get_number(tab2)) end) end) describe('is_valid', function() it('works', function() helpers.command('tabnew') - local tab = meths.nvim_list_tabpages()[2] - meths.nvim_set_current_tabpage(tab) - ok(meths.nvim_tabpage_is_valid(tab)) + local tab = api.nvim_list_tabpages()[2] + api.nvim_set_current_tabpage(tab) + ok(api.nvim_tabpage_is_valid(tab)) helpers.command('tabclose') - ok(not meths.nvim_tabpage_is_valid(tab)) + ok(not api.nvim_tabpage_is_valid(tab)) end) end) end) diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index e74a35e97e..3e1f1ec965 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -6,7 +6,7 @@ local eq = helpers.eq local eval = helpers.eval local exec = helpers.exec local feed = helpers.feed -local meths = helpers.meths +local api = helpers.api local request = helpers.request local pcall_err = helpers.pcall_err @@ -23,39 +23,39 @@ describe('nvim_ui_attach()', function() end) it('validation', function() - eq('No such UI option: foo', pcall_err(meths.nvim_ui_attach, 80, 24, { foo = { 'foo' } })) + eq('No such UI option: foo', pcall_err(api.nvim_ui_attach, 80, 24, { foo = { 'foo' } })) eq( "Invalid 'ext_linegrid': expected Boolean, got Array", - pcall_err(meths.nvim_ui_attach, 80, 24, { ext_linegrid = {} }) + pcall_err(api.nvim_ui_attach, 80, 24, { ext_linegrid = {} }) ) eq( "Invalid 'override': expected Boolean, got Array", - pcall_err(meths.nvim_ui_attach, 80, 24, { override = {} }) + pcall_err(api.nvim_ui_attach, 80, 24, { override = {} }) ) eq( "Invalid 'rgb': expected Boolean, got Array", - pcall_err(meths.nvim_ui_attach, 80, 24, { rgb = {} }) + pcall_err(api.nvim_ui_attach, 80, 24, { rgb = {} }) ) eq( "Invalid 'term_name': expected String, got Boolean", - pcall_err(meths.nvim_ui_attach, 80, 24, { term_name = true }) + pcall_err(api.nvim_ui_attach, 80, 24, { term_name = true }) ) eq( "Invalid 'term_colors': expected Integer, got Boolean", - pcall_err(meths.nvim_ui_attach, 80, 24, { term_colors = true }) + pcall_err(api.nvim_ui_attach, 80, 24, { term_colors = true }) ) eq( "Invalid 'stdin_fd': expected Integer, got String", - pcall_err(meths.nvim_ui_attach, 80, 24, { stdin_fd = 'foo' }) + pcall_err(api.nvim_ui_attach, 80, 24, { stdin_fd = 'foo' }) ) eq( "Invalid 'stdin_tty': expected Boolean, got String", - pcall_err(meths.nvim_ui_attach, 80, 24, { stdin_tty = 'foo' }) + pcall_err(api.nvim_ui_attach, 80, 24, { stdin_tty = 'foo' }) ) eq( "Invalid 'stdout_tty': expected Boolean, got String", - pcall_err(meths.nvim_ui_attach, 80, 24, { stdout_tty = 'foo' }) + pcall_err(api.nvim_ui_attach, 80, 24, { stdout_tty = 'foo' }) ) eq('UI not attached to channel: 1', pcall_err(request, 'nvim_ui_try_resize', 40, 10)) @@ -117,17 +117,17 @@ it('autocmds VimSuspend/VimResume #22041', function() end) eq({ 's', 'r', 's' }, eval('g:ev')) screen.suspended = false - meths.nvim_input_mouse('move', '', '', 0, 0, 0) + api.nvim_input_mouse('move', '', '', 0, 0, 0) eq({ 's', 'r', 's', 'r' }, eval('g:ev')) feed('<C-Z><C-Z><C-Z>') screen:expect(function() eq(true, screen.suspended) end) - meths.nvim_ui_set_focus(false) + api.nvim_ui_set_focus(false) eq({ 's', 'r', 's', 'r', 's' }, eval('g:ev')) screen.suspended = false - meths.nvim_ui_set_focus(true) + api.nvim_ui_set_focus(true) eq({ 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) command('suspend | suspend | suspend') diff --git a/test/functional/api/version_spec.lua b/test/functional/api/version_spec.lua index fefafb8f98..c304f1aa88 100644 --- a/test/functional/api/version_spec.lua +++ b/test/functional/api/version_spec.lua @@ -1,7 +1,6 @@ local helpers = require('test.functional.helpers')(after_each) -local clear, funcs, eq = helpers.clear, helpers.funcs, helpers.eq -local call = helpers.call -local meths = helpers.meths +local clear, fn, eq = helpers.clear, helpers.fn, helpers.eq +local api = helpers.api local function read_mpack_file(fname) local fd = io.open(fname, 'rb') @@ -19,7 +18,7 @@ describe("api_info()['version']", function() before_each(clear) it('returns API level', function() - local version = call('api_info')['version'] + local version = fn.api_info()['version'] local current = version['api_level'] local compat = version['api_compatible'] eq('number', type(current)) @@ -28,7 +27,7 @@ describe("api_info()['version']", function() end) it('returns Nvim version', function() - local version = call('api_info')['version'] + local version = fn.api_info()['version'] local major = version['major'] local minor = version['minor'] local patch = version['patch'] @@ -38,10 +37,10 @@ describe("api_info()['version']", function() eq('number', type(minor)) eq('number', type(patch)) eq('boolean', type(prerelease)) - eq(1, funcs.has('nvim-' .. major .. '.' .. minor .. '.' .. patch)) - eq(0, funcs.has('nvim-' .. major .. '.' .. minor .. '.' .. (patch + 1))) - eq(0, funcs.has('nvim-' .. major .. '.' .. (minor + 1) .. '.' .. patch)) - eq(0, funcs.has('nvim-' .. (major + 1) .. '.' .. minor .. '.' .. patch)) + eq(1, fn.has('nvim-' .. major .. '.' .. minor .. '.' .. patch)) + eq(0, fn.has('nvim-' .. major .. '.' .. minor .. '.' .. (patch + 1))) + eq(0, fn.has('nvim-' .. major .. '.' .. (minor + 1) .. '.' .. patch)) + eq(0, fn.has('nvim-' .. (major + 1) .. '.' .. minor .. '.' .. patch)) assert(build == nil or type(build) == 'string') end) end) @@ -90,14 +89,14 @@ describe('api metadata', function() end end - local api, compat, stable, api_level + local api_info, compat, stable, api_level local old_api = {} setup(function() clear() -- Ensure a session before requesting api_info. - api = meths.nvim_get_api_info()[2] - compat = api.version.api_compatible - api_level = api.version.api_level - if api.version.api_prerelease then + api_info = api.nvim_get_api_info()[2] + compat = api_info.version.api_compatible + api_level = api_info.version.api_level + if api_info.version.api_prerelease then stable = api_level - 1 else stable = api_level @@ -108,7 +107,7 @@ describe('api metadata', function() old_api[level] = read_mpack_file(path) if old_api[level] == nil then local errstr = 'missing metadata fixture for stable level ' .. level .. '. ' - if level == api_level and not api.version.api_prerelease then + if level == api_level and not api_info.version.api_prerelease then errstr = ( errstr .. 'If NVIM_API_CURRENT was bumped, ' @@ -125,7 +124,7 @@ describe('api metadata', function() end) it('functions are compatible with old metadata or have new level', function() - local funcs_new = name_table(api.functions) + local funcs_new = name_table(api_info.functions) local funcs_compat = {} for level = compat, stable do for _, f in ipairs(old_api[level].functions) do @@ -146,7 +145,7 @@ describe('api metadata', function() funcs_compat[level] = name_table(old_api[level].functions) end - for _, f in ipairs(api.functions) do + for _, f in ipairs(api_info.functions) do if f.since <= stable then local f_old = funcs_compat[f.since][f.name] if f_old == nil then @@ -159,7 +158,7 @@ describe('api metadata', function() .. (stable + 1) .. '.' ) - if not api.version.api_prerelease then + if not api_info.version.api_prerelease then errstr = ( errstr .. ' Also bump NVIM_API_CURRENT and set ' @@ -172,7 +171,7 @@ describe('api metadata', function() end end elseif f.since > api_level then - if api.version.api_prerelease then + if api_info.version.api_prerelease then error('New function ' .. f.name .. ' should use since value ' .. api_level) else error( @@ -188,7 +187,7 @@ describe('api metadata', function() end) it('UI events are compatible with old metadata or have new level', function() - local ui_events_new = name_table(api.ui_events) + local ui_events_new = name_table(api_info.ui_events) local ui_events_compat = {} -- UI events were formalized in level 3 @@ -202,7 +201,7 @@ describe('api metadata', function() ui_events_compat[level] = name_table(old_api[level].ui_events) end - for _, e in ipairs(api.ui_events) do + for _, e in ipairs(api_info.ui_events) do if e.since <= stable then local e_old = ui_events_compat[e.since][e.name] if e_old == nil then @@ -214,7 +213,7 @@ describe('api metadata', function() .. (stable + 1) .. '.' ) - if not api.version.api_prerelease then + if not api_info.version.api_prerelease then errstr = ( errstr .. ' Also bump NVIM_API_CURRENT and set ' @@ -224,7 +223,7 @@ describe('api metadata', function() error(errstr) end elseif e.since > api_level then - if api.version.api_prerelease then + if api_info.version.api_prerelease then error('New UI event ' .. e.name .. ' should use since value ' .. api_level) else error( @@ -241,7 +240,7 @@ describe('api metadata', function() it('ui_options are preserved from older levels', function() local available_options = {} - for _, option in ipairs(api.ui_options) do + for _, option in ipairs(api_info.ui_options) do available_options[option] = true end -- UI options were versioned from level 4 diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua index ba2042d585..aa3b4419cc 100644 --- a/test/functional/api/vim_spec.lua +++ b/test/functional/api/vim_spec.lua @@ -8,13 +8,13 @@ local assert_alive = helpers.assert_alive local NIL = vim.NIL local clear, eq, neq = helpers.clear, helpers.eq, helpers.neq local command = helpers.command -local command_output = helpers.meths.command_output +local command_output = helpers.api.command_output local exec = helpers.exec local exec_capture = helpers.exec_capture local eval = helpers.eval local expect = helpers.expect -local funcs = helpers.funcs -local meths = helpers.meths +local fn = helpers.fn +local api = helpers.api local matches = helpers.matches local pesc = vim.pesc local mkdir_p = helpers.mkdir_p @@ -71,7 +71,7 @@ describe('API', function() end) it('handles errors in async requests', function() - local error_types = meths.nvim_get_api_info()[2].error_types + local error_types = api.nvim_get_api_info()[2].error_types nvim_async('bogus') eq({ 'notification', @@ -83,7 +83,7 @@ describe('API', function() end) it('failed async request emits nvim_error_event', function() - local error_types = meths.nvim_get_api_info()[2].error_types + local error_types = api.nvim_get_api_info()[2].error_types nvim_async('command', 'bogus') eq({ 'notification', @@ -98,37 +98,37 @@ describe('API', function() command('split') command('autocmd WinEnter * startinsert') command('wincmd w') - eq({ mode = 'i', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'i', blocking = false }, api.nvim_get_mode()) end) describe('nvim_exec2', function() it('always returns table', function() -- In built version this results into `vim.empty_dict()` - eq({}, meths.nvim_exec2('echo "Hello"', {})) - eq({}, meths.nvim_exec2('echo "Hello"', { output = false })) - eq({ output = 'Hello' }, meths.nvim_exec2('echo "Hello"', { output = true })) + eq({}, api.nvim_exec2('echo "Hello"', {})) + eq({}, api.nvim_exec2('echo "Hello"', { output = false })) + eq({ output = 'Hello' }, api.nvim_exec2('echo "Hello"', { output = true })) end) it('default options', function() -- Should be equivalent to { output = false } - meths.nvim_exec2("let x0 = 'a'", {}) - eq('a', meths.nvim_get_var('x0')) + api.nvim_exec2("let x0 = 'a'", {}) + eq('a', api.nvim_get_var('x0')) end) it('one-line input', function() - meths.nvim_exec2("let x1 = 'a'", { output = false }) - eq('a', meths.nvim_get_var('x1')) + api.nvim_exec2("let x1 = 'a'", { output = false }) + eq('a', api.nvim_get_var('x1')) end) it(':verbose set {option}?', function() - meths.nvim_exec2('set nowrap', { output = false }) + api.nvim_exec2('set nowrap', { output = false }) eq( { output = 'nowrap\n\tLast set from anonymous :source' }, - meths.nvim_exec2('verbose set wrap?', { output = true }) + api.nvim_exec2('verbose set wrap?', { output = true }) ) -- Using script var to force creation of a script item - meths.nvim_exec2( + api.nvim_exec2( [[ let s:a = 1 set nowrap @@ -137,39 +137,39 @@ describe('API', function() ) eq( { output = 'nowrap\n\tLast set from anonymous :source (script id 1)' }, - meths.nvim_exec2('verbose set wrap?', { output = true }) + api.nvim_exec2('verbose set wrap?', { output = true }) ) end) it('multiline input', function() -- Heredoc + empty lines. - meths.nvim_exec2("let x2 = 'a'\n", { output = false }) - eq('a', meths.nvim_get_var('x2')) - meths.nvim_exec2('lua <<EOF\n\n\n\ny=3\n\n\nEOF', { output = false }) - eq(3, meths.nvim_eval("luaeval('y')")) + api.nvim_exec2("let x2 = 'a'\n", { output = false }) + eq('a', api.nvim_get_var('x2')) + api.nvim_exec2('lua <<EOF\n\n\n\ny=3\n\n\nEOF', { output = false }) + eq(3, api.nvim_eval("luaeval('y')")) - eq({}, meths.nvim_exec2('lua <<EOF\ny=3\nEOF', { output = false })) - eq(3, meths.nvim_eval("luaeval('y')")) + eq({}, api.nvim_exec2('lua <<EOF\ny=3\nEOF', { output = false })) + eq(3, api.nvim_eval("luaeval('y')")) -- Multiple statements - meths.nvim_exec2('let x1=1\nlet x2=2\nlet x3=3\n', { output = false }) - eq(1, meths.nvim_eval('x1')) - eq(2, meths.nvim_eval('x2')) - eq(3, meths.nvim_eval('x3')) + api.nvim_exec2('let x1=1\nlet x2=2\nlet x3=3\n', { output = false }) + eq(1, api.nvim_eval('x1')) + eq(2, api.nvim_eval('x2')) + eq(3, api.nvim_eval('x3')) -- Functions - meths.nvim_exec2('function Foo()\ncall setline(1,["xxx"])\nendfunction', { output = false }) - eq('', meths.nvim_get_current_line()) - meths.nvim_exec2('call Foo()', { output = false }) - eq('xxx', meths.nvim_get_current_line()) + api.nvim_exec2('function Foo()\ncall setline(1,["xxx"])\nendfunction', { output = false }) + eq('', api.nvim_get_current_line()) + api.nvim_exec2('call Foo()', { output = false }) + eq('xxx', api.nvim_get_current_line()) -- Autocmds - meths.nvim_exec2('autocmd BufAdd * :let x1 = "Hello"', { output = false }) + api.nvim_exec2('autocmd BufAdd * :let x1 = "Hello"', { output = false }) command('new foo') eq('Hello', request('nvim_eval', 'g:x1')) -- Line continuations - meths.nvim_exec2( + api.nvim_exec2( [[ let abc = #{ \ a: 1, @@ -181,13 +181,13 @@ describe('API', function() eq({ a = 1, c = 3 }, request('nvim_eval', 'g:abc')) -- try no spaces before continuations to catch off-by-one error - meths.nvim_exec2('let ab = #{\n\\a: 98,\n"\\ b: 2\n\\}', { output = false }) + api.nvim_exec2('let ab = #{\n\\a: 98,\n"\\ b: 2\n\\}', { output = false }) eq({ a = 98 }, request('nvim_eval', 'g:ab')) -- Script scope (s:) eq( { output = 'ahoy! script-scoped varrrrr' }, - meths.nvim_exec2( + api.nvim_exec2( [[ let s:pirate = 'script-scoped varrrrr' function! s:avast_ye_hades(s) abort @@ -201,7 +201,7 @@ describe('API', function() eq( { output = "{'output': 'ahoy! script-scoped varrrrr'}" }, - meths.nvim_exec2( + api.nvim_exec2( [[ let s:pirate = 'script-scoped varrrrr' function! Avast_ye_hades(s) abort @@ -229,7 +229,7 @@ describe('API', function() -- Script items are created only on script var access eq( { output = '1\n0' }, - meths.nvim_exec2( + api.nvim_exec2( [[ echo expand("<SID>")->empty() let s:a = 123 @@ -241,7 +241,7 @@ describe('API', function() eq( { output = '1\n0' }, - meths.nvim_exec2( + api.nvim_exec2( [[ echo expand("<SID>")->empty() function s:a() abort @@ -254,7 +254,7 @@ describe('API', function() end) it('non-ASCII input', function() - meths.nvim_exec2( + api.nvim_exec2( [=[ new exe "normal! i ax \n Ax " @@ -263,11 +263,11 @@ describe('API', function() { output = false } ) command('1') - eq(' --a1234-- ', meths.nvim_get_current_line()) + eq(' --a1234-- ', api.nvim_get_current_line()) command('2') - eq(' --A1234-- ', meths.nvim_get_current_line()) + eq(' --A1234-- ', api.nvim_get_current_line()) - meths.nvim_exec2( + api.nvim_exec2( [[ new call setline(1,['xxx']) @@ -276,7 +276,7 @@ describe('API', function() ]], { output = false } ) - eq('ñxx', meths.nvim_get_current_line()) + eq('ñxx', api.nvim_get_current_line()) end) it('execution error', function() @@ -284,7 +284,7 @@ describe('API', function() 'nvim_exec2(): Vim:E492: Not an editor command: bogus_command', pcall_err(request, 'nvim_exec2', 'bogus_command', {}) ) - eq('', meths.nvim_eval('v:errmsg')) -- v:errmsg was not updated. + eq('', api.nvim_eval('v:errmsg')) -- v:errmsg was not updated. eq('', eval('v:exception')) eq( @@ -319,7 +319,7 @@ describe('API', function() write_file(fname, 'echo "hello"\n') local sourcing_fname = tmpname() write_file(sourcing_fname, 'call nvim_exec2("source ' .. fname .. '", {"output": v:false})\n') - meths.nvim_exec2('set verbose=2', { output = false }) + api.nvim_exec2('set verbose=2', { output = false }) local traceback_output = dedent([[ line 0: sourcing "%s" line 0: sourcing "%s" @@ -336,7 +336,7 @@ describe('API', function() ) eq( { output = traceback_output }, - meths.nvim_exec2( + api.nvim_exec2( 'call nvim_exec2("source ' .. sourcing_fname .. '", {"output": v:false})', { output = true } ) @@ -348,10 +348,10 @@ describe('API', function() it('returns output', function() eq( { output = 'this is spinal tap' }, - meths.nvim_exec2('lua <<EOF\n\n\nprint("this is spinal tap")\n\n\nEOF', { output = true }) + api.nvim_exec2('lua <<EOF\n\n\nprint("this is spinal tap")\n\n\nEOF', { output = true }) ) - eq({ output = '' }, meths.nvim_exec2('echo', { output = true })) - eq({ output = 'foo 42' }, meths.nvim_exec2('echo "foo" 42', { output = true })) + eq({ output = '' }, api.nvim_exec2('echo', { output = true })) + eq({ output = 'foo 42' }, api.nvim_exec2('echo "foo" 42', { output = true })) end) it('displays messages when opts.output=false', function() @@ -360,7 +360,7 @@ describe('API', function() screen:set_default_attr_ids({ [0] = { bold = true, foreground = Screen.colors.Blue }, }) - meths.nvim_exec2("echo 'hello'", { output = false }) + api.nvim_exec2("echo 'hello'", { output = false }) screen:expect { grid = [[ ^ | @@ -376,7 +376,7 @@ describe('API', function() screen:set_default_attr_ids({ [0] = { bold = true, foreground = Screen.colors.Blue }, }) - meths.nvim_exec2("echo 'hello'", { output = true }) + api.nvim_exec2("echo 'hello'", { output = true }) screen:expect { grid = [[ ^ | @@ -421,7 +421,7 @@ describe('API', function() local status, rv = pcall(command, 'bogus_command') eq(false, status) -- nvim_command() failed. eq('E492:', string.match(rv, 'E%d*:')) -- Vimscript error was returned. - eq('', meths.nvim_eval('v:errmsg')) -- v:errmsg was not updated. + eq('', api.nvim_eval('v:errmsg')) -- v:errmsg was not updated. eq('', eval('v:exception')) end) @@ -444,18 +444,18 @@ describe('API', function() describe('nvim_command_output', function() it('does not induce hit-enter prompt', function() - meths.nvim_ui_attach(80, 20, {}) + api.nvim_ui_attach(80, 20, {}) -- Induce a hit-enter prompt use nvim_input (non-blocking). command('set cmdheight=1') - meths.nvim_input([[:echo "hi\nhi2"<CR>]]) + api.nvim_input([[:echo "hi\nhi2"<CR>]]) -- Verify hit-enter prompt. - eq({ mode = 'r', blocking = true }, meths.nvim_get_mode()) - meths.nvim_input([[<C-c>]]) + eq({ mode = 'r', blocking = true }, api.nvim_get_mode()) + api.nvim_input([[<C-c>]]) -- Verify NO hit-enter prompt. command_output([[echo "hi\nhi2"]]) - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('captures command output', function() @@ -500,7 +500,7 @@ describe('API', function() eq('E492: Not an editor command: bogus commannnd', string.match(rv, 'E%d*:.*')) eq('', eval('v:errmsg')) -- v:errmsg was not updated. -- Verify NO hit-enter prompt. - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('Vimscript execution error: fails with specific error', function() @@ -509,7 +509,7 @@ describe('API', function() eq('E86: Buffer 42 does not exist', string.match(rv, 'E%d*:.*')) eq('', eval('v:errmsg')) -- v:errmsg was not updated. -- Verify NO hit-enter prompt. - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('does not cause heap buffer overflow with large output', function() @@ -521,12 +521,12 @@ describe('API', function() it('works', function() command('let g:v1 = "a"') command('let g:v2 = [1, 2, {"v3": 3}]') - eq({ v1 = 'a', v2 = { 1, 2, { v3 = 3 } } }, meths.nvim_eval('g:')) + eq({ v1 = 'a', v2 = { 1, 2, { v3 = 3 } } }, api.nvim_eval('g:')) end) it('handles NULL-initialized strings correctly', function() - eq(1, meths.nvim_eval("matcharg(1) == ['', '']")) - eq({ '', '' }, meths.nvim_eval('matcharg(1)')) + eq(1, api.nvim_eval("matcharg(1) == ['', '']")) + eq({ '', '' }, api.nvim_eval('matcharg(1)')) end) it('works under deprecated name', function() @@ -541,10 +541,10 @@ describe('API', function() describe('nvim_call_function', function() it('works', function() - meths.nvim_call_function('setqflist', { { { filename = 'something', lnum = 17 } }, 'r' }) - eq(17, meths.nvim_call_function('getqflist', {})[1].lnum) - eq(17, meths.nvim_call_function('eval', { 17 })) - eq('foo', meths.nvim_call_function('simplify', { 'this/./is//redundant/../../../foo' })) + api.nvim_call_function('setqflist', { { { filename = 'something', lnum = 17 } }, 'r' }) + eq(17, api.nvim_call_function('getqflist', {})[1].lnum) + eq(17, api.nvim_call_function('eval', { 17 })) + eq('foo', api.nvim_call_function('simplify', { 'this/./is//redundant/../../../foo' })) end) it('Vimscript validation error: returns specific error, does NOT update v:errmsg', function() @@ -619,18 +619,18 @@ describe('API', function() ]]) -- :help Dictionary-function - eq('Hello, World!', meths.nvim_call_dict_function('g:test_dict_fn', 'F', { 'World' })) + eq('Hello, World!', api.nvim_call_dict_function('g:test_dict_fn', 'F', { 'World' })) -- Funcref is sent as NIL over RPC. - eq({ greeting = 'Hello', F = NIL }, meths.nvim_get_var('test_dict_fn')) + eq({ greeting = 'Hello', F = NIL }, api.nvim_get_var('test_dict_fn')) -- :help numbered-function - eq('Hi, Moon ...', meths.nvim_call_dict_function('g:test_dict_fn2', 'F2', { 'Moon' })) + eq('Hi, Moon ...', api.nvim_call_dict_function('g:test_dict_fn2', 'F2', { 'Moon' })) -- Funcref is sent as NIL over RPC. - eq({ greeting = 'Hi', F2 = NIL }, meths.nvim_get_var('test_dict_fn2')) + eq({ greeting = 'Hi', F2 = NIL }, api.nvim_get_var('test_dict_fn2')) -- Function specified via RPC dict. source('function! G() dict\n return "@".(self.result)."@"\nendfunction') - eq('@it works@', meths.nvim_call_dict_function({ result = 'it works', G = 'G' }, 'G', {})) + eq('@it works@', api.nvim_call_dict_function({ result = 'it works', G = 'G' }, 'G', {})) end) it('validation', function() @@ -675,8 +675,8 @@ describe('API', function() local start_dir before_each(function() - funcs.mkdir('Xtestdir') - start_dir = funcs.getcwd() + fn.mkdir('Xtestdir') + start_dir = fn.getcwd() end) after_each(function() @@ -684,84 +684,84 @@ describe('API', function() end) it('works', function() - meths.nvim_set_current_dir('Xtestdir') - eq(funcs.getcwd(), start_dir .. helpers.get_pathsep() .. 'Xtestdir') + api.nvim_set_current_dir('Xtestdir') + eq(fn.getcwd(), start_dir .. helpers.get_pathsep() .. 'Xtestdir') end) it('sets previous directory', function() - meths.nvim_set_current_dir('Xtestdir') + api.nvim_set_current_dir('Xtestdir') command('cd -') - eq(funcs.getcwd(), start_dir) + eq(fn.getcwd(), start_dir) end) end) describe('nvim_exec_lua', function() it('works', function() - meths.nvim_exec_lua('vim.api.nvim_set_var("test", 3)', {}) - eq(3, meths.nvim_get_var('test')) + api.nvim_exec_lua('vim.api.nvim_set_var("test", 3)', {}) + eq(3, api.nvim_get_var('test')) - eq(17, meths.nvim_exec_lua('a, b = ...\nreturn a + b', { 10, 7 })) + eq(17, api.nvim_exec_lua('a, b = ...\nreturn a + b', { 10, 7 })) - eq(NIL, meths.nvim_exec_lua('function xx(a,b)\nreturn a..b\nend', {})) - eq('xy', meths.nvim_exec_lua('return xx(...)', { 'x', 'y' })) + eq(NIL, api.nvim_exec_lua('function xx(a,b)\nreturn a..b\nend', {})) + eq('xy', api.nvim_exec_lua('return xx(...)', { 'x', 'y' })) -- Deprecated name: nvim_execute_lua. - eq('xy', meths.nvim_execute_lua('return xx(...)', { 'x', 'y' })) + eq('xy', api.nvim_execute_lua('return xx(...)', { 'x', 'y' })) end) it('reports errors', function() eq( [[Error loading lua: [string "<nvim>"]:0: '=' expected near '+']], - pcall_err(meths.nvim_exec_lua, 'a+*b', {}) + pcall_err(api.nvim_exec_lua, 'a+*b', {}) ) eq( [[Error loading lua: [string "<nvim>"]:0: unexpected symbol near '1']], - pcall_err(meths.nvim_exec_lua, '1+2', {}) + pcall_err(api.nvim_exec_lua, '1+2', {}) ) eq( [[Error loading lua: [string "<nvim>"]:0: unexpected symbol]], - pcall_err(meths.nvim_exec_lua, 'aa=bb\0', {}) + pcall_err(api.nvim_exec_lua, 'aa=bb\0', {}) ) eq( [[attempt to call global 'bork' (a nil value)]], - pcall_err(meths.nvim_exec_lua, 'bork()', {}) + pcall_err(api.nvim_exec_lua, 'bork()', {}) ) - eq('did\nthe\nfail', pcall_err(meths.nvim_exec_lua, 'error("did\\nthe\\nfail")', {})) + eq('did\nthe\nfail', pcall_err(api.nvim_exec_lua, 'error("did\\nthe\\nfail")', {})) end) it('uses native float values', function() - eq(2.5, meths.nvim_exec_lua('return select(1, ...)', { 2.5 })) - eq('2.5', meths.nvim_exec_lua('return vim.inspect(...)', { 2.5 })) + eq(2.5, api.nvim_exec_lua('return select(1, ...)', { 2.5 })) + eq('2.5', api.nvim_exec_lua('return vim.inspect(...)', { 2.5 })) -- "special" float values are still accepted as return values. - eq(2.5, meths.nvim_exec_lua("return vim.api.nvim_eval('2.5')", {})) + eq(2.5, api.nvim_exec_lua("return vim.api.nvim_eval('2.5')", {})) eq( '{\n [false] = 2.5,\n [true] = 3\n}', - meths.nvim_exec_lua("return vim.inspect(vim.api.nvim_eval('2.5'))", {}) + api.nvim_exec_lua("return vim.inspect(vim.api.nvim_eval('2.5'))", {}) ) end) end) describe('nvim_notify', function() it('can notify a info message', function() - meths.nvim_notify('hello world', 2, {}) + api.nvim_notify('hello world', 2, {}) end) it('can be overridden', function() command('lua vim.notify = function(...) return 42 end') - eq(42, meths.nvim_exec_lua("return vim.notify('Hello world')", {})) - meths.nvim_notify('hello world', 4, {}) + eq(42, api.nvim_exec_lua("return vim.notify('Hello world')", {})) + api.nvim_notify('hello world', 4, {}) end) end) describe('nvim_input', function() it('Vimscript error: does NOT fail, updates v:errmsg', function() - local status, _ = pcall(meths.nvim_input, ':call bogus_fn()<CR>') - local v_errnum = string.match(meths.nvim_eval('v:errmsg'), 'E%d*:') + local status, _ = pcall(api.nvim_input, ':call bogus_fn()<CR>') + local v_errnum = string.match(api.nvim_eval('v:errmsg'), 'E%d*:') eq(true, status) -- nvim_input() did not fail. eq('E117:', v_errnum) -- v:errmsg was updated. end) @@ -779,23 +779,23 @@ describe('API', function() end) local function run_streamed_paste_tests() it('stream: multiple chunks form one undo-block', function() - meths.nvim_paste('1/chunk 1 (start)\n', true, 1) - meths.nvim_paste('1/chunk 2 (end)\n', true, 3) + api.nvim_paste('1/chunk 1 (start)\n', true, 1) + api.nvim_paste('1/chunk 2 (end)\n', true, 3) local expected1 = [[ 1/chunk 1 (start) 1/chunk 2 (end) ]] expect(expected1) - meths.nvim_paste('2/chunk 1 (start)\n', true, 1) - meths.nvim_paste('2/chunk 2\n', true, 2) + api.nvim_paste('2/chunk 1 (start)\n', true, 1) + api.nvim_paste('2/chunk 2\n', true, 2) expect([[ 1/chunk 1 (start) 1/chunk 2 (end) 2/chunk 1 (start) 2/chunk 2 ]]) - meths.nvim_paste('2/chunk 3\n', true, 2) - meths.nvim_paste('2/chunk 4 (end)\n', true, 3) + api.nvim_paste('2/chunk 3\n', true, 2) + api.nvim_paste('2/chunk 4 (end)\n', true, 3) expect([[ 1/chunk 1 (start) 1/chunk 2 (end) @@ -811,10 +811,10 @@ describe('API', function() -- If nvim_paste() calls :undojoin without making any changes, this makes it an error. feed('afoo<Esc>u') feed('i') - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('aaaaaabbbbbbccccccdddddd') feed('<Esc>u') expect('') @@ -830,17 +830,17 @@ describe('API', function() expect('') end) it('pasting one line', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('aaaaaabbbbbbccccccdddddd') end) it('pasting multiple lines', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ aaaaaa bbbbbb @@ -860,17 +860,17 @@ describe('API', function() expect('||') end) it('pasting one line', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('|aaaaaabbbbbbccccccdddddd|') end) it('pasting multiple lines', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ |aaaaaa bbbbbb @@ -890,17 +890,17 @@ describe('API', function() expect('||') end) it('pasting one line', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('||aaaaaabbbbbbccccccdddddd') end) it('pasting multiple lines', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ ||aaaaaa bbbbbb @@ -924,24 +924,24 @@ describe('API', function() xxx|]]) end) it('with non-empty chunks', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('|aaaaaabbbbbbccccccdddddd|') end) it('with empty first chunk', function() - meths.nvim_paste('', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('|bbbbbbccccccdddddd|') end) it('with all chunks empty', function() - meths.nvim_paste('', false, 1) - meths.nvim_paste('', false, 2) - meths.nvim_paste('', false, 2) - meths.nvim_paste('', false, 3) + api.nvim_paste('', false, 1) + api.nvim_paste('', false, 2) + api.nvim_paste('', false, 2) + api.nvim_paste('', false, 3) expect('||') end) end) @@ -959,17 +959,17 @@ describe('API', function() xxx]]) end) it('with non-empty chunks', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('||aaaaaabbbbbbccccccdddddd') end) it('with empty first chunk', function() - meths.nvim_paste('', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('||bbbbbbccccccdddddd') end) end) @@ -987,17 +987,17 @@ describe('API', function() xxx]]) end) it('with non-empty chunks', function() - meths.nvim_paste('aaaaaa', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('||aaaaaabbbbbbccccccdddddd') end) it('with empty first chunk', function() - meths.nvim_paste('', false, 1) - meths.nvim_paste('bbbbbb', false, 2) - meths.nvim_paste('cccccc', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('', false, 1) + api.nvim_paste('bbbbbb', false, 2) + api.nvim_paste('cccccc', false, 2) + api.nvim_paste('dddddd', false, 3) expect('||bbbbbbccccccdddddd') end) end) @@ -1020,10 +1020,10 @@ describe('API', function() feed('ggV') end) it('pasting text without final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ aaaaaa bbbbbb @@ -1032,10 +1032,10 @@ describe('API', function() 123456789]]) end) it('pasting text with final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd\n', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd\n', false, 3) expect([[ aaaaaa bbbbbb @@ -1050,10 +1050,10 @@ describe('API', function() feed('2ggV') end) it('pasting text without final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ 123456789 aaaaaa @@ -1062,10 +1062,10 @@ describe('API', function() dddddd123456789]]) end) it('pasting text with final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd\n', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd\n', false, 3) expect([[ 123456789 aaaaaa @@ -1080,10 +1080,10 @@ describe('API', function() feed('3ggV') end) it('pasting text without final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ 123456789 987654321 @@ -1093,10 +1093,10 @@ describe('API', function() dddddd]]) end) it('pasting text with final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd\n', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd\n', false, 3) expect([[ 123456789 987654321 @@ -1112,10 +1112,10 @@ describe('API', function() feed('ggVG') end) it('pasting text without final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd', false, 3) expect([[ aaaaaa bbbbbb @@ -1123,10 +1123,10 @@ describe('API', function() dddddd]]) end) it('pasting text with final new line', function() - meths.nvim_paste('aaaaaa\n', false, 1) - meths.nvim_paste('bbbbbb\n', false, 2) - meths.nvim_paste('cccccc\n', false, 2) - meths.nvim_paste('dddddd\n', false, 3) + api.nvim_paste('aaaaaa\n', false, 1) + api.nvim_paste('bbbbbb\n', false, 2) + api.nvim_paste('cccccc\n', false, 2) + api.nvim_paste('dddddd\n', false, 3) expect([[ aaaaaa bbbbbb @@ -1148,71 +1148,71 @@ describe('API', function() end) it('non-streaming', function() -- With final "\n". - meths.nvim_paste('line 1\nline 2\nline 3\n', true, -1) + api.nvim_paste('line 1\nline 2\nline 3\n', true, -1) expect([[ line 1 line 2 line 3 ]]) - eq({ 0, 4, 1, 0 }, funcs.getpos('.')) -- Cursor follows the paste. - eq(false, meths.nvim_get_option_value('paste', {})) + eq({ 0, 4, 1, 0 }, fn.getpos('.')) -- Cursor follows the paste. + eq(false, api.nvim_get_option_value('paste', {})) command('%delete _') -- Without final "\n". - meths.nvim_paste('line 1\nline 2\nline 3', true, -1) + api.nvim_paste('line 1\nline 2\nline 3', true, -1) expect([[ line 1 line 2 line 3]]) - eq({ 0, 3, 6, 0 }, funcs.getpos('.')) + eq({ 0, 3, 6, 0 }, fn.getpos('.')) command('%delete _') -- CRLF #10872 - meths.nvim_paste('line 1\r\nline 2\r\nline 3\r\n', true, -1) + api.nvim_paste('line 1\r\nline 2\r\nline 3\r\n', true, -1) expect([[ line 1 line 2 line 3 ]]) - eq({ 0, 4, 1, 0 }, funcs.getpos('.')) + eq({ 0, 4, 1, 0 }, fn.getpos('.')) command('%delete _') -- CRLF without final "\n". - meths.nvim_paste('line 1\r\nline 2\r\nline 3\r', true, -1) + api.nvim_paste('line 1\r\nline 2\r\nline 3\r', true, -1) expect([[ line 1 line 2 line 3 ]]) - eq({ 0, 4, 1, 0 }, funcs.getpos('.')) + eq({ 0, 4, 1, 0 }, fn.getpos('.')) command('%delete _') -- CRLF without final "\r\n". - meths.nvim_paste('line 1\r\nline 2\r\nline 3', true, -1) + api.nvim_paste('line 1\r\nline 2\r\nline 3', true, -1) expect([[ line 1 line 2 line 3]]) - eq({ 0, 3, 6, 0 }, funcs.getpos('.')) + eq({ 0, 3, 6, 0 }, fn.getpos('.')) command('%delete _') -- Various other junk. - meths.nvim_paste('line 1\r\n\r\rline 2\nline 3\rline 4\r', true, -1) + api.nvim_paste('line 1\r\n\r\rline 2\nline 3\rline 4\r', true, -1) expect('line 1\n\n\nline 2\nline 3\nline 4\n') - eq({ 0, 7, 1, 0 }, funcs.getpos('.')) - eq(false, meths.nvim_get_option_value('paste', {})) + eq({ 0, 7, 1, 0 }, fn.getpos('.')) + eq(false, api.nvim_get_option_value('paste', {})) end) it('Replace-mode', function() -- Within single line - meths.nvim_put({ 'aabbccdd', 'eeffgghh', 'iijjkkll' }, 'c', true, false) + api.nvim_put({ 'aabbccdd', 'eeffgghh', 'iijjkkll' }, 'c', true, false) command('normal l') command('startreplace') - meths.nvim_paste('123456', true, -1) + api.nvim_paste('123456', true, -1) expect([[ a123456d eeffgghh iijjkkll]]) command('%delete _') -- Across lines - meths.nvim_put({ 'aabbccdd', 'eeffgghh', 'iijjkkll' }, 'c', true, false) + api.nvim_put({ 'aabbccdd', 'eeffgghh', 'iijjkkll' }, 'c', true, false) command('normal l') command('startreplace') - meths.nvim_paste('123\n456', true, -1) + api.nvim_paste('123\n456', true, -1) expect([[ a123 456d @@ -1221,30 +1221,30 @@ describe('API', function() end) it('when searching in Visual mode', function() feed('v/') - meths.nvim_paste('aabbccdd', true, -1) - eq('aabbccdd', funcs.getcmdline()) + api.nvim_paste('aabbccdd', true, -1) + eq('aabbccdd', fn.getcmdline()) expect('') end) it('mappings are disabled in Cmdline mode', function() command('cnoremap a b') feed(':') - meths.nvim_paste('a', true, -1) - eq('a', funcs.getcmdline()) + api.nvim_paste('a', true, -1) + eq('a', fn.getcmdline()) end) it('pasted text is saved in cmdline history when <CR> comes from mapping #20957', function() command('cnoremap <CR> <CR>') feed(':') - meths.nvim_paste('echo', true, -1) - eq('', funcs.histget(':')) + api.nvim_paste('echo', true, -1) + eq('', fn.histget(':')) feed('<CR>') - eq('echo', funcs.histget(':')) + eq('echo', fn.histget(':')) end) it('pasting with empty last chunk in Cmdline mode', function() local screen = Screen.new(20, 4) screen:attach() feed(':') - meths.nvim_paste('Foo', true, 1) - meths.nvim_paste('', true, 3) + api.nvim_paste('Foo', true, 1) + api.nvim_paste('', true, 3) screen:expect([[ | ~ |*2 @@ -1255,7 +1255,7 @@ describe('API', function() local screen = Screen.new(20, 4) screen:attach() feed(':') - meths.nvim_paste('normal! \023\022\006\027', true, -1) + api.nvim_paste('normal! \023\022\006\027', true, -1) screen:expect([[ | ~ |*2 @@ -1263,12 +1263,12 @@ describe('API', function() ]]) end) it('crlf=false does not break lines at CR, CRLF', function() - meths.nvim_paste('line 1\r\n\r\rline 2\nline 3\rline 4\r', false, -1) + api.nvim_paste('line 1\r\n\r\rline 2\nline 3\rline 4\r', false, -1) expect('line 1\r\n\r\rline 2\nline 3\rline 4\r') - eq({ 0, 3, 14, 0 }, funcs.getpos('.')) + eq({ 0, 3, 14, 0 }, fn.getpos('.')) end) it('vim.paste() failure', function() - meths.nvim_exec_lua('vim.paste = (function(lines, phase) error("fake fail") end)', {}) + api.nvim_exec_lua('vim.paste = (function(lines, phase) error("fake fail") end)', {}) eq('fake fail', pcall_err(request, 'nvim_paste', 'line 1\nline 2\nline 3', false, 1)) end) end) @@ -1290,78 +1290,78 @@ describe('API', function() end) it('inserts text', function() -- linewise - meths.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'l', true, true) + api.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'l', true, true) expect([[ line 1 line 2 line 3]]) - eq({ 0, 4, 1, 0 }, funcs.getpos('.')) + eq({ 0, 4, 1, 0 }, fn.getpos('.')) command('%delete _') -- charwise - meths.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'c', true, false) + api.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'c', true, false) expect([[ line 1 line 2 line 3]]) - eq({ 0, 1, 1, 0 }, funcs.getpos('.')) -- follow=false + eq({ 0, 1, 1, 0 }, fn.getpos('.')) -- follow=false -- blockwise - meths.nvim_put({ 'AA', 'BB' }, 'b', true, true) + api.nvim_put({ 'AA', 'BB' }, 'b', true, true) expect([[ lAAine 1 lBBine 2 line 3]]) - eq({ 0, 2, 4, 0 }, funcs.getpos('.')) + eq({ 0, 2, 4, 0 }, fn.getpos('.')) command('%delete _') -- Empty lines list. - meths.nvim_put({}, 'c', true, true) - eq({ 0, 1, 1, 0 }, funcs.getpos('.')) + api.nvim_put({}, 'c', true, true) + eq({ 0, 1, 1, 0 }, fn.getpos('.')) expect([[]]) -- Single empty line. - meths.nvim_put({ '' }, 'c', true, true) - eq({ 0, 1, 1, 0 }, funcs.getpos('.')) + api.nvim_put({ '' }, 'c', true, true) + eq({ 0, 1, 1, 0 }, fn.getpos('.')) expect([[ ]]) - meths.nvim_put({ 'AB' }, 'c', true, true) + api.nvim_put({ 'AB' }, 'c', true, true) -- after=false, follow=true - meths.nvim_put({ 'line 1', 'line 2' }, 'c', false, true) + api.nvim_put({ 'line 1', 'line 2' }, 'c', false, true) expect([[ Aline 1 line 2B]]) - eq({ 0, 2, 7, 0 }, funcs.getpos('.')) + eq({ 0, 2, 7, 0 }, fn.getpos('.')) command('%delete _') - meths.nvim_put({ 'AB' }, 'c', true, true) + api.nvim_put({ 'AB' }, 'c', true, true) -- after=false, follow=false - meths.nvim_put({ 'line 1', 'line 2' }, 'c', false, false) + api.nvim_put({ 'line 1', 'line 2' }, 'c', false, false) expect([[ Aline 1 line 2B]]) - eq({ 0, 1, 2, 0 }, funcs.getpos('.')) - eq('', meths.nvim_eval('v:errmsg')) + eq({ 0, 1, 2, 0 }, fn.getpos('.')) + eq('', api.nvim_eval('v:errmsg')) end) it('detects charwise/linewise text (empty {type})', function() -- linewise (final item is empty string) - meths.nvim_put({ 'line 1', 'line 2', 'line 3', '' }, '', true, true) + api.nvim_put({ 'line 1', 'line 2', 'line 3', '' }, '', true, true) expect([[ line 1 line 2 line 3]]) - eq({ 0, 4, 1, 0 }, funcs.getpos('.')) + eq({ 0, 4, 1, 0 }, fn.getpos('.')) command('%delete _') -- charwise (final item is non-empty) - meths.nvim_put({ 'line 1', 'line 2', 'line 3' }, '', true, true) + api.nvim_put({ 'line 1', 'line 2', 'line 3' }, '', true, true) expect([[ line 1 line 2 line 3]]) - eq({ 0, 3, 6, 0 }, funcs.getpos('.')) + eq({ 0, 3, 6, 0 }, fn.getpos('.')) end) it('allows block width', function() -- behave consistently with setreg(); support "\022{NUM}" return by getregtype() - meths.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'l', false, false) + api.nvim_put({ 'line 1', 'line 2', 'line 3' }, 'l', false, false) expect([[ line 1 line 2 @@ -1369,69 +1369,69 @@ describe('API', function() ]]) -- larger width create spaces - meths.nvim_put({ 'a', 'bc' }, 'b3', false, false) + api.nvim_put({ 'a', 'bc' }, 'b3', false, false) expect([[ a line 1 bc line 2 line 3 ]]) -- smaller width is ignored - meths.nvim_put({ 'xxx', 'yyy' }, '\0221', false, true) + api.nvim_put({ 'xxx', 'yyy' }, '\0221', false, true) expect([[ xxxa line 1 yyybc line 2 line 3 ]]) - eq("Invalid 'type': 'bx'", pcall_err(meths.nvim_put, { 'xxx', 'yyy' }, 'bx', false, true)) - eq("Invalid 'type': 'b3x'", pcall_err(meths.nvim_put, { 'xxx', 'yyy' }, 'b3x', false, true)) + eq("Invalid 'type': 'bx'", pcall_err(api.nvim_put, { 'xxx', 'yyy' }, 'bx', false, true)) + eq("Invalid 'type': 'b3x'", pcall_err(api.nvim_put, { 'xxx', 'yyy' }, 'b3x', false, true)) end) end) describe('nvim_strwidth', function() it('works', function() - eq(3, meths.nvim_strwidth('abc')) + eq(3, api.nvim_strwidth('abc')) -- 6 + (neovim) -- 19 * 2 (each japanese character occupies two cells) - eq(44, meths.nvim_strwidth('neovimのデザインかなりまともなのになってる。')) + eq(44, api.nvim_strwidth('neovimのデザインかなりまともなのになってる。')) end) it('cannot handle NULs', function() - eq(0, meths.nvim_strwidth('\0abc')) + eq(0, api.nvim_strwidth('\0abc')) end) end) describe('nvim_get_current_line, nvim_set_current_line', function() it('works', function() - eq('', meths.nvim_get_current_line()) - meths.nvim_set_current_line('abc') - eq('abc', meths.nvim_get_current_line()) + eq('', api.nvim_get_current_line()) + api.nvim_set_current_line('abc') + eq('abc', api.nvim_get_current_line()) end) end) describe('set/get/del variables', function() it('validation', function() - eq('Key not found: bogus', pcall_err(meths.nvim_get_var, 'bogus')) - eq('Key not found: bogus', pcall_err(meths.nvim_del_var, 'bogus')) + eq('Key not found: bogus', pcall_err(api.nvim_get_var, 'bogus')) + eq('Key not found: bogus', pcall_err(api.nvim_del_var, 'bogus')) end) it('nvim_get_var, nvim_set_var, nvim_del_var', function() - meths.nvim_set_var('lua', { 1, 2, { ['3'] = 1 } }) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_get_var('lua')) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_eval('g:lua')) - eq(1, funcs.exists('g:lua')) - meths.nvim_del_var('lua') - eq(0, funcs.exists('g:lua')) - eq('Key not found: lua', pcall_err(meths.nvim_del_var, 'lua')) - meths.nvim_set_var('lua', 1) + api.nvim_set_var('lua', { 1, 2, { ['3'] = 1 } }) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_get_var('lua')) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_eval('g:lua')) + eq(1, fn.exists('g:lua')) + api.nvim_del_var('lua') + eq(0, fn.exists('g:lua')) + eq('Key not found: lua', pcall_err(api.nvim_del_var, 'lua')) + api.nvim_set_var('lua', 1) -- Empty keys are allowed in Vim dicts (and msgpack). - meths.nvim_set_var('dict_empty_key', { [''] = 'empty key' }) - eq({ [''] = 'empty key' }, meths.nvim_get_var('dict_empty_key')) + api.nvim_set_var('dict_empty_key', { [''] = 'empty key' }) + eq({ [''] = 'empty key' }, api.nvim_get_var('dict_empty_key')) -- Set locked g: var. command('lockvar lua') - eq('Key is locked: lua', pcall_err(meths.nvim_del_var, 'lua')) - eq('Key is locked: lua', pcall_err(meths.nvim_set_var, 'lua', 1)) + eq('Key is locked: lua', pcall_err(api.nvim_del_var, 'lua')) + eq('Key is locked: lua', pcall_err(api.nvim_set_var, 'lua', 1)) exec([[ function Test() @@ -1441,8 +1441,8 @@ describe('API', function() let g:Unknown_func = function('Test') let g:Unknown_script_func = function('s:Test') ]]) - eq(NIL, meths.nvim_get_var('Unknown_func')) - eq(NIL, meths.nvim_get_var('Unknown_script_func')) + eq(NIL, api.nvim_get_var('Unknown_func')) + eq(NIL, api.nvim_get_var('Unknown_script_func')) -- Check if autoload works properly local pathsep = helpers.get_pathsep() @@ -1454,40 +1454,40 @@ describe('API', function() write_file(autoload_file, [[let testload#value = 2]]) clear { args_rm = { '-u' }, env = { XDG_CONFIG_HOME = xconfig, XDG_DATA_HOME = xdata } } - eq(2, meths.nvim_get_var('testload#value')) + eq(2, api.nvim_get_var('testload#value')) rmdir('Xhome') end) it('nvim_get_vvar, nvim_set_vvar', function() 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.nvim_set_vvar('errmsg', 'set by API') - eq('set by API', meths.nvim_get_vvar('errmsg')) - meths.nvim_set_vvar('errmsg', 42) + api.nvim_set_vvar('errmsg', 'set by API') + eq('set by API', api.nvim_get_vvar('errmsg')) + api.nvim_set_vvar('errmsg', 42) eq('42', eval('v:errmsg')) - meths.nvim_set_vvar('oldfiles', { 'one', 'two' }) + api.nvim_set_vvar('oldfiles', { 'one', 'two' }) eq({ 'one', 'two' }, eval('v:oldfiles')) - meths.nvim_set_vvar('oldfiles', {}) + api.nvim_set_vvar('oldfiles', {}) eq({}, eval('v:oldfiles')) eq( 'Setting v:oldfiles to value with wrong type', - pcall_err(meths.nvim_set_vvar, 'oldfiles', 'a') + pcall_err(api.nvim_set_vvar, 'oldfiles', 'a') ) eq({}, eval('v:oldfiles')) feed('i foo foo foo<Esc>0/foo<CR>') - eq({ 1, 1 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 1 }, api.nvim_win_get_cursor(0)) eq(1, eval('v:searchforward')) feed('n') - eq({ 1, 5 }, meths.nvim_win_get_cursor(0)) - meths.nvim_set_vvar('searchforward', 0) + eq({ 1, 5 }, api.nvim_win_get_cursor(0)) + api.nvim_set_vvar('searchforward', 0) eq(0, eval('v:searchforward')) feed('n') - eq({ 1, 1 }, meths.nvim_win_get_cursor(0)) - meths.nvim_set_vvar('searchforward', 1) + eq({ 1, 1 }, api.nvim_win_get_cursor(0)) + api.nvim_set_vvar('searchforward', 1) eq(1, eval('v:searchforward')) feed('n') - eq({ 1, 5 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 5 }, api.nvim_win_get_cursor(0)) local screen = Screen.new(60, 3) screen:set_default_attr_ids({ @@ -1503,7 +1503,7 @@ describe('API', function() | ]], } - meths.nvim_set_vvar('hlsearch', 0) + api.nvim_set_vvar('hlsearch', 0) eq(0, eval('v:hlsearch')) screen:expect { grid = [[ @@ -1512,7 +1512,7 @@ describe('API', function() | ]], } - meths.nvim_set_vvar('hlsearch', 1) + api.nvim_set_vvar('hlsearch', 1) eq(1, eval('v:hlsearch')) screen:expect { grid = [[ @@ -1539,182 +1539,182 @@ describe('API', function() end) it('truncates values with NULs in them', function() - meths.nvim_set_var('xxx', 'ab\0cd') - eq('ab', meths.nvim_get_var('xxx')) + api.nvim_set_var('xxx', 'ab\0cd') + eq('ab', api.nvim_get_var('xxx')) end) end) describe('nvim_get_option_value, nvim_set_option_value', function() it('works', function() - ok(meths.nvim_get_option_value('equalalways', {})) - meths.nvim_set_option_value('equalalways', false, {}) - ok(not meths.nvim_get_option_value('equalalways', {})) + ok(api.nvim_get_option_value('equalalways', {})) + api.nvim_set_option_value('equalalways', false, {}) + ok(not api.nvim_get_option_value('equalalways', {})) end) it('works to get global value of local options', function() - eq(false, meths.nvim_get_option_value('lisp', {})) - eq(8, meths.nvim_get_option_value('shiftwidth', {})) + eq(false, api.nvim_get_option_value('lisp', {})) + eq(8, api.nvim_get_option_value('shiftwidth', {})) end) it('works to set global value of local options', function() - meths.nvim_set_option_value('lisp', true, { scope = 'global' }) - eq(true, meths.nvim_get_option_value('lisp', { scope = 'global' })) - eq(false, meths.nvim_get_option_value('lisp', {})) + api.nvim_set_option_value('lisp', true, { scope = 'global' }) + eq(true, api.nvim_get_option_value('lisp', { scope = 'global' })) + eq(false, api.nvim_get_option_value('lisp', {})) eq(nil, command_output('setglobal lisp?'):match('nolisp')) eq('nolisp', command_output('setlocal lisp?'):match('nolisp')) - meths.nvim_set_option_value('shiftwidth', 20, { scope = 'global' }) + api.nvim_set_option_value('shiftwidth', 20, { scope = 'global' }) eq('20', command_output('setglobal shiftwidth?'):match('%d+')) eq('8', command_output('setlocal shiftwidth?'):match('%d+')) end) it('updates where the option was last set from', function() - meths.nvim_set_option_value('equalalways', false, {}) + api.nvim_set_option_value('equalalways', false, {}) local status, rv = pcall(command_output, 'verbose set equalalways?') eq(true, status) ok( nil ~= string.find(rv, 'noequalalways\n' .. '\tLast set from API client %(channel id %d+%)') ) - meths.nvim_exec_lua('vim.api.nvim_set_option_value("equalalways", true, {})', {}) + api.nvim_exec_lua('vim.api.nvim_set_option_value("equalalways", true, {})', {}) status, rv = pcall(command_output, 'verbose set equalalways?') eq(true, status) eq(' equalalways\n\tLast set from Lua', rv) end) it('updates whether the option has ever been set #25025', function() - eq(false, meths.nvim_get_option_info2('autochdir', {}).was_set) - meths.nvim_set_option_value('autochdir', true, {}) - eq(true, meths.nvim_get_option_info2('autochdir', {}).was_set) + eq(false, api.nvim_get_option_info2('autochdir', {}).was_set) + api.nvim_set_option_value('autochdir', true, {}) + eq(true, api.nvim_get_option_info2('autochdir', {}).was_set) - eq(false, meths.nvim_get_option_info2('cmdwinheight', {}).was_set) - meths.nvim_set_option_value('cmdwinheight', 10, {}) - eq(true, meths.nvim_get_option_info2('cmdwinheight', {}).was_set) + eq(false, api.nvim_get_option_info2('cmdwinheight', {}).was_set) + api.nvim_set_option_value('cmdwinheight', 10, {}) + eq(true, api.nvim_get_option_info2('cmdwinheight', {}).was_set) - eq(false, meths.nvim_get_option_info2('debug', {}).was_set) - meths.nvim_set_option_value('debug', 'beep', {}) - eq(true, meths.nvim_get_option_info2('debug', {}).was_set) + eq(false, api.nvim_get_option_info2('debug', {}).was_set) + api.nvim_set_option_value('debug', 'beep', {}) + eq(true, api.nvim_get_option_info2('debug', {}).was_set) end) it('validation', function() eq( "Invalid 'scope': expected 'local' or 'global'", - pcall_err(meths.nvim_get_option_value, 'scrolloff', { scope = 'bogus' }) + pcall_err(api.nvim_get_option_value, 'scrolloff', { scope = 'bogus' }) ) eq( "Invalid 'scope': expected 'local' or 'global'", - pcall_err(meths.nvim_set_option_value, 'scrolloff', 1, { scope = 'bogus' }) + pcall_err(api.nvim_set_option_value, 'scrolloff', 1, { scope = 'bogus' }) ) eq( "Invalid 'scope': expected String, got Integer", - pcall_err(meths.nvim_get_option_value, 'scrolloff', { scope = 42 }) + pcall_err(api.nvim_get_option_value, 'scrolloff', { scope = 42 }) ) eq( "Invalid 'value': expected valid option type, got Array", - pcall_err(meths.nvim_set_option_value, 'scrolloff', {}, {}) + pcall_err(api.nvim_set_option_value, 'scrolloff', {}, {}) ) eq( "Invalid value for option 'scrolloff': expected number, got boolean true", - pcall_err(meths.nvim_set_option_value, 'scrolloff', true, {}) + pcall_err(api.nvim_set_option_value, 'scrolloff', true, {}) ) eq( 'Invalid value for option \'scrolloff\': expected number, got string "wrong"', - pcall_err(meths.nvim_set_option_value, 'scrolloff', 'wrong', {}) + pcall_err(api.nvim_set_option_value, 'scrolloff', 'wrong', {}) ) end) it('can get local values when global value is set', function() - eq(0, meths.nvim_get_option_value('scrolloff', {})) - eq(-1, meths.nvim_get_option_value('scrolloff', { scope = 'local' })) + eq(0, api.nvim_get_option_value('scrolloff', {})) + eq(-1, api.nvim_get_option_value('scrolloff', { scope = 'local' })) end) it('can set global and local values', function() - meths.nvim_set_option_value('makeprg', 'hello', {}) - eq('hello', meths.nvim_get_option_value('makeprg', {})) - eq('', meths.nvim_get_option_value('makeprg', { scope = 'local' })) - meths.nvim_set_option_value('makeprg', 'world', { scope = 'local' }) - eq('world', meths.nvim_get_option_value('makeprg', { scope = 'local' })) - meths.nvim_set_option_value('makeprg', 'goodbye', { scope = 'global' }) - eq('goodbye', meths.nvim_get_option_value('makeprg', { scope = 'global' })) - meths.nvim_set_option_value('makeprg', 'hello', {}) - eq('hello', meths.nvim_get_option_value('makeprg', { scope = 'global' })) - eq('hello', meths.nvim_get_option_value('makeprg', {})) - eq('', meths.nvim_get_option_value('makeprg', { scope = 'local' })) + api.nvim_set_option_value('makeprg', 'hello', {}) + eq('hello', api.nvim_get_option_value('makeprg', {})) + eq('', api.nvim_get_option_value('makeprg', { scope = 'local' })) + api.nvim_set_option_value('makeprg', 'world', { scope = 'local' }) + eq('world', api.nvim_get_option_value('makeprg', { scope = 'local' })) + api.nvim_set_option_value('makeprg', 'goodbye', { scope = 'global' }) + eq('goodbye', api.nvim_get_option_value('makeprg', { scope = 'global' })) + api.nvim_set_option_value('makeprg', 'hello', {}) + eq('hello', api.nvim_get_option_value('makeprg', { scope = 'global' })) + eq('hello', api.nvim_get_option_value('makeprg', {})) + eq('', api.nvim_get_option_value('makeprg', { scope = 'local' })) end) it('clears the local value of an option with nil', function() -- Set global value - meths.nvim_set_option_value('shiftwidth', 42, {}) - eq(42, meths.nvim_get_option_value('shiftwidth', {})) + api.nvim_set_option_value('shiftwidth', 42, {}) + eq(42, api.nvim_get_option_value('shiftwidth', {})) -- Set local value - meths.nvim_set_option_value('shiftwidth', 8, { scope = 'local' }) - eq(8, meths.nvim_get_option_value('shiftwidth', {})) - eq(8, meths.nvim_get_option_value('shiftwidth', { scope = 'local' })) - eq(42, meths.nvim_get_option_value('shiftwidth', { scope = 'global' })) + api.nvim_set_option_value('shiftwidth', 8, { scope = 'local' }) + eq(8, api.nvim_get_option_value('shiftwidth', {})) + eq(8, api.nvim_get_option_value('shiftwidth', { scope = 'local' })) + eq(42, api.nvim_get_option_value('shiftwidth', { scope = 'global' })) -- Clear value without scope - meths.nvim_set_option_value('shiftwidth', NIL, {}) - eq(42, meths.nvim_get_option_value('shiftwidth', {})) - eq(42, meths.nvim_get_option_value('shiftwidth', { scope = 'local' })) + api.nvim_set_option_value('shiftwidth', NIL, {}) + eq(42, api.nvim_get_option_value('shiftwidth', {})) + eq(42, api.nvim_get_option_value('shiftwidth', { scope = 'local' })) -- Clear value with explicit scope - meths.nvim_set_option_value('shiftwidth', 8, { scope = 'local' }) - meths.nvim_set_option_value('shiftwidth', NIL, { scope = 'local' }) - eq(42, meths.nvim_get_option_value('shiftwidth', {})) - eq(42, meths.nvim_get_option_value('shiftwidth', { scope = 'local' })) + api.nvim_set_option_value('shiftwidth', 8, { scope = 'local' }) + api.nvim_set_option_value('shiftwidth', NIL, { scope = 'local' }) + eq(42, api.nvim_get_option_value('shiftwidth', {})) + eq(42, api.nvim_get_option_value('shiftwidth', { scope = 'local' })) -- Now try with options with a special "local is unset" value (e.g. 'undolevels') - meths.nvim_set_option_value('undolevels', 1000, {}) - meths.nvim_set_option_value('undolevels', 1200, { scope = 'local' }) - eq(1200, meths.nvim_get_option_value('undolevels', { scope = 'local' })) - meths.nvim_set_option_value('undolevels', NIL, { scope = 'local' }) - eq(-123456, meths.nvim_get_option_value('undolevels', { scope = 'local' })) - eq(1000, meths.nvim_get_option_value('undolevels', {})) + api.nvim_set_option_value('undolevels', 1000, {}) + api.nvim_set_option_value('undolevels', 1200, { scope = 'local' }) + eq(1200, api.nvim_get_option_value('undolevels', { scope = 'local' })) + api.nvim_set_option_value('undolevels', NIL, { scope = 'local' }) + eq(-123456, api.nvim_get_option_value('undolevels', { scope = 'local' })) + eq(1000, api.nvim_get_option_value('undolevels', {})) - meths.nvim_set_option_value('autoread', true, {}) - meths.nvim_set_option_value('autoread', false, { scope = 'local' }) - eq(false, meths.nvim_get_option_value('autoread', { scope = 'local' })) - meths.nvim_set_option_value('autoread', NIL, { scope = 'local' }) - eq(NIL, meths.nvim_get_option_value('autoread', { scope = 'local' })) - eq(true, meths.nvim_get_option_value('autoread', {})) + api.nvim_set_option_value('autoread', true, {}) + api.nvim_set_option_value('autoread', false, { scope = 'local' }) + eq(false, api.nvim_get_option_value('autoread', { scope = 'local' })) + api.nvim_set_option_value('autoread', NIL, { scope = 'local' }) + eq(NIL, api.nvim_get_option_value('autoread', { scope = 'local' })) + eq(true, api.nvim_get_option_value('autoread', {})) end) it('set window options', function() - meths.nvim_set_option_value('colorcolumn', '4,3', {}) - eq('4,3', meths.nvim_get_option_value('colorcolumn', { scope = 'local' })) + api.nvim_set_option_value('colorcolumn', '4,3', {}) + eq('4,3', api.nvim_get_option_value('colorcolumn', { scope = 'local' })) command('set modified hidden') command('enew') -- edit new buffer, window option is preserved - eq('4,3', meths.nvim_get_option_value('colorcolumn', { scope = 'local' })) + eq('4,3', api.nvim_get_option_value('colorcolumn', { scope = 'local' })) end) it('set local window options', function() - meths.nvim_set_option_value('colorcolumn', '4,3', { win = 0, scope = 'local' }) - eq('4,3', meths.nvim_get_option_value('colorcolumn', { win = 0, scope = 'local' })) + api.nvim_set_option_value('colorcolumn', '4,3', { win = 0, scope = 'local' }) + eq('4,3', api.nvim_get_option_value('colorcolumn', { win = 0, scope = 'local' })) command('set modified hidden') command('enew') -- edit new buffer, window option is reset - eq('', meths.nvim_get_option_value('colorcolumn', { win = 0, scope = 'local' })) + eq('', api.nvim_get_option_value('colorcolumn', { win = 0, scope = 'local' })) end) it('get buffer or window-local options', function() command('new') - local buf = meths.nvim_get_current_buf().id - meths.nvim_set_option_value('tagfunc', 'foobar', { buf = buf }) - eq('foobar', meths.nvim_get_option_value('tagfunc', { buf = buf })) + local buf = api.nvim_get_current_buf().id + api.nvim_set_option_value('tagfunc', 'foobar', { buf = buf }) + eq('foobar', api.nvim_get_option_value('tagfunc', { buf = buf })) - local win = meths.nvim_get_current_win().id - meths.nvim_set_option_value('number', true, { win = win }) - eq(true, meths.nvim_get_option_value('number', { win = win })) + local win = api.nvim_get_current_win().id + api.nvim_set_option_value('number', true, { win = win }) + eq(true, api.nvim_get_option_value('number', { win = win })) end) it('getting current buffer option does not adjust cursor #19381', function() command('new') - local buf = meths.nvim_get_current_buf().id - local win = meths.nvim_get_current_win().id + local buf = api.nvim_get_current_buf().id + local win = api.nvim_get_current_win().id insert('some text') feed('0v$') - eq({ 1, 9 }, meths.nvim_win_get_cursor(win)) - meths.nvim_get_option_value('filetype', { buf = buf }) - eq({ 1, 9 }, meths.nvim_win_get_cursor(win)) + eq({ 1, 9 }, api.nvim_win_get_cursor(win)) + api.nvim_get_option_value('filetype', { buf = buf }) + eq({ 1, 9 }, api.nvim_win_get_cursor(win)) end) it('can get default option values for filetypes', function() @@ -1726,156 +1726,156 @@ describe('API', function() xml = { formatexpr = 'xmlformat#Format()' }, } do for option, value in pairs(opts) do - eq(value, meths.nvim_get_option_value(option, { filetype = ft })) + eq(value, api.nvim_get_option_value(option, { filetype = ft })) end end command 'au FileType lua setlocal commentstring=NEW\\ %s' - eq('NEW %s', meths.nvim_get_option_value('commentstring', { filetype = 'lua' })) + eq('NEW %s', api.nvim_get_option_value('commentstring', { filetype = 'lua' })) end) it('errors for bad FileType autocmds', function() command 'au FileType lua setlocal commentstring=BAD' eq( [[FileType Autocommands for "lua": Vim(setlocal):E537: 'commentstring' must be empty or contain %s: commentstring=BAD]], - pcall_err(meths.nvim_get_option_value, 'commentstring', { filetype = 'lua' }) + pcall_err(api.nvim_get_option_value, 'commentstring', { filetype = 'lua' }) ) end) it("value of 'modified' is always false for scratch buffers", function() - meths.nvim_set_current_buf(meths.nvim_create_buf(true, true)) + api.nvim_set_current_buf(api.nvim_create_buf(true, true)) insert([[ foo bar baz ]]) - eq(false, meths.nvim_get_option_value('modified', {})) + eq(false, api.nvim_get_option_value('modified', {})) end) end) describe('nvim_{get,set}_current_buf, nvim_list_bufs', function() it('works', function() - eq(1, #meths.nvim_list_bufs()) - eq(meths.nvim_list_bufs()[1], meths.nvim_get_current_buf()) + eq(1, #api.nvim_list_bufs()) + eq(api.nvim_list_bufs()[1], api.nvim_get_current_buf()) command('new') - eq(2, #meths.nvim_list_bufs()) - eq(meths.nvim_list_bufs()[2], meths.nvim_get_current_buf()) - meths.nvim_set_current_buf(meths.nvim_list_bufs()[1]) - eq(meths.nvim_list_bufs()[1], meths.nvim_get_current_buf()) + eq(2, #api.nvim_list_bufs()) + eq(api.nvim_list_bufs()[2], api.nvim_get_current_buf()) + api.nvim_set_current_buf(api.nvim_list_bufs()[1]) + eq(api.nvim_list_bufs()[1], api.nvim_get_current_buf()) end) end) describe('nvim_{get,set}_current_win, nvim_list_wins', function() it('works', function() - eq(1, #meths.nvim_list_wins()) - eq(meths.nvim_list_wins()[1], meths.nvim_get_current_win()) + eq(1, #api.nvim_list_wins()) + eq(api.nvim_list_wins()[1], api.nvim_get_current_win()) command('vsplit') command('split') - eq(3, #meths.nvim_list_wins()) - eq(meths.nvim_list_wins()[1], meths.nvim_get_current_win()) - meths.nvim_set_current_win(meths.nvim_list_wins()[2]) - eq(meths.nvim_list_wins()[2], meths.nvim_get_current_win()) + eq(3, #api.nvim_list_wins()) + eq(api.nvim_list_wins()[1], api.nvim_get_current_win()) + api.nvim_set_current_win(api.nvim_list_wins()[2]) + eq(api.nvim_list_wins()[2], api.nvim_get_current_win()) end) end) describe('nvim_{get,set}_current_tabpage, nvim_list_tabpages', function() it('works', function() - eq(1, #meths.nvim_list_tabpages()) - eq(meths.nvim_list_tabpages()[1], meths.nvim_get_current_tabpage()) + eq(1, #api.nvim_list_tabpages()) + eq(api.nvim_list_tabpages()[1], api.nvim_get_current_tabpage()) command('tabnew') - eq(2, #meths.nvim_list_tabpages()) - eq(2, #meths.nvim_list_wins()) - eq(meths.nvim_list_wins()[2], meths.nvim_get_current_win()) - eq(meths.nvim_list_tabpages()[2], meths.nvim_get_current_tabpage()) - meths.nvim_set_current_win(meths.nvim_list_wins()[1]) + eq(2, #api.nvim_list_tabpages()) + eq(2, #api.nvim_list_wins()) + eq(api.nvim_list_wins()[2], api.nvim_get_current_win()) + eq(api.nvim_list_tabpages()[2], api.nvim_get_current_tabpage()) + api.nvim_set_current_win(api.nvim_list_wins()[1]) -- Switching window also switches tabpages if necessary - eq(meths.nvim_list_tabpages()[1], meths.nvim_get_current_tabpage()) - eq(meths.nvim_list_wins()[1], meths.nvim_get_current_win()) - meths.nvim_set_current_tabpage(meths.nvim_list_tabpages()[2]) - eq(meths.nvim_list_tabpages()[2], meths.nvim_get_current_tabpage()) - eq(meths.nvim_list_wins()[2], meths.nvim_get_current_win()) + eq(api.nvim_list_tabpages()[1], api.nvim_get_current_tabpage()) + eq(api.nvim_list_wins()[1], api.nvim_get_current_win()) + api.nvim_set_current_tabpage(api.nvim_list_tabpages()[2]) + eq(api.nvim_list_tabpages()[2], api.nvim_get_current_tabpage()) + eq(api.nvim_list_wins()[2], api.nvim_get_current_win()) end) end) describe('nvim_get_mode', function() it('during normal-mode `g` returns blocking=true', function() - meths.nvim_input('o') -- add a line - eq({ mode = 'i', blocking = false }, meths.nvim_get_mode()) - meths.nvim_input([[<C-\><C-N>]]) - eq(2, meths.nvim_eval("line('.')")) - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + api.nvim_input('o') -- add a line + eq({ mode = 'i', blocking = false }, api.nvim_get_mode()) + api.nvim_input([[<C-\><C-N>]]) + eq(2, api.nvim_eval("line('.')")) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) - meths.nvim_input('g') - eq({ mode = 'n', blocking = true }, meths.nvim_get_mode()) + api.nvim_input('g') + eq({ mode = 'n', blocking = true }, api.nvim_get_mode()) - meths.nvim_input('k') -- complete the operator - eq(1, meths.nvim_eval("line('.')")) -- verify the completed operator - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + api.nvim_input('k') -- complete the operator + eq(1, api.nvim_eval("line('.')")) -- verify the completed operator + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('returns the correct result multiple consecutive times', function() for _ = 1, 5 do - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end - meths.nvim_input('g') + api.nvim_input('g') for _ = 1, 4 do - eq({ mode = 'n', blocking = true }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = true }, api.nvim_get_mode()) end - meths.nvim_input('g') + api.nvim_input('g') for _ = 1, 7 do - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end end) it('during normal-mode CTRL-W, returns blocking=true', function() - meths.nvim_input('<C-W>') - eq({ mode = 'n', blocking = true }, meths.nvim_get_mode()) + api.nvim_input('<C-W>') + eq({ mode = 'n', blocking = true }, api.nvim_get_mode()) - meths.nvim_input('s') -- complete the operator - eq(2, meths.nvim_eval("winnr('$')")) -- verify the completed operator - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + api.nvim_input('s') -- complete the operator + eq(2, api.nvim_eval("winnr('$')")) -- verify the completed operator + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('during press-enter prompt without UI returns blocking=false', function() - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) command("echom 'msg1'") command("echom 'msg2'") command("echom 'msg3'") command("echom 'msg4'") command("echom 'msg5'") - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) - meths.nvim_input(':messages<CR>') - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) + api.nvim_input(':messages<CR>') + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('during press-enter prompt returns blocking=true', function() - meths.nvim_ui_attach(80, 20, {}) - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + api.nvim_ui_attach(80, 20, {}) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) command("echom 'msg1'") command("echom 'msg2'") command("echom 'msg3'") command("echom 'msg4'") command("echom 'msg5'") - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) - meths.nvim_input(':messages<CR>') - eq({ mode = 'r', blocking = true }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) + api.nvim_input(':messages<CR>') + eq({ mode = 'r', blocking = true }, api.nvim_get_mode()) end) it('during getchar() returns blocking=false', function() - meths.nvim_input(':let g:test_input = nr2char(getchar())<CR>') + api.nvim_input(':let g:test_input = nr2char(getchar())<CR>') -- Events are enabled during getchar(), RPC calls are *not* blocked. #5384 - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) - eq(0, meths.nvim_eval("exists('g:test_input')")) - meths.nvim_input('J') - eq('J', meths.nvim_eval('g:test_input')) - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) + eq(0, api.nvim_eval("exists('g:test_input')")) + api.nvim_input('J') + eq('J', api.nvim_eval('g:test_input')) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) -- TODO: bug #6247#issuecomment-286403810 it('batched with input', function() - meths.nvim_ui_attach(80, 20, {}) - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + api.nvim_ui_attach(80, 20, {}) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) command("echom 'msg1'") command("echom 'msg2'") command("echom 'msg3'") @@ -1896,35 +1896,35 @@ describe('API', function() 1, }, NIL, - }, meths.nvim_call_atomic(req)) - eq({ mode = 'r', blocking = true }, meths.nvim_get_mode()) + }, api.nvim_call_atomic(req)) + eq({ mode = 'r', blocking = true }, api.nvim_get_mode()) end) it('during insert-mode map-pending, returns blocking=true #6166', function() command('inoremap xx foo') - meths.nvim_input('ix') - eq({ mode = 'i', blocking = true }, meths.nvim_get_mode()) + api.nvim_input('ix') + eq({ mode = 'i', blocking = true }, api.nvim_get_mode()) end) it('during normal-mode gU, returns blocking=false #6166', function() - meths.nvim_input('gu') - eq({ mode = 'no', blocking = false }, meths.nvim_get_mode()) + api.nvim_input('gu') + eq({ mode = 'no', blocking = false }, api.nvim_get_mode()) end) it("at '-- More --' prompt returns blocking=true #11899", function() command('set more') feed(':digraphs<cr>') - eq({ mode = 'rm', blocking = true }, meths.nvim_get_mode()) + eq({ mode = 'rm', blocking = true }, api.nvim_get_mode()) end) it('after <Nop> mapping returns blocking=false #17257', function() command('nnoremap <F2> <Nop>') feed('<F2>') - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) it('after empty string <expr> mapping returns blocking=false #17257', function() command('nnoremap <expr> <F2> ""') feed('<F2>') - eq({ mode = 'n', blocking = false }, meths.nvim_get_mode()) + eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) end) end) @@ -1933,16 +1933,16 @@ describe('API', function() helpers.insert([[ FIRST LINE SECOND LINE]]) - meths.nvim_input('gg') - meths.nvim_input('gu') + api.nvim_input('gg') + api.nvim_input('gu') -- Make any RPC request (can be non-async: op-pending does not block). - meths.nvim_get_current_buf() + api.nvim_get_current_buf() -- Buffer should not change. expect([[ FIRST LINE SECOND LINE]]) -- Now send input to complete the operator. - meths.nvim_input('j') + api.nvim_input('j') expect([[ first line second line]]) @@ -1956,7 +1956,7 @@ describe('API', function() feed('ia<cr>b<cr>c<cr><Esc>kkk') feed('d') -- Make any RPC request (can be non-async: op-pending does not block). - meths.nvim_get_current_buf() + api.nvim_get_current_buf() screen:expect([[ ^a$ | b$ | @@ -1970,12 +1970,12 @@ describe('API', function() helpers.insert([[ FIRST LINE SECOND LINE]]) - meths.nvim_input('gg') - meths.nvim_input('d') + api.nvim_input('gg') + api.nvim_input('d') -- Make any RPC request (must be async, because map-pending blocks). - meths.nvim_get_api_info() + api.nvim_get_api_info() -- Send input to complete the mapping. - meths.nvim_input('d') + api.nvim_input('d') expect([[ FIRST LINE SECOND LINE]]) @@ -1988,11 +1988,11 @@ describe('API', function() helpers.insert([[ FIRST LINE SECOND LINE]]) - meths.nvim_input('ix') + api.nvim_input('ix') -- Make any RPC request (must be async, because map-pending blocks). - meths.nvim_get_api_info() + api.nvim_get_api_info() -- Send input to complete the mapping. - meths.nvim_input('x') + api.nvim_input('x') expect([[ FIRST LINE SECOND LINfooE]]) @@ -2000,24 +2000,24 @@ describe('API', function() it('does not interrupt Insert mode i_CTRL-O #10035', function() feed('iHello World<c-o>') - eq({ mode = 'niI', blocking = false }, meths.nvim_get_mode()) -- fast event + eq({ mode = 'niI', blocking = false }, api.nvim_get_mode()) -- fast event eq(2, eval('1+1')) -- causes K_EVENT key - eq({ mode = 'niI', blocking = false }, meths.nvim_get_mode()) -- still in ctrl-o mode + eq({ mode = 'niI', blocking = false }, api.nvim_get_mode()) -- still in ctrl-o mode feed('dd') - eq({ mode = 'i', blocking = false }, meths.nvim_get_mode()) -- left ctrl-o mode + eq({ mode = 'i', blocking = false }, api.nvim_get_mode()) -- left ctrl-o mode expect('') -- executed the command end) it('does not interrupt Select mode v_CTRL-O #15688', function() feed('iHello World<esc>gh<c-o>') - eq({ mode = 'vs', blocking = false }, meths.nvim_get_mode()) -- fast event - eq({ mode = 'vs', blocking = false }, meths.nvim_get_mode()) -- again #15288 + eq({ mode = 'vs', blocking = false }, api.nvim_get_mode()) -- fast event + eq({ mode = 'vs', blocking = false }, api.nvim_get_mode()) -- again #15288 eq(2, eval('1+1')) -- causes K_EVENT key - eq({ mode = 'vs', blocking = false }, meths.nvim_get_mode()) -- still in ctrl-o mode + eq({ mode = 'vs', blocking = false }, api.nvim_get_mode()) -- still in ctrl-o mode feed('^') - eq({ mode = 's', blocking = false }, meths.nvim_get_mode()) -- left ctrl-o mode + eq({ mode = 's', blocking = false }, api.nvim_get_mode()) -- left ctrl-o mode feed('h') - eq({ mode = 'i', blocking = false }, meths.nvim_get_mode()) -- entered insert mode + eq({ mode = 'i', blocking = false }, api.nvim_get_mode()) -- entered insert mode expect('h') -- selection is the whole line and is replaced end) @@ -2043,34 +2043,34 @@ describe('API', function() feed('<BS>') eq(2, eval('1+1')) -- causes K_EVENT key feed('.') - eq('…', funcs.getcmdline()) -- digraph ",." worked + eq('…', fn.getcmdline()) -- digraph ",." worked end) end) describe('nvim_get_context', function() it('validation', function() - eq("Invalid key: 'blah'", pcall_err(meths.nvim_get_context, { blah = {} })) + eq("Invalid key: 'blah'", pcall_err(api.nvim_get_context, { blah = {} })) eq( "Invalid 'types': expected Array, got Integer", - pcall_err(meths.nvim_get_context, { types = 42 }) + pcall_err(api.nvim_get_context, { types = 42 }) ) eq( "Invalid 'type': 'zub'", - pcall_err(meths.nvim_get_context, { types = { 'jumps', 'zub', 'zam' } }) + pcall_err(api.nvim_get_context, { types = { 'jumps', 'zub', 'zam' } }) ) end) it('returns map of current editor state', function() local opts = { types = { 'regs', 'jumps', 'bufs', 'gvars' } } - eq({}, parse_context(meths.nvim_get_context({}))) + eq({}, parse_context(api.nvim_get_context({}))) feed('i1<cr>2<cr>3<c-[>ddddddqahjklquuu') feed('gg') feed('G') command('edit! BUF1') command('edit BUF2') - meths.nvim_set_var('one', 1) - meths.nvim_set_var('Two', 2) - meths.nvim_set_var('THREE', 3) + api.nvim_set_var('one', 1) + api.nvim_set_var('Two', 2) + api.nvim_set_var('THREE', 3) local expected_ctx = { ['regs'] = { @@ -2095,72 +2095,72 @@ describe('API', function() ['gvars'] = { { 'one', 1 }, { 'Two', 2 }, { 'THREE', 3 } }, } - eq(expected_ctx, parse_context(meths.nvim_get_context(opts))) - eq(expected_ctx, parse_context(meths.nvim_get_context({}))) - eq(expected_ctx, parse_context(meths.nvim_get_context({ types = {} }))) + eq(expected_ctx, parse_context(api.nvim_get_context(opts))) + eq(expected_ctx, parse_context(api.nvim_get_context({}))) + eq(expected_ctx, parse_context(api.nvim_get_context({ types = {} }))) end) end) describe('nvim_load_context', function() it('sets current editor state to given context dictionary', function() local opts = { types = { 'regs', 'jumps', 'bufs', 'gvars' } } - eq({}, parse_context(meths.nvim_get_context(opts))) - - meths.nvim_set_var('one', 1) - meths.nvim_set_var('Two', 2) - meths.nvim_set_var('THREE', 3) - local ctx = meths.nvim_get_context(opts) - meths.nvim_set_var('one', 'a') - meths.nvim_set_var('Two', 'b') - meths.nvim_set_var('THREE', 'c') + eq({}, parse_context(api.nvim_get_context(opts))) + + api.nvim_set_var('one', 1) + api.nvim_set_var('Two', 2) + api.nvim_set_var('THREE', 3) + local ctx = api.nvim_get_context(opts) + api.nvim_set_var('one', 'a') + api.nvim_set_var('Two', 'b') + api.nvim_set_var('THREE', 'c') eq({ 'a', 'b', 'c' }, eval('[g:one, g:Two, g:THREE]')) - meths.nvim_load_context(ctx) + api.nvim_load_context(ctx) eq({ 1, 2, 3 }, eval('[g:one, g:Two, g:THREE]')) end) it('errors when context dictionary is invalid', function() eq( 'E474: Failed to convert list to msgpack string buffer', - pcall_err(meths.nvim_load_context, { regs = { {} }, jumps = { {} } }) + pcall_err(api.nvim_load_context, { regs = { {} }, jumps = { {} } }) ) eq( 'E474: Failed to convert list to msgpack string buffer', - pcall_err(meths.nvim_load_context, { regs = { { [''] = '' } } }) + pcall_err(api.nvim_load_context, { regs = { { [''] = '' } } }) ) end) end) describe('nvim_replace_termcodes', function() it('escapes K_SPECIAL as K_SPECIAL KS_SPECIAL KE_FILLER', function() - eq('\128\254X', helpers.meths.nvim_replace_termcodes('\128', true, true, true)) + eq('\128\254X', helpers.api.nvim_replace_termcodes('\128', true, true, true)) end) it('leaves non-K_SPECIAL string unchanged', function() - eq('abc', helpers.meths.nvim_replace_termcodes('abc', true, true, true)) + eq('abc', helpers.api.nvim_replace_termcodes('abc', true, true, true)) end) it('converts <expressions>', function() - eq('\\', helpers.meths.nvim_replace_termcodes('<Leader>', true, true, true)) + eq('\\', helpers.api.nvim_replace_termcodes('<Leader>', true, true, true)) end) it('converts <LeftMouse> to K_SPECIAL KS_EXTRA KE_LEFTMOUSE', function() -- K_SPECIAL KS_EXTRA KE_LEFTMOUSE -- 0x80 0xfd 0x2c -- 128 253 44 - eq('\128\253\44', helpers.meths.nvim_replace_termcodes('<LeftMouse>', true, true, true)) + eq('\128\253\44', helpers.api.nvim_replace_termcodes('<LeftMouse>', true, true, true)) end) it('converts keycodes', function() eq( '\nx\27x\rx<x', - helpers.meths.nvim_replace_termcodes('<NL>x<Esc>x<CR>x<lt>x', true, true, true) + helpers.api.nvim_replace_termcodes('<NL>x<Esc>x<CR>x<lt>x', true, true, true) ) end) it('does not convert keycodes if special=false', function() eq( '<NL>x<Esc>x<CR>x<lt>x', - helpers.meths.nvim_replace_termcodes('<NL>x<Esc>x<CR>x<lt>x', true, true, false) + helpers.api.nvim_replace_termcodes('<NL>x<Esc>x<CR>x<lt>x', true, true, false) ) end) @@ -2172,13 +2172,13 @@ describe('API', function() -- then `return str` in vim_replace_termcodes body will make Neovim free -- `str.data` twice: once when freeing arguments, then when freeing return -- value. - eq('', meths.nvim_replace_termcodes('', true, true, true)) + eq('', api.nvim_replace_termcodes('', true, true, true)) end) -- Not exactly the case, as nvim_replace_termcodes() escapes K_SPECIAL in Unicode it('translates the result of keytrans() on string with 0x80 byte back', function() local s = 'ff\128\253\097tt' - eq(s, meths.nvim_replace_termcodes(funcs.keytrans(s), true, true, true)) + eq(s, api.nvim_replace_termcodes(fn.keytrans(s), true, true, true)) end) end) @@ -2186,15 +2186,15 @@ describe('API', function() it('K_SPECIAL escaping', function() local function on_setup() -- notice the special char(…) \xe2\80\xa6 - meths.nvim_feedkeys(':let x1="…"\n', '', true) + api.nvim_feedkeys(':let x1="…"\n', '', true) -- Both nvim_replace_termcodes and nvim_feedkeys escape \x80 - local inp = helpers.meths.nvim_replace_termcodes(':let x2="…"<CR>', true, true, true) - meths.nvim_feedkeys(inp, '', true) -- escape_ks=true + local inp = helpers.api.nvim_replace_termcodes(':let x2="…"<CR>', true, true, true) + api.nvim_feedkeys(inp, '', true) -- escape_ks=true -- nvim_feedkeys with K_SPECIAL escaping disabled - inp = helpers.meths.nvim_replace_termcodes(':let x3="…"<CR>', true, true, true) - meths.nvim_feedkeys(inp, '', false) -- escape_ks=false + inp = helpers.api.nvim_replace_termcodes(':let x3="…"<CR>', true, true, true) + api.nvim_feedkeys(inp, '', false) -- escape_ks=false helpers.stop() end @@ -2202,10 +2202,10 @@ describe('API', function() -- spin the loop a bit helpers.run(nil, nil, on_setup) - eq('…', meths.nvim_get_var('x1')) + eq('…', api.nvim_get_var('x1')) -- Because of the double escaping this is neq - neq('…', meths.nvim_get_var('x2')) - eq('…', meths.nvim_get_var('x3')) + neq('…', api.nvim_get_var('x2')) + eq('…', api.nvim_get_var('x3')) end) end) @@ -2240,7 +2240,7 @@ describe('API', function() silent! call nvim_out_write("\n") redir END ]]) - eq('\naaa\n' .. ('a'):rep(5002) .. '\naaa', meths.nvim_get_var('out')) + eq('\naaa\n' .. ('a'):rep(5002) .. '\naaa', api.nvim_get_var('out')) end) it('blank line in message', function() @@ -2426,18 +2426,18 @@ describe('API', function() } it('returns {} for invalid channel', function() - eq({}, meths.nvim_get_chan_info(0)) - eq({}, meths.nvim_get_chan_info(-1)) + eq({}, api.nvim_get_chan_info(0)) + eq({}, api.nvim_get_chan_info(-1)) -- more preallocated numbers might be added, try something high - eq({}, meths.nvim_get_chan_info(10)) + eq({}, api.nvim_get_chan_info(10)) end) it('stream=stdio channel', function() - eq({ [1] = testinfo, [2] = stderr }, meths.nvim_list_chans()) - eq(testinfo, meths.nvim_get_chan_info(1)) - eq(stderr, meths.nvim_get_chan_info(2)) + eq({ [1] = testinfo, [2] = stderr }, api.nvim_list_chans()) + eq(testinfo, api.nvim_get_chan_info(1)) + eq(stderr, api.nvim_get_chan_info(2)) - meths.nvim_set_client_info( + api.nvim_set_client_info( 'functionaltests', { major = 0, minor = 3, patch = 17 }, 'ui', @@ -2456,9 +2456,9 @@ describe('API', function() attributes = { license = 'Apache2' }, }, } - eq({ info = info }, meths.nvim_get_var('info_event')) - eq({ [1] = info, [2] = stderr }, meths.nvim_list_chans()) - eq(info, meths.nvim_get_chan_info(1)) + eq({ info = info }, api.nvim_get_var('info_event')) + eq({ [1] = info, [2] = stderr }, api.nvim_list_chans()) + eq(info, api.nvim_get_chan_info(1)) end) it('stream=job channel', function() @@ -2471,9 +2471,9 @@ describe('API', function() mode = 'rpc', client = {}, } - eq({ info = info }, meths.nvim_get_var('opened_event')) - eq({ [1] = testinfo, [2] = stderr, [3] = info }, meths.nvim_list_chans()) - eq(info, meths.nvim_get_chan_info(3)) + eq({ info = info }, api.nvim_get_var('opened_event')) + eq({ [1] = testinfo, [2] = stderr, [3] = info }, api.nvim_list_chans()) + eq(info, api.nvim_get_chan_info(3)) eval( 'rpcrequest(3, "nvim_set_client_info", "amazing-cat", {}, "remote",' .. '{"nvim_command":{"n_args":1}},' -- and so on @@ -2492,8 +2492,8 @@ describe('API', function() attributes = { description = 'The Amazing Cat' }, }, } - eq({ info = info }, meths.nvim_get_var('info_event')) - eq({ [1] = testinfo, [2] = stderr, [3] = info }, meths.nvim_list_chans()) + eq({ info = info }, api.nvim_get_var('info_event')) + eq({ [1] = testinfo, [2] = stderr, [3] = info }, api.nvim_list_chans()) eq( "Vim:Error invoking 'nvim_set_current_buf' on channel 3 (amazing-cat):\nWrong type for argument 1 when calling nvim_set_current_buf, expecting Buffer", @@ -2503,8 +2503,8 @@ describe('API', function() it('stream=job :terminal channel', function() command(':terminal') - eq({ id = 1 }, meths.nvim_get_current_buf()) - eq(3, meths.nvim_get_option_value('channel', { buf = 1 })) + eq({ id = 1 }, api.nvim_get_current_buf()) + eq(3, api.nvim_get_option_value('channel', { buf = 1 })) local info = { stream = 'job', @@ -2514,20 +2514,20 @@ describe('API', function() buffer = 1, pty = '?', } - local event = meths.nvim_get_var('opened_event') + local event = api.nvim_get_var('opened_event') if not is_os('win') then info.pty = event.info.pty neq(nil, string.match(info.pty, '^/dev/')) end eq({ info = info }, event) info.buffer = { id = 1 } - eq({ [1] = testinfo, [2] = stderr, [3] = info }, meths.nvim_list_chans()) - eq(info, meths.nvim_get_chan_info(3)) + eq({ [1] = testinfo, [2] = stderr, [3] = info }, api.nvim_list_chans()) + eq(info, api.nvim_get_chan_info(3)) -- :terminal with args + running process. command('enew') local progpath_esc = eval('shellescape(v:progpath)') - funcs.termopen(('%s -u NONE -i NONE'):format(progpath_esc), { + fn.termopen(('%s -u NONE -i NONE'):format(progpath_esc), { env = { VIMRUNTIME = os.getenv('VIMRUNTIME') }, }) eq(-1, eval('jobwait([&channel], 0)[0]')) -- Running? @@ -2562,13 +2562,13 @@ describe('API', function() describe('nvim_call_atomic', function() it('works', function() - meths.nvim_buf_set_lines(0, 0, -1, true, { 'first' }) + api.nvim_buf_set_lines(0, 0, -1, true, { 'first' }) local req = { { 'nvim_get_current_line', {} }, { 'nvim_set_current_line', { 'second' } }, } - eq({ { 'first', NIL }, NIL }, meths.nvim_call_atomic(req)) - eq({ 'second' }, meths.nvim_buf_get_lines(0, 0, -1, true)) + eq({ { 'first', NIL }, NIL }, api.nvim_call_atomic(req)) + eq({ 'second' }, api.nvim_buf_get_lines(0, 0, -1, true)) end) it('allows multiple return values', function() @@ -2578,11 +2578,11 @@ describe('API', function() { 'nvim_get_var', { 'avar' } }, { 'nvim_get_var', { 'bvar' } }, } - eq({ { NIL, NIL, true, 'string' }, NIL }, meths.nvim_call_atomic(req)) + eq({ { NIL, NIL, true, 'string' }, NIL }, api.nvim_call_atomic(req)) end) it('is aborted by errors in call', function() - local error_types = meths.nvim_get_api_info()[2].error_types + local error_types = api.nvim_get_api_info()[2].error_types local req = { { 'nvim_set_var', { 'one', 1 } }, { 'nvim_buf_set_lines', {} }, @@ -2595,9 +2595,9 @@ describe('API', function() error_types.Exception.id, 'Wrong number of arguments: expecting 5 but got 0', }, - }, meths.nvim_call_atomic(req)) - eq(1, meths.nvim_get_var('one')) - eq(false, pcall(meths.nvim_get_var, 'two')) + }, api.nvim_call_atomic(req)) + eq(1, api.nvim_get_var('one')) + eq(false, pcall(api.nvim_get_var, 'two')) -- still returns all previous successful calls req = { @@ -2609,7 +2609,7 @@ describe('API', function() } eq( { { NIL, NIL, 5 }, { 3, error_types.Validation.id, 'Index out of bounds' } }, - meths.nvim_call_atomic(req) + api.nvim_call_atomic(req) ) req = { @@ -2618,9 +2618,9 @@ describe('API', function() } eq( { {}, { 0, error_types.Exception.id, 'Invalid method: i_am_not_a_method' } }, - meths.nvim_call_atomic(req) + api.nvim_call_atomic(req) ) - eq(5, meths.nvim_get_var('avar')) + eq(5, api.nvim_get_var('avar')) end) it('validation', function() @@ -2629,28 +2629,25 @@ describe('API', function() { 'nvim_set_var' }, { 'nvim_set_var', { 'avar', 2 } }, } - eq("Invalid 'calls' item: expected 2-item Array", pcall_err(meths.nvim_call_atomic, req)) + eq("Invalid 'calls' item: expected 2-item Array", pcall_err(api.nvim_call_atomic, req)) -- call before was done, but not after - eq(1, meths.nvim_get_var('avar')) + eq(1, api.nvim_get_var('avar')) req = { { 'nvim_set_var', { 'bvar', { 2, 3 } } }, 12, } - eq( - "Invalid 'calls' item: expected Array, got Integer", - pcall_err(meths.nvim_call_atomic, req) - ) - eq({ 2, 3 }, meths.nvim_get_var('bvar')) + eq("Invalid 'calls' item: expected Array, got Integer", pcall_err(api.nvim_call_atomic, req)) + eq({ 2, 3 }, api.nvim_get_var('bvar')) req = { { 'nvim_set_current_line', 'little line' }, { 'nvim_set_var', { 'avar', 3 } }, } - eq('Invalid call args: expected Array, got String', pcall_err(meths.nvim_call_atomic, req)) + eq('Invalid call args: expected Array, got String', pcall_err(api.nvim_call_atomic, req)) -- call before was done, but not after - eq(1, meths.nvim_get_var('avar')) - eq({ '' }, meths.nvim_buf_get_lines(0, 0, -1, true)) + eq(1, api.nvim_get_var('avar')) + eq({ '' }, api.nvim_buf_get_lines(0, 0, -1, true)) end) end) @@ -2664,55 +2661,55 @@ describe('API', function() rmdir 'Xtest' end) before_each(function() - meths.nvim_set_current_dir 'Xtest' + api.nvim_set_current_dir 'Xtest' end) it('returns nothing with empty &runtimepath', function() - meths.nvim_set_option_value('runtimepath', '', {}) - eq({}, meths.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', '', {}) + eq({}, api.nvim_list_runtime_paths()) end) it('returns single runtimepath', function() - meths.nvim_set_option_value('runtimepath', 'a', {}) - eq({ 'a' }, meths.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', 'a', {}) + eq({ 'a' }, api.nvim_list_runtime_paths()) end) it('returns two runtimepaths', function() - meths.nvim_set_option_value('runtimepath', 'a,b', {}) - eq({ 'a', 'b' }, meths.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', 'a,b', {}) + eq({ 'a', 'b' }, api.nvim_list_runtime_paths()) end) it('returns empty strings when appropriate', function() - meths.nvim_set_option_value('runtimepath', 'a,,b', {}) - eq({ 'a', '', 'b' }, meths.nvim_list_runtime_paths()) - meths.nvim_set_option_value('runtimepath', ',a,b', {}) - eq({ '', 'a', 'b' }, meths.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', 'a,,b', {}) + eq({ 'a', '', 'b' }, api.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', ',a,b', {}) + eq({ '', 'a', 'b' }, api.nvim_list_runtime_paths()) -- Trailing "," is ignored. Use ",," if you really really want CWD. - meths.nvim_set_option_value('runtimepath', 'a,b,', {}) - eq({ 'a', 'b' }, meths.nvim_list_runtime_paths()) - meths.nvim_set_option_value('runtimepath', 'a,b,,', {}) - eq({ 'a', 'b', '' }, meths.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', 'a,b,', {}) + eq({ 'a', 'b' }, api.nvim_list_runtime_paths()) + api.nvim_set_option_value('runtimepath', 'a,b,,', {}) + eq({ 'a', 'b', '' }, api.nvim_list_runtime_paths()) end) it('truncates too long paths', function() local long_path = ('/a'):rep(8192) - meths.nvim_set_option_value('runtimepath', long_path, {}) - local paths_list = meths.nvim_list_runtime_paths() + api.nvim_set_option_value('runtimepath', long_path, {}) + local paths_list = api.nvim_list_runtime_paths() eq({}, paths_list) end) end) it('can throw exceptions', function() - local status, err = pcall(meths.nvim_get_option_value, 'invalid-option', {}) + local status, err = pcall(api.nvim_get_option_value, 'invalid-option', {}) eq(false, status) ok(err:match("Unknown option 'invalid%-option'") ~= nil) end) it('does not truncate error message <1 MB #5984', function() local very_long_name = 'A' .. ('x'):rep(10000) .. 'Z' - local status, err = pcall(meths.nvim_get_option_value, very_long_name, {}) + local status, err = pcall(api.nvim_get_option_value, very_long_name, {}) eq(false, status) eq(very_long_name, err:match('Ax+Z?')) end) it('does not leak memory on incorrect argument types', function() - local status, err = pcall(meths.nvim_set_current_dir, { 'not', 'a', 'dir' }) + local status, err = pcall(api.nvim_set_current_dir, { 'not', 'a', 'dir' }) eq(false, status) ok( err:match(': Wrong type for argument 1 when calling nvim_set_current_dir, expecting String') @@ -2722,7 +2719,7 @@ describe('API', function() describe('nvim_parse_expression', function() before_each(function() - meths.nvim_set_option_value('isident', '', {}) + api.nvim_set_option_value('isident', '', {}) end) local function simplify_east_api_node(line, east_api_node) @@ -2855,7 +2852,7 @@ describe('API', function() nz_flags_exps = nz_flags_exps or {} for _, flags in ipairs(opts.flags) do local err, msg = pcall(function() - local east_api = meths.nvim_parse_expression(str, FLAGS_TO_STR[flags], true) + local east_api = api.nvim_parse_expression(str, FLAGS_TO_STR[flags], true) local east_hl = east_api.highlight east_api.highlight = nil local ast = simplify_east_api(str, east_api) @@ -2935,7 +2932,7 @@ describe('API', function() describe('nvim_list_uis', function() it('returns empty if --headless', function() -- Test runner defaults to --headless. - eq({}, meths.nvim_list_uis()) + eq({}, api.nvim_list_uis()) end) it('returns attached UIs', function() local screen = Screen.new(20, 4) @@ -2964,7 +2961,7 @@ describe('API', function() }, } - eq(expected, meths.nvim_list_uis()) + eq(expected, api.nvim_list_uis()) screen:detach() screen = Screen.new(44, 99) @@ -2973,39 +2970,39 @@ describe('API', function() expected[1].override = false expected[1].width = 44 expected[1].height = 99 - eq(expected, meths.nvim_list_uis()) + eq(expected, api.nvim_list_uis()) end) end) describe('nvim_create_namespace', function() it('works', function() - eq({}, meths.nvim_get_namespaces()) - eq(1, meths.nvim_create_namespace('ns-1')) - eq(2, meths.nvim_create_namespace('ns-2')) - eq(1, meths.nvim_create_namespace('ns-1')) - eq({ ['ns-1'] = 1, ['ns-2'] = 2 }, meths.nvim_get_namespaces()) - eq(3, meths.nvim_create_namespace('')) - eq(4, meths.nvim_create_namespace('')) - eq({ ['ns-1'] = 1, ['ns-2'] = 2 }, meths.nvim_get_namespaces()) + eq({}, api.nvim_get_namespaces()) + eq(1, api.nvim_create_namespace('ns-1')) + eq(2, api.nvim_create_namespace('ns-2')) + eq(1, api.nvim_create_namespace('ns-1')) + eq({ ['ns-1'] = 1, ['ns-2'] = 2 }, api.nvim_get_namespaces()) + eq(3, api.nvim_create_namespace('')) + eq(4, api.nvim_create_namespace('')) + eq({ ['ns-1'] = 1, ['ns-2'] = 2 }, api.nvim_get_namespaces()) end) end) describe('nvim_create_buf', function() it('works', function() - eq({ id = 2 }, meths.nvim_create_buf(true, false)) - eq({ id = 3 }, meths.nvim_create_buf(false, false)) + eq({ id = 2 }, api.nvim_create_buf(true, false)) + eq({ id = 3 }, api.nvim_create_buf(false, false)) eq( ' 1 %a "[No Name]" line 1\n' .. ' 2 h "[No Name]" line 0', command_output('ls') ) -- current buffer didn't change - eq({ id = 1 }, meths.nvim_get_current_buf()) + eq({ id = 1 }, api.nvim_get_current_buf()) local screen = Screen.new(20, 4) screen:attach() - meths.nvim_buf_set_lines(2, 0, -1, true, { 'some text' }) - meths.nvim_set_current_buf(2) + api.nvim_buf_set_lines(2, 0, -1, true, { 'some text' }) + api.nvim_set_current_buf(2) screen:expect( [[ ^some text | @@ -3019,43 +3016,43 @@ describe('API', function() end) it('can change buftype before visiting', function() - meths.nvim_set_option_value('hidden', false, {}) - eq({ id = 2 }, meths.nvim_create_buf(true, false)) - meths.nvim_set_option_value('buftype', 'nofile', { buf = 2 }) - meths.nvim_buf_set_lines(2, 0, -1, true, { 'test text' }) + api.nvim_set_option_value('hidden', false, {}) + eq({ id = 2 }, api.nvim_create_buf(true, false)) + api.nvim_set_option_value('buftype', 'nofile', { buf = 2 }) + api.nvim_buf_set_lines(2, 0, -1, true, { 'test text' }) command('split | buffer 2') - eq({ id = 2 }, meths.nvim_get_current_buf()) + eq({ id = 2 }, api.nvim_get_current_buf()) -- if the buf_set_option("buftype") didn't work, this would error out. command('close') - eq({ id = 1 }, meths.nvim_get_current_buf()) + eq({ id = 1 }, api.nvim_get_current_buf()) end) it('does not trigger BufEnter, BufWinEnter', function() command('let g:fired = v:false') command('au BufEnter,BufWinEnter * let g:fired = v:true') - eq({ id = 2 }, meths.nvim_create_buf(true, false)) - meths.nvim_buf_set_lines(2, 0, -1, true, { 'test', 'text' }) + eq({ id = 2 }, api.nvim_create_buf(true, false)) + api.nvim_buf_set_lines(2, 0, -1, true, { 'test', 'text' }) eq(false, eval('g:fired')) end) it('TextChanged and TextChangedI do not trigger without changes', function() - local buf = meths.nvim_create_buf(true, false) + local buf = api.nvim_create_buf(true, false) command([[let g:changed = '']]) - meths.nvim_create_autocmd({ 'TextChanged', 'TextChangedI' }, { + api.nvim_create_autocmd({ 'TextChanged', 'TextChangedI' }, { buffer = buf, command = 'let g:changed ..= mode()', }) - meths.nvim_set_current_buf(buf) + api.nvim_set_current_buf(buf) feed('i') - eq('', meths.nvim_get_var('changed')) + eq('', api.nvim_get_var('changed')) end) it('scratch-buffer', function() - eq({ id = 2 }, meths.nvim_create_buf(false, true)) - eq({ id = 3 }, meths.nvim_create_buf(true, true)) - eq({ id = 4 }, meths.nvim_create_buf(true, true)) + eq({ id = 2 }, api.nvim_create_buf(false, true)) + eq({ id = 3 }, api.nvim_create_buf(true, true)) + eq({ id = 4 }, api.nvim_create_buf(true, true)) local scratch_bufs = { 2, 3, 4 } eq( ' 1 %a "[No Name]" line 1\n' @@ -3064,7 +3061,7 @@ describe('API', function() exec_capture('ls') ) -- current buffer didn't change - eq({ id = 1 }, meths.nvim_get_current_buf()) + eq({ id = 1 }, api.nvim_get_current_buf()) local screen = Screen.new(20, 4) screen:set_default_attr_ids({ @@ -3076,27 +3073,27 @@ describe('API', function() -- Editing a scratch-buffer does NOT change its properties. -- local edited_buf = 2 - meths.nvim_buf_set_lines(edited_buf, 0, -1, true, { 'some text' }) + api.nvim_buf_set_lines(edited_buf, 0, -1, true, { 'some text' }) for _, b in ipairs(scratch_bufs) do - eq('nofile', meths.nvim_get_option_value('buftype', { buf = b })) - eq('hide', meths.nvim_get_option_value('bufhidden', { buf = b })) - eq(false, meths.nvim_get_option_value('swapfile', { buf = b })) - eq(false, meths.nvim_get_option_value('modeline', { buf = b })) + eq('nofile', api.nvim_get_option_value('buftype', { buf = b })) + eq('hide', api.nvim_get_option_value('bufhidden', { buf = b })) + eq(false, api.nvim_get_option_value('swapfile', { buf = b })) + eq(false, api.nvim_get_option_value('modeline', { buf = b })) end -- -- Visiting a scratch-buffer DOES NOT change its properties. -- - meths.nvim_set_current_buf(edited_buf) + api.nvim_set_current_buf(edited_buf) screen:expect([[ ^some text | {1:~ }|*2 | ]]) - eq('nofile', meths.nvim_get_option_value('buftype', { buf = edited_buf })) - eq('hide', meths.nvim_get_option_value('bufhidden', { buf = edited_buf })) - eq(false, meths.nvim_get_option_value('swapfile', { buf = edited_buf })) - eq(false, meths.nvim_get_option_value('modeline', { buf = edited_buf })) + eq('nofile', api.nvim_get_option_value('buftype', { buf = edited_buf })) + eq('hide', api.nvim_get_option_value('bufhidden', { buf = edited_buf })) + eq(false, api.nvim_get_option_value('swapfile', { buf = edited_buf })) + eq(false, api.nvim_get_option_value('modeline', { buf = edited_buf })) -- Scratch buffer can be wiped without error. command('bwipe') @@ -3118,11 +3115,11 @@ describe('API', function() describe('nvim_get_runtime_file', function() local p = helpers.alter_slashes it('can find files', function() - eq({}, meths.nvim_get_runtime_file('bork.borkbork', false)) - eq({}, meths.nvim_get_runtime_file('bork.borkbork', true)) - eq(1, #meths.nvim_get_runtime_file('autoload/msgpack.vim', false)) - eq(1, #meths.nvim_get_runtime_file('autoload/msgpack.vim', true)) - local val = meths.nvim_get_runtime_file('autoload/remote/*.vim', true) + eq({}, api.nvim_get_runtime_file('bork.borkbork', false)) + eq({}, api.nvim_get_runtime_file('bork.borkbork', true)) + eq(1, #api.nvim_get_runtime_file('autoload/msgpack.vim', false)) + eq(1, #api.nvim_get_runtime_file('autoload/msgpack.vim', true)) + local val = api.nvim_get_runtime_file('autoload/remote/*.vim', true) eq(2, #val) if endswith(val[1], 'define.vim') then ok(endswith(val[1], p 'autoload/remote/define.vim')) @@ -3131,37 +3128,37 @@ describe('API', function() ok(endswith(val[1], p 'autoload/remote/host.vim')) ok(endswith(val[2], p 'autoload/remote/define.vim')) end - val = meths.nvim_get_runtime_file('autoload/remote/*.vim', false) + val = api.nvim_get_runtime_file('autoload/remote/*.vim', false) eq(1, #val) ok( endswith(val[1], p 'autoload/remote/define.vim') or endswith(val[1], p 'autoload/remote/host.vim') ) - val = meths.nvim_get_runtime_file('lua', true) + val = api.nvim_get_runtime_file('lua', true) eq(1, #val) ok(endswith(val[1], p 'lua')) - val = meths.nvim_get_runtime_file('lua/vim', true) + val = api.nvim_get_runtime_file('lua/vim', true) eq(1, #val) ok(endswith(val[1], p 'lua/vim')) end) it('can find directories', function() - local val = meths.nvim_get_runtime_file('lua/', true) + local val = api.nvim_get_runtime_file('lua/', true) eq(1, #val) ok(endswith(val[1], p 'lua/')) - val = meths.nvim_get_runtime_file('lua/vim/', true) + val = api.nvim_get_runtime_file('lua/vim/', true) eq(1, #val) ok(endswith(val[1], p 'lua/vim/')) - eq({}, meths.nvim_get_runtime_file('foobarlang/', true)) + eq({}, api.nvim_get_runtime_file('foobarlang/', true)) end) it('can handle bad patterns', function() skip(is_os('win')) - eq('Vim:E220: Missing }.', pcall_err(meths.nvim_get_runtime_file, '{', false)) + eq('Vim:E220: Missing }.', pcall_err(api.nvim_get_runtime_file, '{', false)) eq( 'Vim(echo):E5555: API call: Vim:E220: Missing }.', @@ -3172,25 +3169,25 @@ describe('API', function() describe('nvim_get_all_options_info', function() it('should have key value pairs of option names', function() - local options_info = meths.nvim_get_all_options_info() + local options_info = api.nvim_get_all_options_info() neq(nil, options_info.listchars) neq(nil, options_info.tabstop) - eq(meths.nvim_get_option_info 'winhighlight', options_info.winhighlight) + eq(api.nvim_get_option_info 'winhighlight', options_info.winhighlight) end) it('should not crash when echoed', function() - meths.nvim_exec2('echo nvim_get_all_options_info()', { output = true }) + api.nvim_exec2('echo nvim_get_all_options_info()', { output = true }) end) end) describe('nvim_get_option_info', function() it('should error for unknown options', function() - eq("Invalid option (not found): 'bogus'", pcall_err(meths.nvim_get_option_info, 'bogus')) + eq("Invalid option (not found): 'bogus'", pcall_err(api.nvim_get_option_info, 'bogus')) end) it('should return the same options for short and long name', function() - eq(meths.nvim_get_option_info 'winhl', meths.nvim_get_option_info 'winhighlight') + eq(api.nvim_get_option_info 'winhl', api.nvim_get_option_info 'winhighlight') end) it('should have information about window options', function() @@ -3208,7 +3205,7 @@ describe('API', function() shortname = 'winhl', type = 'string', was_set = false, - }, meths.nvim_get_option_info 'winhl') + }, api.nvim_get_option_info 'winhl') end) it('should have information about buffer options', function() @@ -3226,13 +3223,13 @@ describe('API', function() shortname = 'ft', type = 'string', was_set = false, - }, meths.nvim_get_option_info 'filetype') + }, api.nvim_get_option_info 'filetype') end) it('should have information about global options', function() -- precondition: the option was changed from its default -- in test setup. - eq(false, meths.nvim_get_option_value('showcmd', {})) + eq(false, api.nvim_get_option_value('showcmd', {})) eq({ allows_duplicates = true, @@ -3248,9 +3245,9 @@ describe('API', function() shortname = 'sc', type = 'boolean', was_set = true, - }, meths.nvim_get_option_info 'showcmd') + }, api.nvim_get_option_info 'showcmd') - meths.nvim_set_option_value('showcmd', true, {}) + api.nvim_set_option_value('showcmd', true, {}) eq({ allows_duplicates = true, @@ -3266,7 +3263,7 @@ describe('API', function() shortname = 'sc', type = 'boolean', was_set = true, - }, meths.nvim_get_option_info 'showcmd') + }, api.nvim_get_option_info 'showcmd') end) end) @@ -3293,18 +3290,18 @@ describe('API', function() ) exec_lua 'vim.cmd.vsplit()' - meths.nvim_create_buf(false, false) + api.nvim_create_buf(false, false) - bufs = meths.nvim_list_bufs() - wins = meths.nvim_list_wins() + bufs = api.nvim_list_bufs() + wins = api.nvim_list_wins() - meths.nvim_win_set_buf(wins[1].id, bufs[1].id) - meths.nvim_win_set_buf(wins[2].id, bufs[2].id) + api.nvim_win_set_buf(wins[1].id, bufs[1].id) + api.nvim_win_set_buf(wins[2].id, bufs[2].id) - meths.nvim_set_current_win(wins[2].id) - meths.nvim_exec('source ' .. fname, false) + api.nvim_set_current_win(wins[2].id) + api.nvim_exec('source ' .. fname, false) - meths.nvim_set_current_win(wins[1].id) + api.nvim_set_current_win(wins[1].id) end) after_each(function() @@ -3312,9 +3309,9 @@ describe('API', function() end) it('should return option information', function() - eq(meths.nvim_get_option_info('dictionary'), meths.nvim_get_option_info2('dictionary', {})) -- buffer - eq(meths.nvim_get_option_info('fillchars'), meths.nvim_get_option_info2('fillchars', {})) -- window - eq(meths.nvim_get_option_info('completeopt'), meths.nvim_get_option_info2('completeopt', {})) -- global + eq(api.nvim_get_option_info('dictionary'), api.nvim_get_option_info2('dictionary', {})) -- buffer + eq(api.nvim_get_option_info('fillchars'), api.nvim_get_option_info2('fillchars', {})) -- window + eq(api.nvim_get_option_info('completeopt'), api.nvim_get_option_info2('completeopt', {})) -- global end) describe('last set', function() @@ -3346,21 +3343,21 @@ describe('API', function() for _, t in pairs(tests) do it(t.desc, function() -- Switch to the target buffer/window so that curbuf/curwin are used. - meths.nvim_set_current_win(wins[2].id) - local info = meths.nvim_get_option_info2(unpack(t.args)) + api.nvim_set_current_win(wins[2].id) + local info = api.nvim_get_option_info2(unpack(t.args)) eq(t.linenr, info.last_set_linenr) eq(t.sid, info.last_set_sid) end) end it('is provided for cross-buffer requests', function() - local info = meths.nvim_get_option_info2('formatprg', { buf = bufs[2].id }) + local info = api.nvim_get_option_info2('formatprg', { buf = bufs[2].id }) eq(2, info.last_set_linenr) eq(1, info.last_set_sid) end) it('is provided for cross-window requests', function() - local info = meths.nvim_get_option_info2('listchars', { win = wins[2].id }) + local info = api.nvim_get_option_info2('listchars', { win = wins[2].id }) eq(6, info.last_set_linenr) eq(1, info.last_set_sid) end) @@ -3427,7 +3424,7 @@ describe('API', function() it('can save message history', function() command('set cmdheight=2') -- suppress Press ENTER - meths.nvim_echo({ { 'msg\nmsg' }, { 'msg' } }, true, {}) + api.nvim_echo({ { 'msg\nmsg' }, { 'msg' } }, true, {}) eq('msg\nmsgmsg', exec_capture('messages')) end) @@ -3465,15 +3462,15 @@ describe('API', function() end) it('can batch process sequences', function() - local b = meths.nvim_create_buf(true, true) - meths.nvim_open_win( + local b = api.nvim_create_buf(true, true) + api.nvim_open_win( b, false, { width = 79, height = 31, row = 1, col = 1, relative = 'editor' } ) - local t = meths.nvim_open_term(b, {}) + local t = api.nvim_open_term(b, {}) - meths.nvim_chan_send(t, io.open('test/functional/fixtures/smile2.cat', 'r'):read('*a')) + api.nvim_chan_send(t, io.open('test/functional/fixtures/smile2.cat', 'r'):read('*a')) screen:expect { grid = [[ ^ | @@ -3579,56 +3576,53 @@ describe('API', function() describe('nvim_del_mark', function() it('works', function() - local buf = meths.nvim_create_buf(false, true) - meths.nvim_buf_set_lines(buf, -1, -1, true, { 'a', 'bit of', 'text' }) - eq(true, meths.nvim_buf_set_mark(buf, 'F', 2, 2, {})) - eq(true, meths.nvim_del_mark('F')) - eq({ 0, 0 }, meths.nvim_buf_get_mark(buf, 'F')) + local buf = api.nvim_create_buf(false, true) + api.nvim_buf_set_lines(buf, -1, -1, true, { 'a', 'bit of', 'text' }) + eq(true, api.nvim_buf_set_mark(buf, 'F', 2, 2, {})) + eq(true, api.nvim_del_mark('F')) + eq({ 0, 0 }, api.nvim_buf_get_mark(buf, 'F')) end) it('validation', function() - eq("Invalid mark name (must be file/uppercase): 'f'", pcall_err(meths.nvim_del_mark, 'f')) - eq("Invalid mark name (must be file/uppercase): '!'", pcall_err(meths.nvim_del_mark, '!')) - eq( - "Invalid mark name (must be a single char): 'fail'", - pcall_err(meths.nvim_del_mark, 'fail') - ) + eq("Invalid mark name (must be file/uppercase): 'f'", pcall_err(api.nvim_del_mark, 'f')) + eq("Invalid mark name (must be file/uppercase): '!'", pcall_err(api.nvim_del_mark, '!')) + eq("Invalid mark name (must be a single char): 'fail'", pcall_err(api.nvim_del_mark, 'fail')) end) end) describe('nvim_get_mark', function() it('works', function() - local buf = meths.nvim_create_buf(false, true) - meths.nvim_buf_set_lines(buf, -1, -1, true, { 'a', 'bit of', 'text' }) - meths.nvim_buf_set_mark(buf, 'F', 2, 2, {}) - meths.nvim_buf_set_name(buf, 'mybuf') - local mark = meths.nvim_get_mark('F', {}) + local buf = api.nvim_create_buf(false, true) + api.nvim_buf_set_lines(buf, -1, -1, true, { 'a', 'bit of', 'text' }) + api.nvim_buf_set_mark(buf, 'F', 2, 2, {}) + api.nvim_buf_set_name(buf, 'mybuf') + local mark = api.nvim_get_mark('F', {}) -- Compare the path tail only assert(string.find(mark[4], 'mybuf$')) eq({ 2, 2, buf.id, mark[4] }, mark) end) it('validation', function() - eq("Invalid mark name (must be file/uppercase): 'f'", pcall_err(meths.nvim_get_mark, 'f', {})) - eq("Invalid mark name (must be file/uppercase): '!'", pcall_err(meths.nvim_get_mark, '!', {})) + eq("Invalid mark name (must be file/uppercase): 'f'", pcall_err(api.nvim_get_mark, 'f', {})) + eq("Invalid mark name (must be file/uppercase): '!'", pcall_err(api.nvim_get_mark, '!', {})) eq( "Invalid mark name (must be a single char): 'fail'", - pcall_err(meths.nvim_get_mark, 'fail', {}) + pcall_err(api.nvim_get_mark, 'fail', {}) ) end) it('returns the expected when mark is not set', function() - eq(true, meths.nvim_del_mark('A')) - eq({ 0, 0, 0, '' }, meths.nvim_get_mark('A', {})) + eq(true, api.nvim_del_mark('A')) + eq({ 0, 0, 0, '' }, api.nvim_get_mark('A', {})) end) it('works with deleted buffers', function() local fname = tmpname() write_file(fname, 'a\nbit of\text') command('edit ' .. fname) - local buf = meths.nvim_get_current_buf() + local buf = api.nvim_get_current_buf() - meths.nvim_buf_set_mark(buf, 'F', 2, 2, {}) + api.nvim_buf_set_mark(buf, 'F', 2, 2, {}) command('new') -- Create new buf to avoid :bd failing command('bd! ' .. buf.id) os.remove(fname) - local mark = meths.nvim_get_mark('F', {}) + local mark = api.nvim_get_mark('F', {}) -- To avoid comparing relative vs absolute path local mfname = mark[4] local tail_patt = [[[\/][^\/]*$]] @@ -3642,72 +3636,72 @@ describe('API', function() eq({ str = '%StatusLineStringWithHighlights', width = 31, - }, meths.nvim_eval_statusline('%%StatusLineString%#WarningMsg#WithHighlights', {})) + }, api.nvim_eval_statusline('%%StatusLineString%#WarningMsg#WithHighlights', {})) end) it("doesn't exceed maxwidth", function() eq({ str = 'Should be trun>', width = 15, - }, meths.nvim_eval_statusline('Should be truncated%<', { maxwidth = 15 })) + }, api.nvim_eval_statusline('Should be truncated%<', { maxwidth = 15 })) end) it('supports ASCII fillchar', function() eq( { str = 'a~~~b', width = 5 }, - meths.nvim_eval_statusline('a%=b', { fillchar = '~', maxwidth = 5 }) + api.nvim_eval_statusline('a%=b', { fillchar = '~', maxwidth = 5 }) ) end) it('supports single-width multibyte fillchar', function() eq( { str = 'a━━━b', width = 5 }, - meths.nvim_eval_statusline('a%=b', { fillchar = '━', maxwidth = 5 }) + api.nvim_eval_statusline('a%=b', { fillchar = '━', maxwidth = 5 }) ) end) it('treats double-width fillchar as single-width', function() eq( { str = 'a哦哦哦b', width = 5 }, - meths.nvim_eval_statusline('a%=b', { fillchar = '哦', maxwidth = 5 }) + api.nvim_eval_statusline('a%=b', { fillchar = '哦', maxwidth = 5 }) ) end) it('treats control character fillchar as single-width', function() eq( { str = 'a\031\031\031b', width = 5 }, - meths.nvim_eval_statusline('a%=b', { fillchar = '\031', maxwidth = 5 }) + api.nvim_eval_statusline('a%=b', { fillchar = '\031', maxwidth = 5 }) ) end) it('rejects multiple-character fillchar', function() eq( "Invalid 'fillchar': expected single character", - pcall_err(meths.nvim_eval_statusline, '', { fillchar = 'aa' }) + pcall_err(api.nvim_eval_statusline, '', { fillchar = 'aa' }) ) end) it('rejects empty string fillchar', function() eq( "Invalid 'fillchar': expected single character", - pcall_err(meths.nvim_eval_statusline, '', { fillchar = '' }) + pcall_err(api.nvim_eval_statusline, '', { fillchar = '' }) ) end) it('rejects non-string fillchar', function() eq( "Invalid 'fillchar': expected String, got Integer", - pcall_err(meths.nvim_eval_statusline, '', { fillchar = 1 }) + pcall_err(api.nvim_eval_statusline, '', { fillchar = 1 }) ) end) it('rejects invalid string', function() - eq('E539: Illegal character <}>', pcall_err(meths.nvim_eval_statusline, '%{%}', {})) + eq('E539: Illegal character <}>', pcall_err(api.nvim_eval_statusline, '%{%}', {})) end) it('supports various items', function() - eq({ str = '0', width = 1 }, meths.nvim_eval_statusline('%l', { maxwidth = 5 })) + eq({ str = '0', width = 1 }, api.nvim_eval_statusline('%l', { maxwidth = 5 })) command('set readonly') - eq({ str = '[RO]', width = 4 }, meths.nvim_eval_statusline('%r', { maxwidth = 5 })) + eq({ str = '[RO]', width = 4 }, api.nvim_eval_statusline('%r', { maxwidth = 5 })) local screen = Screen.new(80, 24) screen:attach() command('set showcmd') feed('1234') screen:expect({ any = '1234' }) - eq({ str = '1234', width = 4 }, meths.nvim_eval_statusline('%S', { maxwidth = 5 })) + eq({ str = '1234', width = 4 }, api.nvim_eval_statusline('%S', { maxwidth = 5 })) feed('56') screen:expect({ any = '123456' }) - eq({ str = '<3456', width = 5 }, meths.nvim_eval_statusline('%S', { maxwidth = 5 })) + eq({ str = '<3456', width = 5 }, api.nvim_eval_statusline('%S', { maxwidth = 5 })) end) describe('highlight parsing', function() it('works', function() @@ -3720,7 +3714,7 @@ describe('API', function() { start = 24, group = 'User1' }, }, }, - meths.nvim_eval_statusline( + api.nvim_eval_statusline( '%#WarningMsg#TextWithWarningHighlight%1*TextWithUserHighlight', { highlights = true } ) @@ -3733,7 +3727,7 @@ describe('API', function() highlights = { { start = 0, group = 'StatusLine' }, }, - }, meths.nvim_eval_statusline('TextWithNoHighlight', { highlights = true })) + }, api.nvim_eval_statusline('TextWithNoHighlight', { highlights = true })) end) it('works with inactive statusline', function() command('split') @@ -3747,9 +3741,9 @@ describe('API', function() { start = 19, group = 'WarningMsg' }, }, }, - meths.nvim_eval_statusline( + api.nvim_eval_statusline( 'TextWithNoHighlight%#WarningMsg#TextWithWarningHighlight', - { winid = meths.nvim_list_wins()[2].id, highlights = true } + { winid = api.nvim_list_wins()[2].id, highlights = true } ) ) end) @@ -3763,7 +3757,7 @@ describe('API', function() { start = 19, group = 'WarningMsg' }, }, }, - meths.nvim_eval_statusline( + api.nvim_eval_statusline( 'TextWithNoHighlight%#WarningMsg#TextWithWarningHighlight', { use_tabline = true, highlights = true } ) @@ -3779,7 +3773,7 @@ describe('API', function() { start = 19, group = 'WarningMsg' }, }, }, - meths.nvim_eval_statusline( + api.nvim_eval_statusline( 'TextWithNoHighlight%#WarningMsg#TextWithWarningHighlight', { use_winbar = true, highlights = true } ) @@ -3807,7 +3801,7 @@ describe('API', function() { group = 'ErrorMsg', start = 8 }, { group = 'Normal', start = 10 }, }, - }, meths.nvim_eval_statusline( + }, api.nvim_eval_statusline( '%C%s%=%l ', { use_statuscol_lnum = 4, highlights = true } )) @@ -3820,18 +3814,15 @@ describe('API', function() { group = 'ErrorMsg', start = 1 }, }, }, - meths.nvim_eval_statusline( - '%l%#ErrorMsg# ', - { use_statuscol_lnum = 3, highlights = true } - ) + api.nvim_eval_statusline('%l%#ErrorMsg# ', { use_statuscol_lnum = 3, highlights = true }) ) end) it('no memory leak with click functions', function() - meths.nvim_eval_statusline('%@ClickFunc@StatusLineStringWithClickFunc%T', {}) + api.nvim_eval_statusline('%@ClickFunc@StatusLineStringWithClickFunc%T', {}) eq({ str = 'StatusLineStringWithClickFunc', width = 29, - }, meths.nvim_eval_statusline('%@ClickFunc@StatusLineStringWithClickFunc%T', {})) + }, api.nvim_eval_statusline('%@ClickFunc@StatusLineStringWithClickFunc%T', {})) end) end) end) @@ -3874,7 +3865,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('echo foo', {})) + }, api.nvim_parse_cmd('echo foo', {})) end) it('works with ranges', function() eq({ @@ -3914,7 +3905,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('4,6s/math.random/math.max/', {})) + }, api.nvim_parse_cmd('4,6s/math.random/math.max/', {})) end) it('works with count', function() eq({ @@ -3955,7 +3946,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('buffer 1', {})) + }, api.nvim_parse_cmd('buffer 1', {})) end) it('works with register', function() eq({ @@ -3996,7 +3987,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('put +', {})) + }, api.nvim_parse_cmd('put +', {})) eq({ cmd = 'put', args = {}, @@ -4035,7 +4026,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('put', {})) + }, api.nvim_parse_cmd('put', {})) end) it('works with range, count and register', function() eq({ @@ -4077,7 +4068,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('1,3delete * 5', {})) + }, api.nvim_parse_cmd('1,3delete * 5', {})) end) it('works with bang', function() eq({ @@ -4117,7 +4108,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('w!', {})) + }, api.nvim_parse_cmd('w!', {})) end) it('works with modifiers', function() eq( @@ -4159,7 +4150,7 @@ describe('API', function() vertical = false, }, }, - meths.nvim_parse_cmd( + api.nvim_parse_cmd( '15verbose silent! horizontal topleft tab filter /foo/ split foo.txt', {} ) @@ -4203,7 +4194,7 @@ describe('API', function() vertical = false, }, }, - meths.nvim_parse_cmd( + api.nvim_parse_cmd( '0verbose unsilent botright 0tab confirm filter! /foo/ split foo.txt', {} ) @@ -4248,7 +4239,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('4,6MyCommand! test it', {})) + }, api.nvim_parse_cmd('4,6MyCommand! test it', {})) end) it('works for commands separated by bar', function() eq({ @@ -4288,7 +4279,7 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('argadd a.txt | argadd b.txt', {})) + }, api.nvim_parse_cmd('argadd a.txt | argadd b.txt', {})) end) it('works for nargs=1', function() command('command -nargs=1 MyCommand echo <q-args>') @@ -4328,28 +4319,28 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('MyCommand test it', {})) + }, api.nvim_parse_cmd('MyCommand test it', {})) end) it('validates command', function() - eq('Error while parsing command line', pcall_err(meths.nvim_parse_cmd, '', {})) - eq('Error while parsing command line', pcall_err(meths.nvim_parse_cmd, '" foo', {})) + eq('Error while parsing command line', pcall_err(api.nvim_parse_cmd, '', {})) + eq('Error while parsing command line', pcall_err(api.nvim_parse_cmd, '" foo', {})) eq( 'Error while parsing command line: E492: Not an editor command: Fubar', - pcall_err(meths.nvim_parse_cmd, 'Fubar', {}) + pcall_err(api.nvim_parse_cmd, 'Fubar', {}) ) command('command! Fubar echo foo') eq( 'Error while parsing command line: E477: No ! allowed', - pcall_err(meths.nvim_parse_cmd, 'Fubar!', {}) + pcall_err(api.nvim_parse_cmd, 'Fubar!', {}) ) eq( 'Error while parsing command line: E481: No range allowed', - pcall_err(meths.nvim_parse_cmd, '4,6Fubar', {}) + pcall_err(api.nvim_parse_cmd, '4,6Fubar', {}) ) command('command! Foobar echo foo') eq( 'Error while parsing command line: E464: Ambiguous use of user-defined command', - pcall_err(meths.nvim_parse_cmd, 'F', {}) + pcall_err(api.nvim_parse_cmd, 'F', {}) ) end) it('does not interfere with printing line in Ex mode #19400', function() @@ -4371,7 +4362,7 @@ describe('API', function() Entering Ex mode. Type "visual" to go to Normal mode. | :1^ | ]]) - eq('Error while parsing command line', pcall_err(meths.nvim_parse_cmd, '', {})) + eq('Error while parsing command line', pcall_err(api.nvim_parse_cmd, '', {})) feed('<CR>') screen:expect([[ foo | @@ -4384,10 +4375,10 @@ describe('API', function() ]]) end) it('does not move cursor or change search history/pattern #19878 #19890', function() - meths.nvim_buf_set_lines(0, 0, -1, true, { 'foo', 'bar', 'foo', 'bar' }) - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) - eq('', funcs.getreg('/')) - eq('', funcs.histget('search')) + api.nvim_buf_set_lines(0, 0, -1, true, { 'foo', 'bar', 'foo', 'bar' }) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) + eq('', fn.getreg('/')) + eq('', fn.histget('search')) feed(':') -- call the API in cmdline mode to test whether it changes search history eq({ cmd = 'normal', @@ -4426,15 +4417,15 @@ describe('API', function() verbose = -1, vertical = false, }, - }, meths.nvim_parse_cmd('+2;/bar/normal! x', {})) - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) - eq('', funcs.getreg('/')) - eq('', funcs.histget('search')) + }, api.nvim_parse_cmd('+2;/bar/normal! x', {})) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) + eq('', fn.getreg('/')) + eq('', fn.histget('search')) end) it('result can be used directly by nvim_cmd #20051', function() - eq('foo', meths.nvim_cmd(meths.nvim_parse_cmd('echo "foo"', {}), { output = true })) - meths.nvim_cmd(meths.nvim_parse_cmd('set cursorline', {}), {}) - eq(true, meths.nvim_get_option_value('cursorline', {})) + eq('foo', api.nvim_cmd(api.nvim_parse_cmd('echo "foo"', {}), { output = true })) + api.nvim_cmd(api.nvim_parse_cmd('set cursorline', {}), {}) + eq(true, api.nvim_get_option_value('cursorline', {})) end) it('no side-effects (error messages) in pcall() #20339', function() eq( @@ -4447,86 +4438,83 @@ describe('API', function() describe('nvim_cmd', function() it('works', function() - meths.nvim_cmd({ cmd = 'set', args = { 'cursorline' } }, {}) - eq(true, meths.nvim_get_option_value('cursorline', {})) + api.nvim_cmd({ cmd = 'set', args = { 'cursorline' } }, {}) + eq(true, api.nvim_get_option_value('cursorline', {})) end) it('validation', function() - eq("Invalid 'cmd': expected non-empty String", pcall_err(meths.nvim_cmd, { cmd = '' }, {})) - eq("Invalid 'cmd': expected String, got Array", pcall_err(meths.nvim_cmd, { cmd = {} }, {})) + eq("Invalid 'cmd': expected non-empty String", pcall_err(api.nvim_cmd, { cmd = '' }, {})) + eq("Invalid 'cmd': expected String, got Array", pcall_err(api.nvim_cmd, { cmd = {} }, {})) eq( "Invalid 'args': expected Array, got Boolean", - pcall_err(meths.nvim_cmd, { cmd = 'set', args = true }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = true }, {}) ) eq( 'Invalid command arg: expected non-whitespace', - pcall_err(meths.nvim_cmd, { cmd = 'set', args = { ' ' } }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = { ' ' } }, {}) ) eq( 'Invalid command arg: expected valid type, got Array', - pcall_err(meths.nvim_cmd, { cmd = 'set', args = { {} } }, {}) - ) - eq( - 'Wrong number of arguments', - pcall_err(meths.nvim_cmd, { cmd = 'aboveleft', args = {} }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = { {} } }, {}) ) + eq('Wrong number of arguments', pcall_err(api.nvim_cmd, { cmd = 'aboveleft', args = {} }, {})) eq( 'Command cannot accept bang: print', - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, bang = true }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, bang = true }, {}) ) eq( 'Command cannot accept range: set', - pcall_err(meths.nvim_cmd, { cmd = 'set', args = {}, range = { 1 } }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = {}, range = { 1 } }, {}) ) eq( "Invalid 'range': expected Array, got Boolean", - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, range = true }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, range = true }, {}) ) eq( "Invalid 'range': expected <=2 elements", - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, range = { 1, 2, 3, 4 } }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, range = { 1, 2, 3, 4 } }, {}) ) eq( 'Invalid range element: expected non-negative Integer', - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, range = { -1 } }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, range = { -1 } }, {}) ) eq( 'Command cannot accept count: set', - pcall_err(meths.nvim_cmd, { cmd = 'set', args = {}, count = 1 }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = {}, count = 1 }, {}) ) eq( "Invalid 'count': expected Integer, got Boolean", - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, count = true }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, count = true }, {}) ) eq( "Invalid 'count': expected non-negative Integer", - pcall_err(meths.nvim_cmd, { cmd = 'print', args = {}, count = -1 }, {}) + pcall_err(api.nvim_cmd, { cmd = 'print', args = {}, count = -1 }, {}) ) eq( 'Command cannot accept register: set', - pcall_err(meths.nvim_cmd, { cmd = 'set', args = {}, reg = 'x' }, {}) + pcall_err(api.nvim_cmd, { cmd = 'set', args = {}, reg = 'x' }, {}) ) eq( 'Cannot use register "=', - pcall_err(meths.nvim_cmd, { cmd = 'put', args = {}, reg = '=' }, {}) + pcall_err(api.nvim_cmd, { cmd = 'put', args = {}, reg = '=' }, {}) ) eq( "Invalid 'reg': expected single character, got xx", - pcall_err(meths.nvim_cmd, { cmd = 'put', args = {}, reg = 'xx' }, {}) + pcall_err(api.nvim_cmd, { cmd = 'put', args = {}, reg = 'xx' }, {}) ) -- #20681 - eq('Invalid command: "win_getid"', pcall_err(meths.nvim_cmd, { cmd = 'win_getid' }, {})) - eq('Invalid command: "echo "hi""', pcall_err(meths.nvim_cmd, { cmd = 'echo "hi"' }, {})) + eq('Invalid command: "win_getid"', pcall_err(api.nvim_cmd, { cmd = 'win_getid' }, {})) + eq('Invalid command: "echo "hi""', pcall_err(api.nvim_cmd, { cmd = 'echo "hi"' }, {})) eq('Invalid command: "win_getid"', pcall_err(exec_lua, [[return vim.cmd.win_getid{}]])) -- Lua call allows empty {} for dict item. eq('', exec_lua([[return vim.cmd{ cmd = "set", args = {}, magic = {} }]])) eq('', exec_lua([[return vim.cmd{ cmd = "set", args = {}, mods = {} }]])) - eq('', meths.nvim_cmd({ cmd = 'set', args = {}, magic = {} }, {})) + eq('', api.nvim_cmd({ cmd = 'set', args = {}, magic = {} }, {})) -- Lua call does not allow non-empty list-like {} for dict item. eq( @@ -4544,11 +4532,11 @@ describe('API', function() end) it('captures output', function() - eq('foo', meths.nvim_cmd({ cmd = 'echo', args = { '"foo"' } }, { output = true })) + eq('foo', api.nvim_cmd({ cmd = 'echo', args = { '"foo"' } }, { output = true })) end) it('sets correct script context', function() - meths.nvim_cmd({ cmd = 'set', args = { 'cursorline' } }, {}) + api.nvim_cmd({ cmd = 'set', args = { 'cursorline' } }, {}) local str = exec_capture([[verbose set cursorline?]]) neq(nil, str:find('cursorline\n\tLast set from API client %(channel id %d+%)')) end) @@ -4563,7 +4551,7 @@ describe('API', function() line5 line6 ]] - meths.nvim_cmd({ cmd = 'del', range = { 2, 4 } }, {}) + api.nvim_cmd({ cmd = 'del', range = { 2, 4 } }, {}) expect [[ line1 you didn't expect this @@ -4581,7 +4569,7 @@ describe('API', function() line5 line6 ]] - meths.nvim_cmd({ cmd = 'del', range = { 2 }, count = 4 }, {}) + api.nvim_cmd({ cmd = 'del', range = { 2 }, count = 4 }, {}) expect [[ line1 line5 @@ -4598,7 +4586,7 @@ describe('API', function() line5 line6 ]] - meths.nvim_cmd({ cmd = 'del', range = { 2, 4 }, reg = 'a' }, {}) + api.nvim_cmd({ cmd = 'del', range = { 2, 4 }, reg = 'a' }, {}) command('1put a') expect [[ line1 @@ -4611,29 +4599,29 @@ describe('API', function() ]] end) it('works with bang', function() - meths.nvim_create_user_command('Foo', 'echo "<bang>"', { bang = true }) - eq('!', meths.nvim_cmd({ cmd = 'Foo', bang = true }, { output = true })) - eq('', meths.nvim_cmd({ cmd = 'Foo', bang = false }, { output = true })) + api.nvim_create_user_command('Foo', 'echo "<bang>"', { bang = true }) + eq('!', api.nvim_cmd({ cmd = 'Foo', bang = true }, { output = true })) + eq('', api.nvim_cmd({ cmd = 'Foo', bang = false }, { output = true })) end) it('works with modifiers', function() -- with silent = true output is still captured eq( '1', - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'echomsg', args = { '1' }, mods = { silent = true } }, { output = true } ) ) -- but message isn't added to message history - eq('', meths.nvim_cmd({ cmd = 'messages' }, { output = true })) + eq('', api.nvim_cmd({ cmd = 'messages' }, { output = true })) - meths.nvim_create_user_command('Foo', 'set verbose', {}) - eq(' verbose=1', meths.nvim_cmd({ cmd = 'Foo', mods = { verbose = 1 } }, { output = true })) + api.nvim_create_user_command('Foo', 'set verbose', {}) + eq(' verbose=1', api.nvim_cmd({ cmd = 'Foo', mods = { verbose = 1 } }, { output = true })) - meths.nvim_create_user_command('Mods', "echo '<mods>'", {}) + api.nvim_create_user_command('Mods', "echo '<mods>'", {}) eq( 'keepmarks keeppatterns silent 3verbose aboveleft horizontal', - meths.nvim_cmd({ + api.nvim_cmd({ cmd = 'Mods', mods = { horizontal = true, @@ -4645,19 +4633,19 @@ describe('API', function() }, }, { output = true }) ) - eq(0, meths.nvim_get_option_value('verbose', {})) + eq(0, api.nvim_get_option_value('verbose', {})) command('edit foo.txt | edit bar.txt') eq( ' 1 #h "foo.txt" line 1', - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'buffers', mods = { filter = { pattern = 'foo', force = false } } }, { output = true } ) ) eq( ' 2 %a "bar.txt" line 1', - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'buffers', mods = { filter = { pattern = 'foo', force = true } } }, { output = true } ) @@ -4665,10 +4653,10 @@ describe('API', function() -- with emsg_silent = true error is suppressed feed([[:lua vim.api.nvim_cmd({ cmd = 'call', mods = { emsg_silent = true } }, {})<CR>]]) - eq('', meths.nvim_cmd({ cmd = 'messages' }, { output = true })) + eq('', api.nvim_cmd({ cmd = 'messages' }, { output = true })) -- error from the next command typed is not suppressed #21420 feed(':call<CR><CR>') - eq('E471: Argument required', meths.nvim_cmd({ cmd = 'messages' }, { output = true })) + eq('E471: Argument required', api.nvim_cmd({ cmd = 'messages' }, { output = true })) end) it('works with magic.file', function() exec_lua([[ @@ -4678,7 +4666,7 @@ describe('API', function() ]]) eq( uv.cwd(), - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'Foo', args = { '%:p:h' }, magic = { file = true } }, { output = true } ) @@ -4690,24 +4678,24 @@ describe('API', function() echo a:000 endfunction ]]) - meths.nvim_create_user_command('Foo', 'call FooFunc(<f-args>)', { nargs = '+' }) + api.nvim_create_user_command('Foo', 'call FooFunc(<f-args>)', { nargs = '+' }) eq( [=[['a quick', 'brown fox', 'jumps over the', 'lazy dog']]=], - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'Foo', args = { 'a quick', 'brown fox', 'jumps over the', 'lazy dog' } }, { output = true } ) ) eq( [=[['test \ \\ \"""\', 'more\ tests\" ']]=], - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'Foo', args = { [[test \ \\ \"""\]], [[more\ tests\" ]] } }, { output = true } ) ) end) it('splits arguments correctly for Lua callback', function() - meths.nvim_exec_lua( + api.nvim_exec_lua( [[ local function FooFunc(opts) vim.print(opts.fargs) @@ -4719,14 +4707,14 @@ describe('API', function() ) eq( [[{ "a quick", "brown fox", "jumps over the", "lazy dog" }]], - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'Foo', args = { 'a quick', 'brown fox', 'jumps over the', 'lazy dog' } }, { output = true } ) ) eq( [[{ 'test \\ \\\\ \\"""\\', 'more\\ tests\\" ' }]], - meths.nvim_cmd( + api.nvim_cmd( { cmd = 'Foo', args = { [[test \ \\ \"""\]], [[more\ tests\" ]] } }, { output = true } ) @@ -4734,13 +4722,13 @@ describe('API', function() end) it('works with buffer names', function() command('edit foo.txt | edit bar.txt') - meths.nvim_cmd({ cmd = 'buffer', args = { 'foo.txt' } }, {}) - eq('foo.txt', funcs.fnamemodify(meths.nvim_buf_get_name(0), ':t')) - meths.nvim_cmd({ cmd = 'buffer', args = { 'bar.txt' } }, {}) - eq('bar.txt', funcs.fnamemodify(meths.nvim_buf_get_name(0), ':t')) + api.nvim_cmd({ cmd = 'buffer', args = { 'foo.txt' } }, {}) + eq('foo.txt', fn.fnamemodify(api.nvim_buf_get_name(0), ':t')) + api.nvim_cmd({ cmd = 'buffer', args = { 'bar.txt' } }, {}) + eq('bar.txt', fn.fnamemodify(api.nvim_buf_get_name(0), ':t')) end) it('triggers CmdUndefined event if command is not found', function() - meths.nvim_exec_lua( + api.nvim_exec_lua( [[ vim.api.nvim_create_autocmd("CmdUndefined", { pattern = "Foo", @@ -4751,17 +4739,17 @@ describe('API', function() ]], {} ) - eq('foo', meths.nvim_cmd({ cmd = 'Foo' }, { output = true })) + eq('foo', api.nvim_cmd({ cmd = 'Foo' }, { output = true })) end) it('errors if command is not implemented', function() - eq('Command not implemented: winpos', pcall_err(meths.nvim_cmd, { cmd = 'winpos' }, {})) + eq('Command not implemented: winpos', pcall_err(api.nvim_cmd, { cmd = 'winpos' }, {})) end) it('works with empty arguments list', function() - meths.nvim_cmd({ cmd = 'update' }, {}) - meths.nvim_cmd({ cmd = 'buffer', count = 0 }, {}) + api.nvim_cmd({ cmd = 'update' }, {}) + api.nvim_cmd({ cmd = 'buffer', count = 0 }, {}) end) it("doesn't suppress errors when used in keymapping", function() - meths.nvim_exec_lua( + api.nvim_exec_lua( [[ vim.keymap.set("n", "[l", function() vim.api.nvim_cmd({ cmd = "echo", args = {"foo"} }, {}) end) @@ -4772,31 +4760,31 @@ describe('API', function() neq(nil, string.find(eval('v:errmsg'), 'E5108:')) end) it('handles 0 range #19608', function() - meths.nvim_buf_set_lines(0, 0, -1, false, { 'aa' }) - meths.nvim_cmd({ cmd = 'delete', range = { 0 } }, {}) + api.nvim_buf_set_lines(0, 0, -1, false, { 'aa' }) + api.nvim_cmd({ cmd = 'delete', range = { 0 } }, {}) command('undo') - eq({ 'aa' }, meths.nvim_buf_get_lines(0, 0, 1, false)) + eq({ 'aa' }, api.nvim_buf_get_lines(0, 0, 1, false)) assert_alive() end) it('supports filename expansion', function() - meths.nvim_cmd({ cmd = 'argadd', args = { '%:p:h:t', '%:p:h:t' } }, {}) - local arg = funcs.expand('%:p:h:t') - eq({ arg, arg }, funcs.argv()) + api.nvim_cmd({ cmd = 'argadd', args = { '%:p:h:t', '%:p:h:t' } }, {}) + local arg = fn.expand('%:p:h:t') + eq({ arg, arg }, fn.argv()) end) it("'make' command works when argument count isn't 1 #19696", function() command('set makeprg=echo') command('set shellquote=') - matches('^:!echo ', meths.nvim_cmd({ cmd = 'make' }, { output = true })) + matches('^:!echo ', api.nvim_cmd({ cmd = 'make' }, { output = true })) assert_alive() matches( '^:!echo foo bar', - meths.nvim_cmd({ cmd = 'make', args = { 'foo', 'bar' } }, { output = true }) + api.nvim_cmd({ cmd = 'make', args = { 'foo', 'bar' } }, { output = true }) ) assert_alive() - local arg_pesc = pesc(funcs.expand('%:p:h:t')) + local arg_pesc = pesc(fn.expand('%:p:h:t')) matches( ('^:!echo %s %s'):format(arg_pesc, arg_pesc), - meths.nvim_cmd({ cmd = 'make', args = { '%:p:h:t', '%:p:h:t' } }, { output = true }) + api.nvim_cmd({ cmd = 'make', args = { '%:p:h:t', '%:p:h:t' } }, { output = true }) ) assert_alive() end) @@ -4806,7 +4794,7 @@ describe('API', function() screen:set_default_attr_ids({ [0] = { bold = true, foreground = Screen.colors.Blue }, }) - meths.nvim_cmd({ cmd = 'echo', args = { [['hello']] } }, { output = true }) + api.nvim_cmd({ cmd = 'echo', args = { [['hello']] } }, { output = true }) screen:expect { grid = [[ ^ | @@ -4829,29 +4817,29 @@ describe('API', function() } end) it('works with non-String args', function() - eq('2', meths.nvim_cmd({ cmd = 'echo', args = { 2 } }, { output = true })) - eq('1', meths.nvim_cmd({ cmd = 'echo', args = { true } }, { output = true })) + eq('2', api.nvim_cmd({ cmd = 'echo', args = { 2 } }, { output = true })) + eq('1', api.nvim_cmd({ cmd = 'echo', args = { true } }, { output = true })) end) describe('first argument as count', function() it('works', function() command('vsplit | enew') - meths.nvim_cmd({ cmd = 'bdelete', args = { meths.nvim_get_current_buf() } }, {}) - eq(1, meths.nvim_get_current_buf().id) + api.nvim_cmd({ cmd = 'bdelete', args = { api.nvim_get_current_buf() } }, {}) + eq(1, api.nvim_get_current_buf().id) end) it('works with :sleep using milliseconds', function() local start = uv.now() - meths.nvim_cmd({ cmd = 'sleep', args = { '100m' } }, {}) + api.nvim_cmd({ cmd = 'sleep', args = { '100m' } }, {}) ok(uv.now() - start <= 300) end) end) it(':call with unknown function does not crash #26289', function() eq( 'Vim:E117: Unknown function: UnknownFunc', - pcall_err(meths.nvim_cmd, { cmd = 'call', args = { 'UnknownFunc()' } }, {}) + pcall_err(api.nvim_cmd, { cmd = 'call', args = { 'UnknownFunc()' } }, {}) ) end) it(':throw does not crash #24556', function() - eq('42', pcall_err(meths.nvim_cmd, { cmd = 'throw', args = { '42' } }, {})) + eq('42', pcall_err(api.nvim_cmd, { cmd = 'throw', args = { '42' } }, {})) end) it('can use :return #24556', function() exec([[ @@ -4862,8 +4850,8 @@ describe('API', function() endfunc let g:result = Foo() ]]) - eq('before', meths.nvim_get_var('pos')) - eq({ 1, 2, 3 }, meths.nvim_get_var('result')) + eq('before', api.nvim_get_var('pos')) + eq({ 1, 2, 3 }, api.nvim_get_var('result')) end) end) end) diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua index 87aa0ca2a8..d30a6460a6 100644 --- a/test/functional/api/window_spec.lua +++ b/test/functional/api/window_spec.lua @@ -2,9 +2,9 @@ local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') local clear, curbuf, curbuf_contents, curwin, eq, neq, ok, feed, insert, eval = helpers.clear, - helpers.meths.nvim_get_current_buf, + helpers.api.nvim_get_current_buf, helpers.curbuf_contents, - helpers.meths.nvim_get_current_win, + helpers.api.nvim_get_current_win, helpers.eq, helpers.neq, helpers.ok, @@ -13,10 +13,10 @@ local clear, curbuf, curbuf_contents, curwin, eq, neq, ok, feed, insert, eval = helpers.eval local poke_eventloop = helpers.poke_eventloop local exec = helpers.exec -local funcs = helpers.funcs +local fn = helpers.fn local request = helpers.request local NIL = vim.NIL -local meths = helpers.meths +local api = helpers.api local command = helpers.command local pcall_err = helpers.pcall_err local assert_alive = helpers.assert_alive @@ -26,13 +26,13 @@ describe('API/win', function() describe('get_buf', function() it('works', function() - eq(curbuf(), meths.nvim_win_get_buf(meths.nvim_list_wins()[1])) + eq(curbuf(), api.nvim_win_get_buf(api.nvim_list_wins()[1])) command('new') - meths.nvim_set_current_win(meths.nvim_list_wins()[2]) - eq(curbuf(), meths.nvim_win_get_buf(meths.nvim_list_wins()[2])) + api.nvim_set_current_win(api.nvim_list_wins()[2]) + eq(curbuf(), api.nvim_win_get_buf(api.nvim_list_wins()[2])) neq( - meths.nvim_win_get_buf(meths.nvim_list_wins()[1]), - meths.nvim_win_get_buf(meths.nvim_list_wins()[2]) + api.nvim_win_get_buf(api.nvim_list_wins()[1]), + api.nvim_win_get_buf(api.nvim_list_wins()[2]) ) end) end) @@ -40,27 +40,21 @@ describe('API/win', function() describe('set_buf', function() it('works', function() command('new') - local windows = meths.nvim_list_wins() - neq(meths.nvim_win_get_buf(windows[2]), meths.nvim_win_get_buf(windows[1])) - meths.nvim_win_set_buf(windows[2], meths.nvim_win_get_buf(windows[1])) - eq(meths.nvim_win_get_buf(windows[2]), meths.nvim_win_get_buf(windows[1])) + local windows = api.nvim_list_wins() + neq(api.nvim_win_get_buf(windows[2]), api.nvim_win_get_buf(windows[1])) + api.nvim_win_set_buf(windows[2], api.nvim_win_get_buf(windows[1])) + eq(api.nvim_win_get_buf(windows[2]), api.nvim_win_get_buf(windows[1])) end) it('validates args', function() - eq( - 'Invalid buffer id: 23', - pcall_err(meths.nvim_win_set_buf, meths.nvim_get_current_win(), 23) - ) - eq( - 'Invalid window id: 23', - pcall_err(meths.nvim_win_set_buf, 23, meths.nvim_get_current_buf()) - ) + eq('Invalid buffer id: 23', pcall_err(api.nvim_win_set_buf, api.nvim_get_current_win(), 23)) + eq('Invalid window id: 23', pcall_err(api.nvim_win_set_buf, 23, api.nvim_get_current_buf())) end) it('disallowed in cmdwin if win={old_}curwin or buf=curbuf', function() - local new_buf = meths.nvim_create_buf(true, true) - local old_win = meths.nvim_get_current_win() - local new_win = meths.nvim_open_win(new_buf, false, { + local new_buf = api.nvim_create_buf(true, true) + local old_win = api.nvim_get_current_win() + local new_win = api.nvim_open_win(new_buf, false, { relative = 'editor', row = 10, col = 10, @@ -70,36 +64,36 @@ describe('API/win', function() feed('q:') eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_win_set_buf, 0, new_buf) + pcall_err(api.nvim_win_set_buf, 0, new_buf) ) eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_win_set_buf, old_win, new_buf) + pcall_err(api.nvim_win_set_buf, old_win, new_buf) ) eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_win_set_buf, new_win, 0) + pcall_err(api.nvim_win_set_buf, new_win, 0) ) - local next_buf = meths.nvim_create_buf(true, true) - meths.nvim_win_set_buf(new_win, next_buf) - eq(next_buf, meths.nvim_win_get_buf(new_win)) + local next_buf = api.nvim_create_buf(true, true) + api.nvim_win_set_buf(new_win, next_buf) + eq(next_buf, api.nvim_win_get_buf(new_win)) end) end) describe('{get,set}_cursor', function() it('works', function() - eq({ 1, 0 }, meths.nvim_win_get_cursor(0)) + eq({ 1, 0 }, api.nvim_win_get_cursor(0)) command('normal ityping\027o some text') eq('typing\n some text', curbuf_contents()) - eq({ 2, 10 }, meths.nvim_win_get_cursor(0)) - meths.nvim_win_set_cursor(0, { 2, 6 }) + eq({ 2, 10 }, api.nvim_win_get_cursor(0)) + api.nvim_win_set_cursor(0, { 2, 6 }) command('normal i dumb') eq('typing\n some dumb text', curbuf_contents()) end) it('does not leak memory when using invalid window ID with invalid pos', function() - eq('Invalid window id: 1', pcall_err(meths.nvim_win_set_cursor, 1, { 'b\na' })) + eq('Invalid window id: 1', pcall_err(api.nvim_win_set_cursor, 1, { 'b\na' })) end) it('updates the screen, and also when the window is unfocused', function() @@ -124,10 +118,10 @@ describe('API/win', function() ]], } -- cursor position is at beginning - eq({ 1, 0 }, meths.nvim_win_get_cursor(win)) + eq({ 1, 0 }, api.nvim_win_get_cursor(win)) -- move cursor to end - meths.nvim_win_set_cursor(win, { 101, 0 }) + api.nvim_win_set_cursor(win, { 101, 0 }) screen:expect { grid = [[ |*7 @@ -137,7 +131,7 @@ describe('API/win', function() } -- move cursor to the beginning again - meths.nvim_win_set_cursor(win, { 1, 0 }) + api.nvim_win_set_cursor(win, { 1, 0 }) screen:expect { grid = [[ ^prologue | @@ -150,7 +144,7 @@ describe('API/win', function() neq(win, curwin()) -- sanity check, cursor position is kept - eq({ 1, 0 }, meths.nvim_win_get_cursor(win)) + eq({ 1, 0 }, api.nvim_win_get_cursor(win)) screen:expect { grid = [[ ^ | @@ -164,7 +158,7 @@ describe('API/win', function() } -- move cursor to end - meths.nvim_win_set_cursor(win, { 101, 0 }) + api.nvim_win_set_cursor(win, { 101, 0 }) screen:expect { grid = [[ ^ | @@ -178,7 +172,7 @@ describe('API/win', function() } -- move cursor to the beginning again - meths.nvim_win_set_cursor(win, { 1, 0 }) + api.nvim_win_set_cursor(win, { 1, 0 }) screen:expect { grid = [[ ^ | @@ -205,17 +199,17 @@ describe('API/win', function() -- cursor position is at beginning local win = curwin() - eq({ 1, 0 }, meths.nvim_win_get_cursor(win)) + eq({ 1, 0 }, api.nvim_win_get_cursor(win)) -- move cursor to column 5 - meths.nvim_win_set_cursor(win, { 1, 5 }) + api.nvim_win_set_cursor(win, { 1, 5 }) -- move down a line feed('j') poke_eventloop() -- let nvim process the 'j' command -- cursor is still in column 5 - eq({ 2, 5 }, meths.nvim_win_get_cursor(win)) + eq({ 2, 5 }, api.nvim_win_get_cursor(win)) end) it('updates cursorline and statusline ruler in non-current window', function() @@ -245,7 +239,7 @@ describe('API/win', function() {3:[No Name] [+] 4,3 All }{4:[No Name] [+] 4,3 All}| | ]]) - meths.nvim_win_set_cursor(oldwin, { 1, 0 }) + api.nvim_win_set_cursor(oldwin, { 1, 0 }) screen:expect([[ aaa │{2:aaa }| bbb │bbb | @@ -283,7 +277,7 @@ describe('API/win', function() {3:[No Name] [+] }{4:[No Name] [+] }| | ]]) - meths.nvim_win_set_cursor(oldwin, { 2, 0 }) + api.nvim_win_set_cursor(oldwin, { 2, 0 }) screen:expect([[ aa{2:a} │{2:a}aa | bb{2:b} │bbb | @@ -300,33 +294,33 @@ describe('API/win', function() it('works', function() command('vsplit') eq( - meths.nvim_win_get_height(meths.nvim_list_wins()[2]), - meths.nvim_win_get_height(meths.nvim_list_wins()[1]) + api.nvim_win_get_height(api.nvim_list_wins()[2]), + api.nvim_win_get_height(api.nvim_list_wins()[1]) ) - meths.nvim_set_current_win(meths.nvim_list_wins()[2]) + api.nvim_set_current_win(api.nvim_list_wins()[2]) command('split') eq( - meths.nvim_win_get_height(meths.nvim_list_wins()[2]), - math.floor(meths.nvim_win_get_height(meths.nvim_list_wins()[1]) / 2) + api.nvim_win_get_height(api.nvim_list_wins()[2]), + math.floor(api.nvim_win_get_height(api.nvim_list_wins()[1]) / 2) ) - meths.nvim_win_set_height(meths.nvim_list_wins()[2], 2) - eq(2, meths.nvim_win_get_height(meths.nvim_list_wins()[2])) + api.nvim_win_set_height(api.nvim_list_wins()[2], 2) + eq(2, api.nvim_win_get_height(api.nvim_list_wins()[2])) end) it('correctly handles height=1', function() command('split') - meths.nvim_set_current_win(meths.nvim_list_wins()[1]) - meths.nvim_win_set_height(meths.nvim_list_wins()[2], 1) - eq(1, meths.nvim_win_get_height(meths.nvim_list_wins()[2])) + api.nvim_set_current_win(api.nvim_list_wins()[1]) + api.nvim_win_set_height(api.nvim_list_wins()[2], 1) + eq(1, api.nvim_win_get_height(api.nvim_list_wins()[2])) end) it('correctly handles height=1 with a winbar', function() command('set winbar=foobar') command('set winminheight=0') command('split') - meths.nvim_set_current_win(meths.nvim_list_wins()[1]) - meths.nvim_win_set_height(meths.nvim_list_wins()[2], 1) - eq(1, meths.nvim_win_get_height(meths.nvim_list_wins()[2])) + api.nvim_set_current_win(api.nvim_list_wins()[1]) + api.nvim_win_set_height(api.nvim_list_wins()[2], 1) + eq(1, api.nvim_win_get_height(api.nvim_list_wins()[2])) end) it('do not cause ml_get errors with foldmethod=expr #19989', function() @@ -342,7 +336,7 @@ describe('API/win', function() call nvim_win_set_height(w, 5) ]]) feed('l') - eq('', meths.nvim_get_vvar('errmsg')) + eq('', api.nvim_get_vvar('errmsg')) end) end) @@ -350,17 +344,17 @@ describe('API/win', function() it('works', function() command('split') eq( - meths.nvim_win_get_width(meths.nvim_list_wins()[2]), - meths.nvim_win_get_width(meths.nvim_list_wins()[1]) + api.nvim_win_get_width(api.nvim_list_wins()[2]), + api.nvim_win_get_width(api.nvim_list_wins()[1]) ) - meths.nvim_set_current_win(meths.nvim_list_wins()[2]) + api.nvim_set_current_win(api.nvim_list_wins()[2]) command('vsplit') eq( - meths.nvim_win_get_width(meths.nvim_list_wins()[2]), - math.floor(meths.nvim_win_get_width(meths.nvim_list_wins()[1]) / 2) + api.nvim_win_get_width(api.nvim_list_wins()[2]), + math.floor(api.nvim_win_get_width(api.nvim_list_wins()[1]) / 2) ) - meths.nvim_win_set_width(meths.nvim_list_wins()[2], 2) - eq(2, meths.nvim_win_get_width(meths.nvim_list_wins()[2])) + api.nvim_win_set_width(api.nvim_list_wins()[2], 2) + eq(2, api.nvim_win_get_width(api.nvim_list_wins()[2])) end) it('do not cause ml_get errors with foldmethod=expr #19989', function() @@ -376,23 +370,23 @@ describe('API/win', function() call nvim_win_set_width(w, 5) ]]) feed('l') - eq('', meths.nvim_get_vvar('errmsg')) + eq('', api.nvim_get_vvar('errmsg')) end) end) describe('{get,set,del}_var', function() it('works', function() - meths.nvim_win_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_win_get_var(0, 'lua')) - eq({ 1, 2, { ['3'] = 1 } }, meths.nvim_eval('w:lua')) - eq(1, funcs.exists('w:lua')) - meths.nvim_win_del_var(0, 'lua') - eq(0, funcs.exists('w:lua')) - eq('Key not found: lua', pcall_err(meths.nvim_win_del_var, 0, 'lua')) - meths.nvim_win_set_var(0, 'lua', 1) + api.nvim_win_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } }) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_win_get_var(0, 'lua')) + eq({ 1, 2, { ['3'] = 1 } }, api.nvim_eval('w:lua')) + eq(1, fn.exists('w:lua')) + api.nvim_win_del_var(0, 'lua') + eq(0, fn.exists('w:lua')) + eq('Key not found: lua', pcall_err(api.nvim_win_del_var, 0, 'lua')) + api.nvim_win_set_var(0, 'lua', 1) command('lockvar w:lua') - eq('Key is locked: lua', pcall_err(meths.nvim_win_del_var, 0, 'lua')) - eq('Key is locked: lua', pcall_err(meths.nvim_win_set_var, 0, 'lua', 1)) + eq('Key is locked: lua', pcall_err(api.nvim_win_del_var, 0, 'lua')) + eq('Key is locked: lua', pcall_err(api.nvim_win_set_var, 0, 'lua', 1)) end) it('window_set_var returns the old value', function() @@ -413,51 +407,51 @@ describe('API/win', function() describe('nvim_get_option_value, nvim_set_option_value', function() it('works', function() - meths.nvim_set_option_value('colorcolumn', '4,3', {}) - eq('4,3', meths.nvim_get_option_value('colorcolumn', {})) + api.nvim_set_option_value('colorcolumn', '4,3', {}) + eq('4,3', api.nvim_get_option_value('colorcolumn', {})) command('set modified hidden') command('enew') -- edit new buffer, window option is preserved - eq('4,3', meths.nvim_get_option_value('colorcolumn', {})) + eq('4,3', api.nvim_get_option_value('colorcolumn', {})) -- global-local option - meths.nvim_set_option_value('statusline', 'window-status', { win = 0 }) - eq('window-status', meths.nvim_get_option_value('statusline', { win = 0 })) - eq('', meths.nvim_get_option_value('statusline', { scope = 'global' })) + api.nvim_set_option_value('statusline', 'window-status', { win = 0 }) + eq('window-status', api.nvim_get_option_value('statusline', { win = 0 })) + eq('', api.nvim_get_option_value('statusline', { scope = 'global' })) command('set modified') command('enew') -- global-local: not preserved in new buffer -- confirm local value was not copied - eq('', meths.nvim_get_option_value('statusline', { win = 0 })) + eq('', api.nvim_get_option_value('statusline', { win = 0 })) eq('', eval('&l:statusline')) end) it('after switching windows #15390', function() command('tabnew') - local tab1 = unpack(meths.nvim_list_tabpages()) - local win1 = unpack(meths.nvim_tabpage_list_wins(tab1)) - meths.nvim_set_option_value('statusline', 'window-status', { win = win1.id }) + local tab1 = unpack(api.nvim_list_tabpages()) + local win1 = unpack(api.nvim_tabpage_list_wins(tab1)) + api.nvim_set_option_value('statusline', 'window-status', { win = win1.id }) command('split') command('wincmd J') command('wincmd j') - eq('window-status', meths.nvim_get_option_value('statusline', { win = win1.id })) + eq('window-status', api.nvim_get_option_value('statusline', { win = win1.id })) assert_alive() end) it('returns values for unset local options', function() - eq(-1, meths.nvim_get_option_value('scrolloff', { win = 0, scope = 'local' })) + eq(-1, api.nvim_get_option_value('scrolloff', { win = 0, scope = 'local' })) end) end) describe('get_position', function() it('works', function() - local height = meths.nvim_win_get_height(meths.nvim_list_wins()[1]) - local width = meths.nvim_win_get_width(meths.nvim_list_wins()[1]) + local height = api.nvim_win_get_height(api.nvim_list_wins()[1]) + local width = api.nvim_win_get_width(api.nvim_list_wins()[1]) command('split') command('vsplit') - eq({ 0, 0 }, meths.nvim_win_get_position(meths.nvim_list_wins()[1])) + eq({ 0, 0 }, api.nvim_win_get_position(api.nvim_list_wins()[1])) local vsplit_pos = math.floor(width / 2) local split_pos = math.floor(height / 2) - local win2row, win2col = unpack(meths.nvim_win_get_position(meths.nvim_list_wins()[2])) - local win3row, win3col = unpack(meths.nvim_win_get_position(meths.nvim_list_wins()[3])) + local win2row, win2col = unpack(api.nvim_win_get_position(api.nvim_list_wins()[2])) + local win3row, win3col = unpack(api.nvim_win_get_position(api.nvim_list_wins()[3])) eq(0, win2row) eq(0, win3col) ok(vsplit_pos - 1 <= win2col and win2col <= vsplit_pos + 1) @@ -469,91 +463,91 @@ describe('API/win', function() it('works', function() command('tabnew') command('vsplit') - eq(meths.nvim_win_get_tabpage(meths.nvim_list_wins()[1]), meths.nvim_list_tabpages()[1]) - eq(meths.nvim_win_get_tabpage(meths.nvim_list_wins()[2]), meths.nvim_list_tabpages()[2]) - eq(meths.nvim_win_get_tabpage(meths.nvim_list_wins()[3]), meths.nvim_list_tabpages()[2]) + eq(api.nvim_win_get_tabpage(api.nvim_list_wins()[1]), api.nvim_list_tabpages()[1]) + eq(api.nvim_win_get_tabpage(api.nvim_list_wins()[2]), api.nvim_list_tabpages()[2]) + eq(api.nvim_win_get_tabpage(api.nvim_list_wins()[3]), api.nvim_list_tabpages()[2]) end) end) describe('get_number', function() it('works', function() - local wins = meths.nvim_list_wins() - eq(1, meths.nvim_win_get_number(wins[1])) + local wins = api.nvim_list_wins() + eq(1, api.nvim_win_get_number(wins[1])) command('split') - local win1, win2 = unpack(meths.nvim_list_wins()) - eq(1, meths.nvim_win_get_number(win1)) - eq(2, meths.nvim_win_get_number(win2)) + local win1, win2 = unpack(api.nvim_list_wins()) + eq(1, api.nvim_win_get_number(win1)) + eq(2, api.nvim_win_get_number(win2)) command('wincmd J') - eq(2, meths.nvim_win_get_number(win1)) - eq(1, meths.nvim_win_get_number(win2)) + eq(2, api.nvim_win_get_number(win1)) + eq(1, api.nvim_win_get_number(win2)) command('tabnew') - local win3 = meths.nvim_list_wins()[3] + local win3 = api.nvim_list_wins()[3] -- First tab page - eq(2, meths.nvim_win_get_number(win1)) - eq(1, meths.nvim_win_get_number(win2)) + eq(2, api.nvim_win_get_number(win1)) + eq(1, api.nvim_win_get_number(win2)) -- Second tab page - eq(1, meths.nvim_win_get_number(win3)) + eq(1, api.nvim_win_get_number(win3)) end) end) describe('is_valid', function() it('works', function() command('split') - local win = meths.nvim_list_wins()[2] - meths.nvim_set_current_win(win) - ok(meths.nvim_win_is_valid(win)) + local win = api.nvim_list_wins()[2] + api.nvim_set_current_win(win) + ok(api.nvim_win_is_valid(win)) command('close') - ok(not meths.nvim_win_is_valid(win)) + ok(not api.nvim_win_is_valid(win)) end) end) describe('close', function() it('can close current window', function() - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() command('split') - local newwin = meths.nvim_get_current_win() - meths.nvim_win_close(newwin, false) - eq({ oldwin }, meths.nvim_list_wins()) + local newwin = api.nvim_get_current_win() + api.nvim_win_close(newwin, false) + eq({ oldwin }, api.nvim_list_wins()) end) it('can close noncurrent window', function() - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() command('split') - local newwin = meths.nvim_get_current_win() - meths.nvim_win_close(oldwin, false) - eq({ newwin }, meths.nvim_list_wins()) + local newwin = api.nvim_get_current_win() + api.nvim_win_close(oldwin, false) + eq({ newwin }, api.nvim_list_wins()) end) it("handles changed buffer when 'hidden' is unset", function() command('set nohidden') - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() insert('text') command('new') - local newwin = meths.nvim_get_current_win() + local newwin = api.nvim_get_current_win() eq( 'Vim:E37: No write since last change (add ! to override)', - pcall_err(meths.nvim_win_close, oldwin, false) + pcall_err(api.nvim_win_close, oldwin, false) ) - eq({ newwin, oldwin }, meths.nvim_list_wins()) + eq({ newwin, oldwin }, api.nvim_list_wins()) end) it('handles changed buffer with force', function() - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() insert('text') command('new') - local newwin = meths.nvim_get_current_win() - meths.nvim_win_close(oldwin, true) - eq({ newwin }, meths.nvim_list_wins()) + local newwin = api.nvim_get_current_win() + api.nvim_win_close(oldwin, true) + eq({ newwin }, api.nvim_list_wins()) end) it('in cmdline-window #9767', function() command('split') - eq(2, #meths.nvim_list_wins()) - local oldwin = meths.nvim_get_current_win() - local otherwin = meths.nvim_open_win(0, false, { + eq(2, #api.nvim_list_wins()) + local oldwin = api.nvim_get_current_win() + local otherwin = api.nvim_open_win(0, false, { relative = 'editor', row = 10, col = 10, @@ -562,20 +556,20 @@ describe('API/win', function() }) -- Open cmdline-window. feed('q:') - eq(4, #meths.nvim_list_wins()) - eq(':', funcs.getcmdwintype()) + eq(4, #api.nvim_list_wins()) + eq(':', fn.getcmdwintype()) -- Not allowed to close previous window from cmdline-window. eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_win_close, oldwin, true) + pcall_err(api.nvim_win_close, oldwin, true) ) -- Closing other windows is fine. - meths.nvim_win_close(otherwin, true) - eq(false, meths.nvim_win_is_valid(otherwin)) + api.nvim_win_close(otherwin, true) + eq(false, api.nvim_win_is_valid(otherwin)) -- Close cmdline-window. - meths.nvim_win_close(0, true) - eq(2, #meths.nvim_list_wins()) - eq('', funcs.getcmdwintype()) + api.nvim_win_close(0, true) + eq(2, #api.nvim_list_wins()) + eq('', fn.getcmdwintype()) end) it('closing current (float) window of another tabpage #15313', function() @@ -583,7 +577,7 @@ describe('API/win', function() command('botright split') local prevwin = curwin().id eq(2, eval('tabpagenr()')) - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { relative = 'editor', row = 10, col = 10, @@ -593,67 +587,67 @@ describe('API/win', function() local tab = eval('tabpagenr()') command('tabprevious') eq(1, eval('tabpagenr()')) - meths.nvim_win_close(win, false) + api.nvim_win_close(win, false) - eq(prevwin, meths.nvim_tabpage_get_win(tab).id) + eq(prevwin, api.nvim_tabpage_get_win(tab).id) assert_alive() end) end) describe('hide', function() it('can hide current window', function() - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() command('split') - local newwin = meths.nvim_get_current_win() - meths.nvim_win_hide(newwin) - eq({ oldwin }, meths.nvim_list_wins()) + local newwin = api.nvim_get_current_win() + api.nvim_win_hide(newwin) + eq({ oldwin }, api.nvim_list_wins()) end) it('can hide noncurrent window', function() - local oldwin = meths.nvim_get_current_win() + local oldwin = api.nvim_get_current_win() command('split') - local newwin = meths.nvim_get_current_win() - meths.nvim_win_hide(oldwin) - eq({ newwin }, meths.nvim_list_wins()) + local newwin = api.nvim_get_current_win() + api.nvim_win_hide(oldwin) + eq({ newwin }, api.nvim_list_wins()) end) it('does not close the buffer', function() - local oldwin = meths.nvim_get_current_win() - local oldbuf = meths.nvim_get_current_buf() - local buf = meths.nvim_create_buf(true, false) - local newwin = meths.nvim_open_win(buf, true, { + local oldwin = api.nvim_get_current_win() + local oldbuf = api.nvim_get_current_buf() + local buf = api.nvim_create_buf(true, false) + local newwin = api.nvim_open_win(buf, true, { relative = 'win', row = 3, col = 3, width = 12, height = 3, }) - meths.nvim_win_hide(newwin) - eq({ oldwin }, meths.nvim_list_wins()) - eq({ oldbuf, buf }, meths.nvim_list_bufs()) + api.nvim_win_hide(newwin) + eq({ oldwin }, api.nvim_list_wins()) + eq({ oldbuf, buf }, api.nvim_list_bufs()) end) it('deletes the buffer when bufhidden=wipe', function() - local oldwin = meths.nvim_get_current_win() - local oldbuf = meths.nvim_get_current_buf() - local buf = meths.nvim_create_buf(true, false).id - local newwin = meths.nvim_open_win(buf, true, { + local oldwin = api.nvim_get_current_win() + local oldbuf = api.nvim_get_current_buf() + local buf = api.nvim_create_buf(true, false).id + local newwin = api.nvim_open_win(buf, true, { relative = 'win', row = 3, col = 3, width = 12, height = 3, }) - meths.nvim_set_option_value('bufhidden', 'wipe', { buf = buf }) - meths.nvim_win_hide(newwin) - eq({ oldwin }, meths.nvim_list_wins()) - eq({ oldbuf }, meths.nvim_list_bufs()) + api.nvim_set_option_value('bufhidden', 'wipe', { buf = buf }) + api.nvim_win_hide(newwin) + eq({ oldwin }, api.nvim_list_wins()) + eq({ oldbuf }, api.nvim_list_bufs()) end) it('in the cmdwin', function() feed('q:') -- Can close the cmdwin. - meths.nvim_win_hide(0) - eq('', funcs.getcmdwintype()) + api.nvim_win_hide(0) + eq('', fn.getcmdwintype()) - local old_win = meths.nvim_get_current_win() - local other_win = meths.nvim_open_win(0, false, { + local old_win = api.nvim_get_current_win() + local other_win = api.nvim_open_win(0, false, { relative = 'win', row = 3, col = 3, @@ -664,60 +658,60 @@ describe('API/win', function() -- Cannot close the previous window. eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_win_hide, old_win) + pcall_err(api.nvim_win_hide, old_win) ) -- Can close other windows. - meths.nvim_win_hide(other_win) - eq(false, meths.nvim_win_is_valid(other_win)) + api.nvim_win_hide(other_win) + eq(false, api.nvim_win_is_valid(other_win)) end) end) describe('text_height', function() it('validation', function() - local X = meths.nvim_get_vvar('maxcol') + local X = api.nvim_get_vvar('maxcol') insert([[ aaa bbb ccc ddd eee]]) - eq('Invalid window id: 23', pcall_err(meths.nvim_win_text_height, 23, {})) - eq('Line index out of bounds', pcall_err(meths.nvim_win_text_height, 0, { start_row = 5 })) - eq('Line index out of bounds', pcall_err(meths.nvim_win_text_height, 0, { start_row = -6 })) - eq('Line index out of bounds', pcall_err(meths.nvim_win_text_height, 0, { end_row = 5 })) - eq('Line index out of bounds', pcall_err(meths.nvim_win_text_height, 0, { end_row = -6 })) + eq('Invalid window id: 23', pcall_err(api.nvim_win_text_height, 23, {})) + eq('Line index out of bounds', pcall_err(api.nvim_win_text_height, 0, { start_row = 5 })) + eq('Line index out of bounds', pcall_err(api.nvim_win_text_height, 0, { start_row = -6 })) + eq('Line index out of bounds', pcall_err(api.nvim_win_text_height, 0, { end_row = 5 })) + eq('Line index out of bounds', pcall_err(api.nvim_win_text_height, 0, { end_row = -6 })) eq( "'start_row' is higher than 'end_row'", - pcall_err(meths.nvim_win_text_height, 0, { start_row = 3, end_row = 1 }) + pcall_err(api.nvim_win_text_height, 0, { start_row = 3, end_row = 1 }) ) eq( "'start_vcol' specified without 'start_row'", - pcall_err(meths.nvim_win_text_height, 0, { end_row = 2, start_vcol = 0 }) + pcall_err(api.nvim_win_text_height, 0, { end_row = 2, start_vcol = 0 }) ) eq( "'end_vcol' specified without 'end_row'", - pcall_err(meths.nvim_win_text_height, 0, { start_row = 2, end_vcol = 0 }) + pcall_err(api.nvim_win_text_height, 0, { start_row = 2, end_vcol = 0 }) ) eq( "Invalid 'start_vcol': out of range", - pcall_err(meths.nvim_win_text_height, 0, { start_row = 2, start_vcol = -1 }) + pcall_err(api.nvim_win_text_height, 0, { start_row = 2, start_vcol = -1 }) ) eq( "Invalid 'start_vcol': out of range", - pcall_err(meths.nvim_win_text_height, 0, { start_row = 2, start_vcol = X + 1 }) + pcall_err(api.nvim_win_text_height, 0, { start_row = 2, start_vcol = X + 1 }) ) eq( "Invalid 'end_vcol': out of range", - pcall_err(meths.nvim_win_text_height, 0, { end_row = 2, end_vcol = -1 }) + pcall_err(api.nvim_win_text_height, 0, { end_row = 2, end_vcol = -1 }) ) eq( "Invalid 'end_vcol': out of range", - pcall_err(meths.nvim_win_text_height, 0, { end_row = 2, end_vcol = X + 1 }) + pcall_err(api.nvim_win_text_height, 0, { end_row = 2, end_vcol = X + 1 }) ) eq( "'start_vcol' is higher than 'end_vcol'", pcall_err( - meths.nvim_win_text_height, + api.nvim_win_text_height, 0, { start_row = 2, end_row = 2, start_vcol = 10, end_vcol = 5 } ) @@ -725,7 +719,7 @@ describe('API/win', function() end) it('with two diff windows', function() - local X = meths.nvim_get_vvar('maxcol') + local X = api.nvim_get_vvar('maxcol') local screen = Screen.new(45, 22) screen:set_default_attr_ids({ [0] = { foreground = Screen.colors.Blue1, bold = true }, @@ -787,80 +781,71 @@ describe('API/win', function() | ]], } - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1000, {})) - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1001, {})) - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1000, { start_row = 0 })) - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1001, { start_row = 0 })) - eq({ all = 15, fill = 0 }, meths.nvim_win_text_height(1000, { end_row = -1 })) - eq({ all = 15, fill = 0 }, meths.nvim_win_text_height(1000, { end_row = 40 })) - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1001, { end_row = -1 })) - eq({ all = 20, fill = 5 }, meths.nvim_win_text_height(1001, { end_row = 40 })) - eq({ all = 10, fill = 5 }, meths.nvim_win_text_height(1000, { start_row = 23 })) - eq({ all = 13, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 18 })) - eq({ all = 11, fill = 0 }, meths.nvim_win_text_height(1000, { end_row = 23 })) - eq({ all = 11, fill = 5 }, meths.nvim_win_text_height(1001, { end_row = 18 })) - eq({ all = 11, fill = 0 }, meths.nvim_win_text_height(1000, { start_row = 3, end_row = 39 })) - eq({ all = 11, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 1, end_row = 34 })) - eq({ all = 9, fill = 0 }, meths.nvim_win_text_height(1000, { start_row = 4, end_row = 38 })) - eq({ all = 9, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 2, end_row = 33 })) - eq({ all = 9, fill = 0 }, meths.nvim_win_text_height(1000, { start_row = 5, end_row = 37 })) - eq({ all = 9, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 3, end_row = 32 })) - eq({ all = 9, fill = 0 }, meths.nvim_win_text_height(1000, { start_row = 17, end_row = 25 })) - eq({ all = 9, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 15, end_row = 20 })) - eq({ all = 7, fill = 0 }, meths.nvim_win_text_height(1000, { start_row = 18, end_row = 24 })) - eq({ all = 7, fill = 3 }, meths.nvim_win_text_height(1001, { start_row = 16, end_row = 19 })) - eq({ all = 6, fill = 5 }, meths.nvim_win_text_height(1000, { start_row = -1 })) - eq( - { all = 5, fill = 5 }, - meths.nvim_win_text_height(1000, { start_row = -1, start_vcol = X }) - ) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1000, {})) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1001, {})) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1000, { start_row = 0 })) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1001, { start_row = 0 })) + eq({ all = 15, fill = 0 }, api.nvim_win_text_height(1000, { end_row = -1 })) + eq({ all = 15, fill = 0 }, api.nvim_win_text_height(1000, { end_row = 40 })) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1001, { end_row = -1 })) + eq({ all = 20, fill = 5 }, api.nvim_win_text_height(1001, { end_row = 40 })) + eq({ all = 10, fill = 5 }, api.nvim_win_text_height(1000, { start_row = 23 })) + eq({ all = 13, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 18 })) + eq({ all = 11, fill = 0 }, api.nvim_win_text_height(1000, { end_row = 23 })) + eq({ all = 11, fill = 5 }, api.nvim_win_text_height(1001, { end_row = 18 })) + eq({ all = 11, fill = 0 }, api.nvim_win_text_height(1000, { start_row = 3, end_row = 39 })) + eq({ all = 11, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 1, end_row = 34 })) + eq({ all = 9, fill = 0 }, api.nvim_win_text_height(1000, { start_row = 4, end_row = 38 })) + eq({ all = 9, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 2, end_row = 33 })) + eq({ all = 9, fill = 0 }, api.nvim_win_text_height(1000, { start_row = 5, end_row = 37 })) + eq({ all = 9, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 3, end_row = 32 })) + eq({ all = 9, fill = 0 }, api.nvim_win_text_height(1000, { start_row = 17, end_row = 25 })) + eq({ all = 9, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 15, end_row = 20 })) + eq({ all = 7, fill = 0 }, api.nvim_win_text_height(1000, { start_row = 18, end_row = 24 })) + eq({ all = 7, fill = 3 }, api.nvim_win_text_height(1001, { start_row = 16, end_row = 19 })) + eq({ all = 6, fill = 5 }, api.nvim_win_text_height(1000, { start_row = -1 })) + eq({ all = 5, fill = 5 }, api.nvim_win_text_height(1000, { start_row = -1, start_vcol = X })) eq( { all = 0, fill = 0 }, - meths.nvim_win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1 }) + api.nvim_win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1 }) ) eq( { all = 0, fill = 0 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 1000, { start_row = -1, start_vcol = X, end_row = -1, end_vcol = X } ) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 1000, { start_row = -1, start_vcol = 0, end_row = -1, end_vcol = X } ) ) - eq({ all = 3, fill = 2 }, meths.nvim_win_text_height(1001, { end_row = 0 })) - eq({ all = 2, fill = 2 }, meths.nvim_win_text_height(1001, { end_row = 0, end_vcol = 0 })) + eq({ all = 3, fill = 2 }, api.nvim_win_text_height(1001, { end_row = 0 })) + eq({ all = 2, fill = 2 }, api.nvim_win_text_height(1001, { end_row = 0, end_vcol = 0 })) eq( { all = 2, fill = 2 }, - meths.nvim_win_text_height(1001, { start_row = 0, end_row = 0, end_vcol = 0 }) + api.nvim_win_text_height(1001, { start_row = 0, end_row = 0, end_vcol = 0 }) ) eq( { all = 0, fill = 0 }, - meths.nvim_win_text_height( - 1001, - { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = 0 } - ) + api.nvim_win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = 0 }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( - 1001, - { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = X } - ) + api.nvim_win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = X }) ) - eq({ all = 11, fill = 5 }, meths.nvim_win_text_height(1001, { end_row = 18 })) + eq({ all = 11, fill = 5 }, api.nvim_win_text_height(1001, { end_row = 18 })) eq( { all = 9, fill = 3 }, - meths.nvim_win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18 }) + api.nvim_win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18 }) ) - eq({ all = 10, fill = 5 }, meths.nvim_win_text_height(1001, { end_row = 18, end_vcol = 0 })) + eq({ all = 10, fill = 5 }, api.nvim_win_text_height(1001, { end_row = 18, end_vcol = 0 })) eq( { all = 8, fill = 3 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 1001, { start_row = 0, start_vcol = 0, end_row = 18, end_vcol = 0 } ) @@ -868,7 +853,7 @@ describe('API/win', function() end) it('with wrapped lines', function() - local X = meths.nvim_get_vvar('maxcol') + local X = api.nvim_get_vvar('maxcol') local screen = Screen.new(45, 22) screen:set_default_attr_ids({ [0] = { foreground = Screen.colors.Blue1, bold = true }, @@ -880,15 +865,15 @@ describe('API/win', function() set number cpoptions+=n call setline(1, repeat([repeat('foobar-', 36)], 3)) ]]) - local ns = meths.nvim_create_namespace('') - meths.nvim_buf_set_extmark( + local ns = api.nvim_create_namespace('') + api.nvim_buf_set_extmark( 0, ns, 1, 100, { virt_text = { { ('?'):rep(15), 'Search' } }, virt_text_pos = 'inline' } ) - meths.nvim_buf_set_extmark( + api.nvim_buf_set_extmark( 0, ns, 2, @@ -928,155 +913,122 @@ describe('API/win', function() | ]], } - eq({ all = 21, fill = 0 }, meths.nvim_win_text_height(0, {})) - eq({ all = 6, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 0, end_row = 0 })) - eq({ all = 7, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 1, end_row = 1 })) - eq({ all = 8, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 2, end_row = 2 })) + eq({ all = 21, fill = 0 }, api.nvim_win_text_height(0, {})) + eq({ all = 6, fill = 0 }, api.nvim_win_text_height(0, { start_row = 0, end_row = 0 })) + eq({ all = 7, fill = 0 }, api.nvim_win_text_height(0, { start_row = 1, end_row = 1 })) + eq({ all = 8, fill = 0 }, api.nvim_win_text_height(0, { start_row = 2, end_row = 2 })) eq( { all = 0, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 0 }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 0 }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 41 }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 41 }) ) eq( { all = 2, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 42 }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 42 }) ) eq( { all = 2, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 86 }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 86 }) ) eq( { all = 3, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 87 }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 87 }) ) eq( { all = 6, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 266 } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 266 }) ) eq( { all = 7, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 267 } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 267 }) ) eq( { all = 7, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 311 } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 311 }) ) eq( { all = 7, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 312 } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 312 }) ) eq( { all = 7, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = X }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = X }) ) eq( { all = 7, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 40, end_row = 1, end_vcol = X }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 40, end_row = 1, end_vcol = X }) ) eq( { all = 6, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 41, end_row = 1, end_vcol = X }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 41, end_row = 1, end_vcol = X }) ) eq( { all = 6, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 85, end_row = 1, end_vcol = X }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 85, end_row = 1, end_vcol = X }) ) eq( { all = 5, fill = 0 }, - meths.nvim_win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = X }) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = X }) ) eq( { all = 2, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 265, end_row = 1, end_vcol = X } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 265, end_row = 1, end_vcol = X }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 266, end_row = 1, end_vcol = X } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 266, end_row = 1, end_vcol = X }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 310, end_row = 1, end_vcol = X } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 310, end_row = 1, end_vcol = X }) ) eq( { all = 0, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 311, end_row = 1, end_vcol = X } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 311, end_row = 1, end_vcol = X }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = 131 } - ) + api.nvim_win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = 131 }) ) eq( { all = 1, fill = 0 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 0, { start_row = 1, start_vcol = 221, end_row = 1, end_vcol = 266 } ) ) - eq({ all = 18, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 0, start_vcol = 131 })) - eq({ all = 19, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 0, start_vcol = 130 })) - eq({ all = 20, fill = 0 }, meths.nvim_win_text_height(0, { end_row = 2, end_vcol = 311 })) - eq({ all = 21, fill = 0 }, meths.nvim_win_text_height(0, { end_row = 2, end_vcol = 312 })) + eq({ all = 18, fill = 0 }, api.nvim_win_text_height(0, { start_row = 0, start_vcol = 131 })) + eq({ all = 19, fill = 0 }, api.nvim_win_text_height(0, { start_row = 0, start_vcol = 130 })) + eq({ all = 20, fill = 0 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 311 })) + eq({ all = 21, fill = 0 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 312 })) eq( { all = 17, fill = 0 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 0, { start_row = 0, start_vcol = 131, end_row = 2, end_vcol = 311 } ) ) eq( { all = 19, fill = 0 }, - meths.nvim_win_text_height( + api.nvim_win_text_height( 0, { start_row = 0, start_vcol = 130, end_row = 2, end_vcol = 312 } ) ) - eq({ all = 16, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 0, start_vcol = 221 })) - eq({ all = 17, fill = 0 }, meths.nvim_win_text_height(0, { start_row = 0, start_vcol = 220 })) - eq({ all = 14, fill = 0 }, meths.nvim_win_text_height(0, { end_row = 2, end_vcol = 41 })) - eq({ all = 15, fill = 0 }, meths.nvim_win_text_height(0, { end_row = 2, end_vcol = 42 })) + eq({ all = 16, fill = 0 }, api.nvim_win_text_height(0, { start_row = 0, start_vcol = 221 })) + eq({ all = 17, fill = 0 }, api.nvim_win_text_height(0, { start_row = 0, start_vcol = 220 })) + eq({ all = 14, fill = 0 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 41 })) + eq({ all = 15, fill = 0 }, api.nvim_win_text_height(0, { end_row = 2, end_vcol = 42 })) eq( { all = 9, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 0, start_vcol = 221, end_row = 2, end_vcol = 41 } - ) + api.nvim_win_text_height(0, { start_row = 0, start_vcol = 221, end_row = 2, end_vcol = 41 }) ) eq( { all = 11, fill = 0 }, - meths.nvim_win_text_height( - 0, - { start_row = 0, start_vcol = 220, end_row = 2, end_vcol = 42 } - ) + api.nvim_win_text_height(0, { start_row = 0, start_vcol = 220, end_row = 2, end_vcol = 42 }) ) end) end) @@ -1084,7 +1036,7 @@ describe('API/win', function() describe('open_win', function() it('noautocmd option works', function() command('autocmd BufEnter,BufLeave,BufWinEnter * let g:fired = 1') - meths.nvim_open_win(meths.nvim_create_buf(true, true), true, { + api.nvim_open_win(api.nvim_create_buf(true, true), true, { relative = 'win', row = 3, col = 3, @@ -1092,23 +1044,23 @@ describe('API/win', function() height = 3, noautocmd = true, }) - eq(0, funcs.exists('g:fired')) - meths.nvim_open_win(meths.nvim_create_buf(true, true), true, { + eq(0, fn.exists('g:fired')) + api.nvim_open_win(api.nvim_create_buf(true, true), true, { relative = 'win', row = 3, col = 3, width = 12, height = 3, }) - eq(1, funcs.exists('g:fired')) + eq(1, fn.exists('g:fired')) end) it('disallowed in cmdwin if enter=true or buf=curbuf', function() - local new_buf = meths.nvim_create_buf(true, true) + local new_buf = api.nvim_create_buf(true, true) feed('q:') eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_open_win, new_buf, true, { + pcall_err(api.nvim_open_win, new_buf, true, { relative = 'editor', row = 5, col = 5, @@ -1118,7 +1070,7 @@ describe('API/win', function() ) eq( 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits', - pcall_err(meths.nvim_open_win, 0, false, { + pcall_err(api.nvim_open_win, 0, false, { relative = 'editor', row = 5, col = 5, @@ -1129,7 +1081,7 @@ describe('API/win', function() eq( new_buf, - meths.nvim_win_get_buf(meths.nvim_open_win(new_buf, false, { + api.nvim_win_get_buf(api.nvim_open_win(new_buf, false, { relative = 'editor', row = 5, col = 5, @@ -1140,10 +1092,10 @@ describe('API/win', function() end) it('aborts if buffer is invalid', function() - local wins_before = meths.nvim_list_wins() + local wins_before = api.nvim_list_wins() eq( 'Invalid buffer id: 1337', - pcall_err(meths.nvim_open_win, 1337, false, { + pcall_err(api.nvim_open_win, 1337, false, { relative = 'editor', row = 5, col = 5, @@ -1151,14 +1103,14 @@ describe('API/win', function() height = 5, }) ) - eq(wins_before, meths.nvim_list_wins()) + eq(wins_before, api.nvim_list_wins()) end) end) describe('get_config', function() it('includes border', function() local b = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' } - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { relative = 'win', row = 3, col = 3, @@ -1167,7 +1119,7 @@ describe('API/win', function() border = b, }) - local cfg = meths.nvim_win_get_config(win) + local cfg = api.nvim_win_get_config(win) eq(b, cfg.border) end) @@ -1182,7 +1134,7 @@ describe('API/win', function() { 'g', 'Constant' }, { 'h', 'PreProc' }, } - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { relative = 'win', row = 3, col = 3, @@ -1191,14 +1143,14 @@ describe('API/win', function() border = b, }) - local cfg = meths.nvim_win_get_config(win) + local cfg = api.nvim_win_get_config(win) eq(b, cfg.border) end) it('includes title and footer', function() local title = { { 'A', { 'StatusLine', 'TabLine' } }, { 'B' }, { 'C', 'WinBar' } } local footer = { { 'A', 'WinBar' }, { 'B' }, { 'C', { 'StatusLine', 'TabLine' } } } - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { relative = 'win', row = 3, col = 3, @@ -1209,7 +1161,7 @@ describe('API/win', function() footer = footer, }) - local cfg = meths.nvim_win_get_config(win) + local cfg = api.nvim_win_get_config(win) eq(title, cfg.title) eq(footer, cfg.footer) end) @@ -1217,7 +1169,7 @@ describe('API/win', function() describe('set_config', function() it('no crash with invalid title', function() - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { width = 10, height = 10, relative = 'editor', @@ -1228,14 +1180,14 @@ describe('API/win', function() }) eq( 'title/footer cannot be an empty array', - pcall_err(meths.nvim_win_set_config, win, { title = {} }) + pcall_err(api.nvim_win_set_config, win, { title = {} }) ) command('redraw!') assert_alive() end) it('no crash with invalid footer', function() - local win = meths.nvim_open_win(0, true, { + local win = api.nvim_open_win(0, true, { width = 10, height = 10, relative = 'editor', @@ -1246,7 +1198,7 @@ describe('API/win', function() }) eq( 'title/footer cannot be an empty array', - pcall_err(meths.nvim_win_set_config, win, { footer = {} }) + pcall_err(api.nvim_win_set_config, win, { footer = {} }) ) command('redraw!') assert_alive() |