aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2024-01-03 02:09:18 +0100
committerJustin M. Keyes <justinkz@gmail.com>2024-01-03 02:09:29 +0100
commit04f2f864e270e772c6326cefdf24947f0130e492 (patch)
tree46f83f909b888a66c741032ab955afc6eab84292 /test/functional/api
parent59d117ec99b6037cb9fad5bbfb6d0b18f5012927 (diff)
downloadrneovim-04f2f864e270e772c6326cefdf24947f0130e492.tar.gz
rneovim-04f2f864e270e772c6326cefdf24947f0130e492.tar.bz2
rneovim-04f2f864e270e772c6326cefdf24947f0130e492.zip
refactor: format test/*
Diffstat (limited to 'test/functional/api')
-rw-r--r--test/functional/api/autocmd_spec.lua962
-rw-r--r--test/functional/api/buffer_updates_spec.lua464
-rw-r--r--test/functional/api/command_spec.lua921
-rw-r--r--test/functional/api/extmark_spec.lua860
-rw-r--r--test/functional/api/highlight_spec.lua344
-rw-r--r--test/functional/api/keymap_spec.lua750
-rw-r--r--test/functional/api/menu_spec.lua29
-rw-r--r--test/functional/api/proc_spec.lua20
-rw-r--r--test/functional/api/rpc_fixture.lua10
-rw-r--r--test/functional/api/server_notifications_spec.lua45
-rw-r--r--test/functional/api/server_requests_spec.lua121
-rw-r--r--test/functional/api/tabpage_spec.lua23
-rw-r--r--test/functional/api/ui_spec.lua90
-rw-r--r--test/functional/api/version_spec.lua155
-rw-r--r--test/functional/api/window_spec.lua730
15 files changed, 3197 insertions, 2327 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua
index fd46a1dcfa..1590ca2eda 100644
--- a/test/functional/api/autocmd_spec.lua
+++ b/test/functional/api/autocmd_spec.lua
@@ -15,43 +15,74 @@ before_each(clear)
describe('autocmd api', function()
describe('nvim_create_autocmd', function()
it('validation', function()
- eq("Cannot use both 'callback' and 'command'", pcall_err(meths.create_autocmd, 'BufReadPost', {
- pattern = '*.py,*.pyi',
- command = "echo 'Should Have Errored",
- callback = 'NotAllowed',
- }))
- eq("Cannot use both 'pattern' and 'buffer' for the same autocmd", pcall_err(meths.create_autocmd, 'FileType', {
- command = 'let g:called = g:called + 1',
- buffer = 0,
- pattern = '*.py',
- }))
- eq("Required: 'event'", pcall_err(meths.create_autocmd, {}, {
- command = 'ls',
- }))
- eq("Required: 'command' or 'callback'", pcall_err(meths.create_autocmd, 'FileType', {
- }))
- eq("Invalid 'desc': expected String, got Integer", pcall_err(meths.create_autocmd, 'FileType', {
- command = 'ls',
- desc = 42,
- }))
- eq("Invalid 'callback': expected Lua function or Vim function name, got Integer", pcall_err(meths.create_autocmd, 'FileType', {
- callback = 0,
- }))
- eq("Invalid 'event' item: expected String, got Array", pcall_err(meths.create_autocmd,
- {'FileType', {}}, {}))
- eq("Invalid 'group': 0", pcall_err(meths.create_autocmd, 'FileType', {
- group = 0,
- command = 'ls',
- }))
+ eq(
+ "Cannot use both 'callback' and 'command'",
+ pcall_err(meths.create_autocmd, 'BufReadPost', {
+ pattern = '*.py,*.pyi',
+ command = "echo 'Should Have Errored",
+ callback = 'NotAllowed',
+ })
+ )
+ eq(
+ "Cannot use both 'pattern' and 'buffer' for the same autocmd",
+ pcall_err(meths.create_autocmd, 'FileType', {
+ command = 'let g:called = g:called + 1',
+ buffer = 0,
+ pattern = '*.py',
+ })
+ )
+ eq(
+ "Required: 'event'",
+ pcall_err(meths.create_autocmd, {}, {
+ command = 'ls',
+ })
+ )
+ eq("Required: 'command' or 'callback'", pcall_err(meths.create_autocmd, 'FileType', {}))
+ eq(
+ "Invalid 'desc': expected String, got Integer",
+ pcall_err(meths.create_autocmd, 'FileType', {
+ command = 'ls',
+ desc = 42,
+ })
+ )
+ eq(
+ "Invalid 'callback': expected Lua function or Vim function name, got Integer",
+ pcall_err(meths.create_autocmd, 'FileType', {
+ callback = 0,
+ })
+ )
+ eq(
+ "Invalid 'event' item: expected String, got Array",
+ pcall_err(meths.create_autocmd, { 'FileType', {} }, {})
+ )
+ eq(
+ "Invalid 'group': 0",
+ pcall_err(meths.create_autocmd, 'FileType', {
+ group = 0,
+ command = 'ls',
+ })
+ )
eq("Invalid 'event': 'foo'", pcall_err(meths.create_autocmd, 'foo', { command = '' }))
- eq("Invalid 'event': 'VimEnter '", pcall_err(meths.create_autocmd, 'VimEnter ', { command = '' }))
- eq("Invalid 'event': 'VimEnter foo'", pcall_err(meths.create_autocmd, 'VimEnter foo', { command = '' }))
- eq("Invalid 'event': 'BufAdd,BufDelete'", pcall_err(meths.create_autocmd, 'BufAdd,BufDelete', { command = '' }))
+ eq(
+ "Invalid 'event': 'VimEnter '",
+ pcall_err(meths.create_autocmd, 'VimEnter ', { command = '' })
+ )
+ eq(
+ "Invalid 'event': 'VimEnter foo'",
+ pcall_err(meths.create_autocmd, 'VimEnter foo', { command = '' })
+ )
+ eq(
+ "Invalid 'event': 'BufAdd,BufDelete'",
+ pcall_err(meths.create_autocmd, 'BufAdd,BufDelete', { command = '' })
+ )
end)
it('doesnt leak when you use ++once', function()
- eq(1, exec_lua([[
+ eq(
+ 1,
+ exec_lua(
+ [[
local count = 0
vim.api.nvim_create_autocmd("FileType", {
@@ -64,30 +95,33 @@ describe('autocmd api', function()
vim.cmd "set filetype=python"
return count
- ]], {}))
+ ]],
+ {}
+ )
+ )
end)
it('allows passing buffer by key', function()
meths.set_var('called', 0)
- meths.create_autocmd("FileType", {
- command = "let g:called = g:called + 1",
+ meths.create_autocmd('FileType', {
+ command = 'let g:called = g:called + 1',
buffer = 0,
})
- meths.command "set filetype=txt"
+ meths.command 'set filetype=txt'
eq(1, meths.get_var('called'))
-- switch to a new buffer
- meths.command "new"
- meths.command "set filetype=python"
+ meths.command 'new'
+ meths.command 'set filetype=python'
eq(1, meths.get_var('called'))
end)
it('does not allow passing invalid buffers', function()
local ok, msg = pcall(meths.create_autocmd, 'FileType', {
- command = "let g:called = g:called + 1",
+ command = 'let g:called = g:called + 1',
buffer = -1,
})
@@ -96,55 +130,61 @@ describe('autocmd api', function()
end)
it('errors on non-functions for cb', function()
- eq(false, pcall(exec_lua, [[
+ eq(
+ false,
+ pcall(
+ exec_lua,
+ [[
vim.api.nvim_create_autocmd("BufReadPost", {
pattern = "*.py,*.pyi",
callback = 5,
})
- ]]))
+ ]]
+ )
+ )
end)
it('allow passing pattern and <buffer> in same pattern', function()
- local ok = pcall(meths.create_autocmd, "BufReadPost", {
- pattern = "*.py,<buffer>",
- command = "echo 'Should Not Error'"
+ local ok = pcall(meths.create_autocmd, 'BufReadPost', {
+ pattern = '*.py,<buffer>',
+ command = "echo 'Should Not Error'",
})
eq(true, ok)
end)
it('should handle multiple values as comma separated list', function()
- meths.create_autocmd("BufReadPost", {
- pattern = "*.py,*.pyi",
- command = "echo 'Should Not Have Errored'"
+ meths.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.get_autocmds { event = "BufReadPost" })
+ eq(2, #meths.get_autocmds { event = 'BufReadPost' })
end)
it('should handle multiple values as array', function()
- meths.create_autocmd("BufReadPost", {
- pattern = { "*.py", "*.pyi", },
- command = "echo 'Should Not Have Errored'"
+ meths.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.get_autocmds { event = "BufReadPost" })
+ eq(2, #meths.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.create_autocmd("BufReadPost", {
- pattern = "*.py",
+ local cmd = "echo 'Should Not Have Errored'"
+ local desc = 'Can show description'
+ meths.create_autocmd('BufReadPost', {
+ pattern = '*.py',
command = cmd,
desc = desc,
})
- eq(desc, meths.get_autocmds { event = "BufReadPost" }[1].desc)
- eq(cmd, meths.get_autocmds { event = "BufReadPost" }[1].command)
+ eq(desc, meths.get_autocmds { event = 'BufReadPost' }[1].desc)
+ eq(cmd, meths.get_autocmds { event = 'BufReadPost' }[1].command)
end)
it('can add description to one autocmd that uses a callback', function()
@@ -182,34 +222,34 @@ describe('autocmd api', function()
end)
it('can add description to multiple autocmd', function()
- meths.create_autocmd("BufReadPost", {
- pattern = {"*.py", "*.pyi"},
+ meths.create_autocmd('BufReadPost', {
+ pattern = { '*.py', '*.pyi' },
command = "echo 'Should Not Have Errored'",
- desc = "Can show description",
+ desc = 'Can show description',
})
- local aus = meths.get_autocmds { event = "BufReadPost" }
+ local aus = meths.get_autocmds { event = 'BufReadPost' }
eq(2, #aus)
- eq("Can show description", aus[1].desc)
- eq("Can show description", aus[2].desc)
+ eq('Can show description', aus[1].desc)
+ eq('Can show description', aus[2].desc)
end)
end)
pending('script and verbose settings', function()
it('marks API client', function()
- meths.create_autocmd("BufReadPost", {
- pattern = "*.py",
+ meths.create_autocmd('BufReadPost', {
+ pattern = '*.py',
command = "echo 'Should Not Have Errored'",
- desc = "Can show description",
+ desc = 'Can show description',
})
- local aus = meths.get_autocmds { event = "BufReadPost" }
+ local aus = meths.get_autocmds { event = 'BufReadPost' }
eq(1, #aus, aus)
end)
end)
it('removes an autocommand if the callback returns true', function()
- meths.set_var("some_condition", false)
+ meths.set_var('some_condition', false)
exec_lua [[
vim.api.nvim_create_autocmd("User", {
@@ -221,19 +261,19 @@ describe('autocmd api', function()
})
]]
- meths.exec_autocmds("User", {pattern = "Test"})
+ meths.exec_autocmds('User', { pattern = 'Test' })
local aus = meths.get_autocmds({ event = 'User', pattern = 'Test' })
local first = aus[1]
eq(true, first.id > 0)
- meths.set_var("some_condition", true)
- meths.exec_autocmds("User", {pattern = "Test"})
- eq({}, meths.get_autocmds({event = "User", pattern = "Test"}))
+ meths.set_var('some_condition', true)
+ meths.exec_autocmds('User', { pattern = 'Test' })
+ eq({}, meths.get_autocmds({ event = 'User', pattern = 'Test' }))
end)
it('receives an args table', function()
- local group_id = meths.create_augroup("TestGroup", {})
+ local group_id = meths.create_augroup('TestGroup', {})
-- Having an existing autocmd calling expand("<afile>") shouldn't change args #18964
meths.create_autocmd('User', {
group = 'TestGroup',
@@ -251,15 +291,15 @@ describe('autocmd api', function()
})
]]
- meths.exec_autocmds("User", {pattern = "Test pattern"})
+ meths.exec_autocmds('User', { pattern = 'Test pattern' })
eq({
id = autocmd_id,
group = group_id,
- event = "User",
- match = "Test pattern",
- file = "Test pattern",
+ event = 'User',
+ match = 'Test pattern',
+ file = 'Test pattern',
buf = 1,
- }, meths.get_var("autocmd_args"))
+ }, meths.get_var('autocmd_args'))
-- Test without a group
autocmd_id = exec_lua [[
@@ -271,20 +311,23 @@ describe('autocmd api', function()
})
]]
- meths.exec_autocmds("User", {pattern = "some_pat"})
+ meths.exec_autocmds('User', { pattern = 'some_pat' })
eq({
id = autocmd_id,
group = nil,
- event = "User",
- match = "some_pat",
- file = "some_pat",
+ event = 'User',
+ match = 'some_pat',
+ file = 'some_pat',
buf = 1,
- }, meths.get_var("autocmd_args"))
+ }, meths.get_var('autocmd_args'))
end)
it('can receive arbitrary data', function()
local function test(data)
- eq(data, exec_lua([[
+ eq(
+ data,
+ exec_lua(
+ [[
local input = ...
local output
vim.api.nvim_create_autocmd("User", {
@@ -300,40 +343,64 @@ describe('autocmd api', function()
})
return output
- ]], data))
+ ]],
+ data
+ )
+ )
end
- test("Hello")
+ test('Hello')
test(42)
test(true)
- test({ "list" })
- test({ foo = "bar" })
+ test({ 'list' })
+ test({ foo = 'bar' })
end)
end)
describe('nvim_get_autocmds', function()
it('validation', function()
- eq("Invalid 'group': 9997999", pcall_err(meths.get_autocmds, {
- group = 9997999,
- }))
- eq("Invalid 'group': 'bogus'", pcall_err(meths.get_autocmds, {
- group = 'bogus',
- }))
- eq("Invalid 'group': 0", pcall_err(meths.get_autocmds, {
- group = 0,
- }))
- eq("Invalid 'group': expected String or Integer, got Array", pcall_err(meths.get_autocmds, {
- group = {},
- }))
- eq("Invalid 'buffer': expected Integer or Array, got Boolean", pcall_err(meths.get_autocmds, {
- buffer = true,
- }))
- eq("Invalid 'event': expected String or Array", pcall_err(meths.get_autocmds, {
- event = true,
- }))
- eq("Invalid 'pattern': expected String or Array, got Boolean", pcall_err(meths.get_autocmds, {
- pattern = true,
- }))
+ eq(
+ "Invalid 'group': 9997999",
+ pcall_err(meths.get_autocmds, {
+ group = 9997999,
+ })
+ )
+ eq(
+ "Invalid 'group': 'bogus'",
+ pcall_err(meths.get_autocmds, {
+ group = 'bogus',
+ })
+ )
+ eq(
+ "Invalid 'group': 0",
+ pcall_err(meths.get_autocmds, {
+ group = 0,
+ })
+ )
+ eq(
+ "Invalid 'group': expected String or Integer, got Array",
+ pcall_err(meths.get_autocmds, {
+ group = {},
+ })
+ )
+ eq(
+ "Invalid 'buffer': expected Integer or Array, got Boolean",
+ pcall_err(meths.get_autocmds, {
+ buffer = true,
+ })
+ )
+ eq(
+ "Invalid 'event': expected String or Array",
+ pcall_err(meths.get_autocmds, {
+ event = true,
+ })
+ )
+ eq(
+ "Invalid 'pattern': expected String or Array, got Boolean",
+ pcall_err(meths.get_autocmds, {
+ pattern = true,
+ })
+ )
end)
describe('events', function()
@@ -341,7 +408,7 @@ describe('autocmd api', function()
command [[au! InsertEnter]]
command [[au InsertEnter * :echo "1"]]
- local aus = meths.get_autocmds { event = "InsertEnter" }
+ local aus = meths.get_autocmds { event = 'InsertEnter' }
eq(1, #aus)
end)
@@ -350,7 +417,7 @@ describe('autocmd api', function()
command [[au InsertEnter * :echo "1"]]
command [[au InsertEnter * :echo "2"]]
- local aus = meths.get_autocmds { event = "InsertEnter" }
+ local aus = meths.get_autocmds { event = 'InsertEnter' }
eq(2, #aus)
end)
@@ -359,8 +426,8 @@ describe('autocmd api', function()
command [[au InsertEnter * :echo "1"]]
command [[au InsertEnter * :echo "2"]]
- local string_aus = meths.get_autocmds { event = "InsertEnter" }
- local array_aus = meths.get_autocmds { event = { "InsertEnter" } }
+ local string_aus = meths.get_autocmds { event = 'InsertEnter' }
+ local array_aus = meths.get_autocmds { event = { 'InsertEnter' } }
eq(string_aus, array_aus)
end)
@@ -370,7 +437,7 @@ describe('autocmd api', function()
command [[au InsertEnter * :echo "1"]]
command [[au InsertEnter * :echo "2"]]
- local aus = meths.get_autocmds { event = { "InsertEnter", "InsertLeave" } }
+ local aus = meths.get_autocmds { event = { 'InsertEnter', 'InsertLeave' } }
eq(2, #aus)
end)
@@ -384,7 +451,7 @@ describe('autocmd api', function()
\ })
]]
- local aus = meths.get_autocmds { event = { "InsertEnter", "InsertLeave" } }
+ local aus = meths.get_autocmds { event = { 'InsertEnter', 'InsertLeave' } }
local first = aus[1]
eq(first.id, nil)
@@ -393,7 +460,7 @@ describe('autocmd api', function()
neq(second.id, nil)
meths.del_autocmd(second.id)
- local new_aus = meths.get_autocmds { event = { "InsertEnter", "InsertLeave" } }
+ local new_aus = meths.get_autocmds { event = { 'InsertEnter', 'InsertLeave' } }
eq(1, #new_aus)
eq(first, new_aus[1])
end)
@@ -402,8 +469,16 @@ describe('autocmd api', function()
command [[au! InsertEnter]]
command [[au InsertEnter * :echo "1"]]
- local aus = meths.get_autocmds { event = "InsertEnter" }
- eq({ { buflocal = false, command = ':echo "1"', event = "InsertEnter", once = false, pattern = "*" } }, aus)
+ local aus = meths.get_autocmds { event = 'InsertEnter' }
+ eq({
+ {
+ buflocal = false,
+ command = ':echo "1"',
+ event = 'InsertEnter',
+ once = false,
+ pattern = '*',
+ },
+ }, aus)
end)
it('works with buffer numbers', function()
@@ -412,77 +487,96 @@ describe('autocmd api', function()
command [[au InsertEnter <buffer=1> :echo "1"]]
command [[au InsertEnter <buffer=2> :echo "2"]]
- local aus = meths.get_autocmds { event = "InsertEnter", buffer = 0 }
- eq({{
- buffer = 2,
- buflocal = true,
- command = ':echo "2"',
- event = 'InsertEnter',
- once = false,
- pattern = '<buffer=2>',
- }}, aus)
-
- aus = meths.get_autocmds { event = "InsertEnter", buffer = 1 }
- eq({{
- buffer = 1,
- buflocal = true,
- command = ':echo "1"',
- event = "InsertEnter",
- once = false,
- pattern = "<buffer=1>",
- }}, aus)
-
- aus = meths.get_autocmds { event = "InsertEnter", buffer = { 1, 2 } }
- eq({{
- buffer = 1,
- buflocal = true,
- command = ':echo "1"',
- event = "InsertEnter",
- once = false,
- pattern = "<buffer=1>",
- }, {
- buffer = 2,
- buflocal = true,
- command = ':echo "2"',
- event = "InsertEnter",
- once = false,
- pattern = "<buffer=2>",
- }}, aus)
-
- eq("Invalid 'buffer': expected Integer or Array, got String", pcall_err(meths.get_autocmds, { event = "InsertEnter", buffer = "foo" }))
- eq("Invalid 'buffer': expected Integer, got String", pcall_err(meths.get_autocmds, { event = "InsertEnter", buffer = { "foo", 42 } }))
- eq("Invalid buffer id: 42", pcall_err(meths.get_autocmds, { event = "InsertEnter", buffer = { 42 } }))
+ local aus = meths.get_autocmds { event = 'InsertEnter', buffer = 0 }
+ eq({
+ {
+ buffer = 2,
+ buflocal = true,
+ command = ':echo "2"',
+ event = 'InsertEnter',
+ once = false,
+ pattern = '<buffer=2>',
+ },
+ }, aus)
+
+ aus = meths.get_autocmds { event = 'InsertEnter', buffer = 1 }
+ eq({
+ {
+ buffer = 1,
+ buflocal = true,
+ command = ':echo "1"',
+ event = 'InsertEnter',
+ once = false,
+ pattern = '<buffer=1>',
+ },
+ }, aus)
+
+ aus = meths.get_autocmds { event = 'InsertEnter', buffer = { 1, 2 } }
+ eq({
+ {
+ buffer = 1,
+ buflocal = true,
+ command = ':echo "1"',
+ event = 'InsertEnter',
+ once = false,
+ pattern = '<buffer=1>',
+ },
+ {
+ buffer = 2,
+ buflocal = true,
+ command = ':echo "2"',
+ event = 'InsertEnter',
+ once = false,
+ pattern = '<buffer=2>',
+ },
+ }, aus)
+
+ eq(
+ "Invalid 'buffer': expected Integer or Array, got String",
+ pcall_err(meths.get_autocmds, { event = 'InsertEnter', buffer = 'foo' })
+ )
+ eq(
+ "Invalid 'buffer': expected Integer, got String",
+ pcall_err(meths.get_autocmds, { event = 'InsertEnter', buffer = { 'foo', 42 } })
+ )
+ eq(
+ 'Invalid buffer id: 42',
+ pcall_err(meths.get_autocmds, { event = 'InsertEnter', buffer = { 42 } })
+ )
local bufs = {}
for _ = 1, 257 do
table.insert(bufs, meths.create_buf(true, false))
end
- eq("Too many buffers (maximum of 256)", pcall_err(meths.get_autocmds, { event = "InsertEnter", buffer = bufs }))
+ eq(
+ 'Too many buffers (maximum of 256)',
+ pcall_err(meths.get_autocmds, { event = 'InsertEnter', buffer = bufs })
+ )
end)
it('returns autocmds when group is specified by id', function()
- local auid = meths.create_augroup("nvim_test_augroup", { clear = true })
- meths.create_autocmd("FileType", { group = auid, command = 'echo "1"' })
- meths.create_autocmd("FileType", { group = auid, command = 'echo "2"' })
+ local auid = meths.create_augroup('nvim_test_augroup', { clear = true })
+ meths.create_autocmd('FileType', { group = auid, command = 'echo "1"' })
+ meths.create_autocmd('FileType', { group = auid, command = 'echo "2"' })
local aus = meths.get_autocmds { group = auid }
eq(2, #aus)
- local aus2 = meths.get_autocmds { group = auid, event = "InsertEnter" }
+ local aus2 = meths.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"
+ local auname = 'nvim_test_augroup'
meths.create_augroup(auname, { clear = true })
- meths.create_autocmd("FileType", { group = auname, command = 'echo "1"' })
- meths.create_autocmd("FileType", { group = auname, command = 'echo "2"' })
+ meths.create_autocmd('FileType', { group = auname, command = 'echo "1"' })
+ meths.create_autocmd('FileType', { group = auname, command = 'echo "2"' })
local aus = meths.get_autocmds { group = auname }
eq(2, #aus)
- local aus2 = meths.get_autocmds { group = auname, event = "InsertEnter" }
+ local aus2 = meths.get_autocmds { group = auname, event = 'InsertEnter' }
eq(0, #aus2)
end)
@@ -510,7 +604,7 @@ describe('autocmd api', function()
-- 1 for the first buffer
-- 2 for First.md
-- 3-7 for the 5 we make in the autocmd
- eq({1, 2, 3, 4, 5, 6, 7}, bufs)
+ eq({ 1, 2, 3, 4, 5, 6, 7 }, bufs)
end)
it('can retrieve a callback from an autocmd', function()
@@ -534,12 +628,14 @@ describe('autocmd api', function()
}
]])
- eq("function", result.cb.type)
+ eq('function', result.cb.type)
eq(true, result.cb.can_retrieve)
end)
- it('will return an empty string as the command for an autocmd that uses a callback', function()
- local result = exec_lua([[
+ it(
+ 'will return an empty string as the command for an autocmd that uses a callback',
+ function()
+ local result = exec_lua([[
local callback = function() print 'I Am A Callback' end
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.py",
@@ -553,8 +649,9 @@ describe('autocmd api', function()
}
]])
- eq({ command = "", cbtype = 'function' }, result)
- end)
+ eq({ command = '', cbtype = 'function' }, result)
+ end
+ )
end)
describe('groups', function()
@@ -574,7 +671,7 @@ describe('autocmd api', function()
end)
it('returns all groups if no group is specified', function()
- local aus = meths.get_autocmds { event = "InsertEnter" }
+ local aus = meths.get_autocmds { event = 'InsertEnter' }
if #aus ~= 4 then
eq({}, aus)
end
@@ -584,32 +681,33 @@ describe('autocmd api', function()
it('returns only the group specified', function()
local aus = meths.get_autocmds {
- event = "InsertEnter",
- group = "GroupOne",
+ event = 'InsertEnter',
+ group = 'GroupOne',
}
eq(1, #aus)
eq([[:echo "GroupOne:1"]], aus[1].command)
- eq("GroupOne", aus[1].group_name)
+ eq('GroupOne', aus[1].group_name)
end)
it('returns only the group specified, multiple values', function()
local aus = meths.get_autocmds {
- event = "InsertEnter",
- group = "GroupTwo",
+ event = 'InsertEnter',
+ group = 'GroupTwo',
}
eq(2, #aus)
eq([[:echo "GroupTwo:2"]], aus[1].command)
- eq("GroupTwo", aus[1].group_name)
+ eq('GroupTwo', aus[1].group_name)
eq([[:echo "GroupTwo:3"]], aus[2].command)
- eq("GroupTwo", aus[2].group_name)
+ eq('GroupTwo', aus[2].group_name)
end)
end)
describe('groups: 2', function()
it('raises error for undefined augroup name', function()
- local success, code = unpack(meths.exec_lua([[
+ local success, code = unpack(meths.exec_lua(
+ [[
return {pcall(function()
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
@@ -617,14 +715,17 @@ describe('autocmd api', function()
command = "echo 'hello'",
})
end)}
- ]], {}))
+ ]],
+ {}
+ ))
eq(false, success)
matches("Invalid 'group': 'NotDefined'", code)
end)
it('raises error for undefined augroup id', function()
- local success, code = unpack(meths.exec_lua([[
+ local success, code = unpack(meths.exec_lua(
+ [[
return {pcall(function()
-- Make sure the augroup is deleted
vim.api.nvim_del_augroup_by_id(1)
@@ -635,14 +736,17 @@ describe('autocmd api', function()
command = "echo 'hello'",
})
end)}
- ]], {}))
+ ]],
+ {}
+ ))
eq(false, success)
matches("Invalid 'group': 1", code)
end)
it('raises error for invalid group type', function()
- local success, code = unpack(meths.exec_lua([[
+ local success, code = unpack(meths.exec_lua(
+ [[
return {pcall(function()
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
@@ -650,21 +754,26 @@ describe('autocmd api', function()
command = "echo 'hello'",
})
end)}
- ]], {}))
+ ]],
+ {}
+ ))
eq(false, success)
matches("Invalid 'group': expected String or Integer, got Boolean", code)
end)
it('raises error for invalid pattern array', function()
- local success, code = unpack(meths.exec_lua([[
+ local success, code = unpack(meths.exec_lua(
+ [[
return {pcall(function()
vim.api.nvim_create_autocmd("FileType", {
pattern = {{}},
command = "echo 'hello'",
})
end)}
- ]], {}))
+ ]],
+ {}
+ ))
eq(false, success)
matches("Invalid 'pattern' item: expected String, got Array", code)
@@ -684,8 +793,8 @@ describe('autocmd api', function()
it('returns for literal match', function()
local aus = meths.get_autocmds {
- event = "InsertEnter",
- pattern = "*"
+ event = 'InsertEnter',
+ pattern = '*',
}
eq(1, #aus)
@@ -695,8 +804,8 @@ describe('autocmd api', function()
it('returns for multiple matches', function()
-- vim.api.nvim_get_autocmds
local aus = meths.get_autocmds {
- event = "InsertEnter",
- pattern = { "*.one", "*.two" },
+ event = 'InsertEnter',
+ pattern = { '*.one', '*.two' },
}
eq(3, #aus)
@@ -707,18 +816,18 @@ describe('autocmd api', function()
it('should work for buffer autocmds', function()
local normalized_aus = meths.get_autocmds {
- event = "InsertEnter",
- pattern = "<buffer=1>",
+ event = 'InsertEnter',
+ pattern = '<buffer=1>',
}
local raw_aus = meths.get_autocmds {
- event = "InsertEnter",
- pattern = "<buffer>",
+ event = 'InsertEnter',
+ pattern = '<buffer>',
}
local zero_aus = meths.get_autocmds {
- event = "InsertEnter",
- pattern = "<buffer=0>",
+ event = 'InsertEnter',
+ pattern = '<buffer=0>',
}
eq(normalized_aus, raw_aus)
@@ -730,165 +839,186 @@ describe('autocmd api', function()
describe('nvim_exec_autocmds', function()
it('validation', function()
- eq("Invalid 'group': 9997999", pcall_err(meths.exec_autocmds, 'FileType', {
- group = 9997999,
- }))
- eq("Invalid 'group': 'bogus'", pcall_err(meths.exec_autocmds, 'FileType', {
- group = 'bogus',
- }))
- eq("Invalid 'group': expected String or Integer, got Array", pcall_err(meths.exec_autocmds, 'FileType', {
- group = {},
- }))
- eq("Invalid 'group': 0", pcall_err(meths.exec_autocmds, 'FileType', {
- group = 0,
- }))
- eq("Invalid 'buffer': expected Buffer, got Array", pcall_err(meths.exec_autocmds, 'FileType', {
- buffer = {},
- }))
- eq("Invalid 'event' item: expected String, got Array", pcall_err(meths.exec_autocmds,
- {'FileType', {}}, {}))
+ eq(
+ "Invalid 'group': 9997999",
+ pcall_err(meths.exec_autocmds, 'FileType', {
+ group = 9997999,
+ })
+ )
+ eq(
+ "Invalid 'group': 'bogus'",
+ pcall_err(meths.exec_autocmds, 'FileType', {
+ group = 'bogus',
+ })
+ )
+ eq(
+ "Invalid 'group': expected String or Integer, got Array",
+ pcall_err(meths.exec_autocmds, 'FileType', {
+ group = {},
+ })
+ )
+ eq(
+ "Invalid 'group': 0",
+ pcall_err(meths.exec_autocmds, 'FileType', {
+ group = 0,
+ })
+ )
+ eq(
+ "Invalid 'buffer': expected Buffer, got Array",
+ pcall_err(meths.exec_autocmds, 'FileType', {
+ buffer = {},
+ })
+ )
+ eq(
+ "Invalid 'event' item: expected String, got Array",
+ pcall_err(meths.exec_autocmds, { 'FileType', {} }, {})
+ )
end)
- it("can trigger builtin autocmds", function()
- meths.set_var("autocmd_executed", false)
+ it('can trigger builtin autocmds', function()
+ meths.set_var('autocmd_executed', false)
- meths.create_autocmd("BufReadPost", {
- pattern = "*",
- command = "let g:autocmd_executed = v:true",
+ meths.create_autocmd('BufReadPost', {
+ pattern = '*',
+ command = 'let g:autocmd_executed = v:true',
})
- eq(false, meths.get_var("autocmd_executed"))
- meths.exec_autocmds("BufReadPost", {})
- eq(true, meths.get_var("autocmd_executed"))
+ eq(false, meths.get_var('autocmd_executed'))
+ meths.exec_autocmds('BufReadPost', {})
+ eq(true, meths.get_var('autocmd_executed'))
end)
- it("can trigger multiple patterns", function()
- meths.set_var("autocmd_executed", 0)
+ it('can trigger multiple patterns', function()
+ meths.set_var('autocmd_executed', 0)
- meths.create_autocmd("BufReadPost", {
- pattern = "*",
- command = "let g:autocmd_executed += 1",
+ meths.create_autocmd('BufReadPost', {
+ pattern = '*',
+ command = 'let g:autocmd_executed += 1',
})
- meths.exec_autocmds("BufReadPost", { pattern = { "*.lua", "*.vim" } })
- eq(2, meths.get_var("autocmd_executed"))
+ meths.exec_autocmds('BufReadPost', { pattern = { '*.lua', '*.vim' } })
+ eq(2, meths.get_var('autocmd_executed'))
- meths.create_autocmd("BufReadPre", {
- pattern = { "bar", "foo" },
- command = "let g:autocmd_executed += 10",
+ meths.create_autocmd('BufReadPre', {
+ pattern = { 'bar', 'foo' },
+ command = 'let g:autocmd_executed += 10',
})
- meths.exec_autocmds("BufReadPre", { pattern = { "foo", "bar", "baz", "frederick" }})
- eq(22, meths.get_var("autocmd_executed"))
+ meths.exec_autocmds('BufReadPre', { pattern = { 'foo', 'bar', 'baz', 'frederick' } })
+ eq(22, meths.get_var('autocmd_executed'))
end)
- it("can pass the buffer", function()
- meths.set_var("buffer_executed", -1)
- eq(-1, meths.get_var("buffer_executed"))
+ it('can pass the buffer', function()
+ meths.set_var('buffer_executed', -1)
+ eq(-1, meths.get_var('buffer_executed'))
- meths.create_autocmd("BufLeave", {
- pattern = "*",
+ meths.create_autocmd('BufLeave', {
+ pattern = '*',
command = 'let g:buffer_executed = +expand("<abuf>")',
})
-- Doesn't execute for other non-matching events
- meths.exec_autocmds("CursorHold", { buffer = 1 })
- eq(-1, meths.get_var("buffer_executed"))
+ meths.exec_autocmds('CursorHold', { buffer = 1 })
+ eq(-1, meths.get_var('buffer_executed'))
- meths.exec_autocmds("BufLeave", { buffer = 1 })
- eq(1, meths.get_var("buffer_executed"))
+ meths.exec_autocmds('BufLeave', { buffer = 1 })
+ eq(1, meths.get_var('buffer_executed'))
end)
- it("can pass the filename, pattern match", function()
- meths.set_var("filename_executed", 'none')
- eq('none', meths.get_var("filename_executed"))
+ it('can pass the filename, pattern match', function()
+ meths.set_var('filename_executed', 'none')
+ eq('none', meths.get_var('filename_executed'))
- meths.create_autocmd("BufEnter", {
- pattern = "*.py",
+ meths.create_autocmd('BufEnter', {
+ pattern = '*.py',
command = 'let g:filename_executed = expand("<afile>")',
})
-- Doesn't execute for other non-matching events
- meths.exec_autocmds("CursorHold", { buffer = 1 })
- eq('none', meths.get_var("filename_executed"))
+ meths.exec_autocmds('CursorHold', { buffer = 1 })
+ eq('none', meths.get_var('filename_executed'))
meths.command('edit __init__.py')
- eq('__init__.py', meths.get_var("filename_executed"))
+ eq('__init__.py', meths.get_var('filename_executed'))
end)
it('cannot pass buf and fname', function()
- local ok = pcall(meths.exec_autocmds, "BufReadPre", { pattern = "literally_cannot_error.rs", buffer = 1 })
+ local ok = pcall(
+ meths.exec_autocmds,
+ 'BufReadPre',
+ { pattern = 'literally_cannot_error.rs', buffer = 1 }
+ )
eq(false, ok)
end)
- it("can pass the filename, exact match", function()
- meths.set_var("filename_executed", 'none')
- eq('none', meths.get_var("filename_executed"))
+ it('can pass the filename, exact match', function()
+ meths.set_var('filename_executed', 'none')
+ eq('none', meths.get_var('filename_executed'))
meths.command('edit other_file.txt')
meths.command('edit __init__.py')
- eq('none', meths.get_var("filename_executed"))
+ eq('none', meths.get_var('filename_executed'))
- meths.create_autocmd("CursorHoldI", {
- pattern = "__init__.py",
+ meths.create_autocmd('CursorHoldI', {
+ pattern = '__init__.py',
command = 'let g:filename_executed = expand("<afile>")',
})
-- Doesn't execute for other non-matching events
- meths.exec_autocmds("CursorHoldI", { buffer = 1 })
- eq('none', meths.get_var("filename_executed"))
+ meths.exec_autocmds('CursorHoldI', { buffer = 1 })
+ eq('none', meths.get_var('filename_executed'))
- meths.exec_autocmds("CursorHoldI", { buffer = meths.get_current_buf() })
- eq('__init__.py', meths.get_var("filename_executed"))
+ meths.exec_autocmds('CursorHoldI', { buffer = meths.get_current_buf() })
+ eq('__init__.py', meths.get_var('filename_executed'))
-- Reset filename
- meths.set_var("filename_executed", 'none')
+ meths.set_var('filename_executed', 'none')
- meths.exec_autocmds("CursorHoldI", { pattern = '__init__.py' })
- eq('__init__.py', meths.get_var("filename_executed"))
+ meths.exec_autocmds('CursorHoldI', { pattern = '__init__.py' })
+ eq('__init__.py', meths.get_var('filename_executed'))
end)
- it("works with user autocmds", function()
- meths.set_var("matched", 'none')
+ it('works with user autocmds', function()
+ meths.set_var('matched', 'none')
- meths.create_autocmd("User", {
- pattern = "TestCommand",
- command = 'let g:matched = "matched"'
+ meths.create_autocmd('User', {
+ pattern = 'TestCommand',
+ command = 'let g:matched = "matched"',
})
- meths.exec_autocmds("User", { pattern = "OtherCommand" })
+ meths.exec_autocmds('User', { pattern = 'OtherCommand' })
eq('none', meths.get_var('matched'))
- meths.exec_autocmds("User", { pattern = "TestCommand" })
+ meths.exec_autocmds('User', { pattern = 'TestCommand' })
eq('matched', meths.get_var('matched'))
end)
it('can pass group by id', function()
- meths.set_var("group_executed", false)
+ meths.set_var('group_executed', false)
- local auid = meths.create_augroup("nvim_test_augroup", { clear = true })
- meths.create_autocmd("FileType", {
+ local auid = meths.create_augroup('nvim_test_augroup', { clear = true })
+ meths.create_autocmd('FileType', {
group = auid,
command = 'let g:group_executed = v:true',
})
- eq(false, meths.get_var("group_executed"))
- meths.exec_autocmds("FileType", { group = auid })
- eq(true, meths.get_var("group_executed"))
+ eq(false, meths.get_var('group_executed'))
+ meths.exec_autocmds('FileType', { group = auid })
+ eq(true, meths.get_var('group_executed'))
end)
it('can pass group by name', function()
- meths.set_var("group_executed", false)
+ meths.set_var('group_executed', false)
- local auname = "nvim_test_augroup"
+ local auname = 'nvim_test_augroup'
meths.create_augroup(auname, { clear = true })
- meths.create_autocmd("FileType", {
+ meths.create_autocmd('FileType', {
group = auname,
command = 'let g:group_executed = v:true',
})
- eq(false, meths.get_var("group_executed"))
- meths.exec_autocmds("FileType", { group = auname })
- eq(true, meths.get_var("group_executed"))
+ eq(false, meths.get_var('group_executed'))
+ meths.exec_autocmds('FileType', { group = auname })
+ eq(true, meths.get_var('group_executed'))
end)
end)
@@ -903,19 +1033,19 @@ describe('autocmd api', function()
opts = opts or {}
local resulting = {
- pattern = "*",
- command = "let g:executed = g:executed + 1",
+ pattern = '*',
+ command = 'let g:executed = g:executed + 1',
}
resulting.group = opts.group
resulting.once = opts.once
- meths.create_autocmd("FileType", resulting)
+ meths.create_autocmd('FileType', resulting)
end
local set_ft = function(ft)
- ft = ft or "txt"
- source(string.format("set filetype=%s", ft))
+ ft = ft or 'txt'
+ source(string.format('set filetype=%s', ft))
end
local get_executed_count = function()
@@ -923,12 +1053,12 @@ describe('autocmd api', function()
end
it('can be added in a group', function()
- local augroup = "TestGroup"
+ local augroup = 'TestGroup'
meths.create_augroup(augroup, { clear = true })
make_counting_autocmd { group = augroup }
- set_ft("txt")
- set_ft("python")
+ set_ft('txt')
+ set_ft('python')
eq(2, get_executed_count())
end)
@@ -943,7 +1073,7 @@ describe('autocmd api', function()
end)
it('handles ++once', function()
- make_counting_autocmd {once = true}
+ make_counting_autocmd { once = true }
set_ft('txt')
set_ft('help')
set_ft('txt')
@@ -953,9 +1083,9 @@ describe('autocmd api', function()
end)
it('errors on unexpected keys', function()
- local success, code = pcall(meths.create_autocmd, "FileType", {
- pattern = "*",
- not_a_valid_key = "NotDefined",
+ local success, code = pcall(meths.create_autocmd, 'FileType', {
+ pattern = '*',
+ not_a_valid_key = 'NotDefined',
})
eq(false, success)
@@ -963,24 +1093,35 @@ describe('autocmd api', function()
end)
it('can execute simple callback', function()
- exec_lua([[
+ exec_lua(
+ [[
vim.g.executed = false
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
callback = function() vim.g.executed = true end,
})
- ]], {})
-
-
- eq(true, exec_lua([[
+ ]],
+ {}
+ )
+
+ eq(
+ true,
+ exec_lua(
+ [[
vim.cmd "set filetype=txt"
return vim.g.executed
- ]], {}))
+ ]],
+ {}
+ )
+ )
end)
it('calls multiple lua callbacks for the same autocmd execution', function()
- eq(4, exec_lua([[
+ eq(
+ 4,
+ exec_lua(
+ [[
local count = 0
local counter = function()
count = count + 1
@@ -1000,7 +1141,10 @@ describe('autocmd api', function()
vim.cmd "set filetype=txt"
return count
- ]], {}))
+ ]],
+ {}
+ )
+ )
end)
it('properly releases functions with ++once', function()
@@ -1030,82 +1174,86 @@ describe('autocmd api', function()
command [[set filetype=txt]]
eq(1, exec_lua([[return OnceCount]], {}))
- eq(0, exec_lua([[
+ eq(
+ 0,
+ exec_lua([[
local count = 0
for _ in pairs(WeakTable) do
count = count + 1
end
return count
- ]]), "Should have no keys remaining")
+ ]]),
+ 'Should have no keys remaining'
+ )
end)
it('groups can be cleared', function()
- local augroup = "TestGroup"
+ local augroup = 'TestGroup'
meths.create_augroup(augroup, { clear = true })
- meths.create_autocmd("FileType", {
+ meths.create_autocmd('FileType', {
group = augroup,
- command = "let g:executed = g:executed + 1"
+ command = 'let g:executed = g:executed + 1',
})
- set_ft("txt")
- set_ft("txt")
- eq(2, get_executed_count(), "should only count twice")
+ set_ft('txt')
+ set_ft('txt')
+ eq(2, get_executed_count(), 'should only count twice')
meths.create_augroup(augroup, { clear = true })
eq({}, meths.get_autocmds { group = augroup })
- set_ft("txt")
- set_ft("txt")
- eq(2, get_executed_count(), "No additional counts")
+ set_ft('txt')
+ set_ft('txt')
+ eq(2, get_executed_count(), 'No additional counts')
end)
it('can delete non-existent groups with pcall', function()
- eq(false, exec_lua[[return pcall(vim.api.nvim_del_augroup_by_name, 'noexist')]])
+ eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_name, 'noexist')]])
eq('Vim:E367: No such group: "noexist"', pcall_err(meths.del_augroup_by_name, 'noexist'))
- eq(false, exec_lua[[return pcall(vim.api.nvim_del_augroup_by_id, -12342)]])
+ eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, -12342)]])
eq('Vim:E367: No such group: "--Deleted--"', pcall_err(meths.del_augroup_by_id, -12312))
- eq(false, exec_lua[[return pcall(vim.api.nvim_del_augroup_by_id, 0)]])
+ eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, 0)]])
eq('Vim:E367: No such group: "[NULL]"', pcall_err(meths.del_augroup_by_id, 0))
- eq(false, exec_lua[[return pcall(vim.api.nvim_del_augroup_by_id, 12342)]])
+ eq(false, exec_lua [[return pcall(vim.api.nvim_del_augroup_by_id, 12342)]])
eq('Vim:E367: No such group: "[NULL]"', pcall_err(meths.del_augroup_by_id, 12312))
end)
it('groups work with once', function()
- local augroup = "TestGroup"
+ local augroup = 'TestGroup'
meths.create_augroup(augroup, { clear = true })
make_counting_autocmd { group = augroup, once = true }
- set_ft("txt")
- set_ft("python")
+ set_ft('txt')
+ set_ft('python')
eq(1, get_executed_count())
end)
it('autocmds can be registered multiple times.', function()
- local augroup = "TestGroup"
+ local augroup = 'TestGroup'
meths.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 }
- set_ft("txt")
- set_ft("python")
+ set_ft('txt')
+ set_ft('python')
eq(3 * 2, get_executed_count())
end)
it('can be deleted', function()
- local augroup = "WillBeDeleted"
+ local augroup = 'WillBeDeleted'
meths.create_augroup(augroup, { clear = true })
- meths.create_autocmd({"FileType"}, {
- pattern = "*",
+ meths.create_autocmd({ 'FileType' }, {
+ pattern = '*',
command = "echo 'does not matter'",
})
@@ -1118,20 +1266,20 @@ describe('autocmd api', function()
end)
it('can be used for buffer local autocmds', function()
- local augroup = "WillBeDeleted"
+ local augroup = 'WillBeDeleted'
- meths.set_var("value_set", false)
+ meths.set_var('value_set', false)
meths.create_augroup(augroup, { clear = true })
- meths.create_autocmd("FileType", {
- pattern = "<buffer>",
- command = "let g:value_set = v:true",
+ meths.create_autocmd('FileType', {
+ pattern = '<buffer>',
+ command = 'let g:value_set = v:true',
})
- command "new"
- command "set filetype=python"
+ command 'new'
+ command 'set filetype=python'
- eq(false, meths.get_var("value_set"))
+ eq(false, meths.get_var('value_set'))
end)
it('can accept vimscript functions', function()
@@ -1154,107 +1302,113 @@ describe('autocmd api', function()
set filetype=txt
]]
- eq(2, meths.get_var("vimscript_executed"))
+ eq(2, meths.get_var('vimscript_executed'))
end)
end)
describe('augroup!', function()
it('legacy: should clear and not return any autocmds for delete groups', function()
- command('augroup TEMP_A')
- command(' autocmd! BufReadPost *.py :echo "Hello"')
- command('augroup END')
+ command('augroup TEMP_A')
+ command(' autocmd! BufReadPost *.py :echo "Hello"')
+ command('augroup END')
- command('augroup! TEMP_A')
+ command('augroup! TEMP_A')
- eq(false, pcall(meths.get_autocmds, { group = 'TEMP_A' }))
+ eq(false, pcall(meths.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.get_autocmds { event = 'BufReadPost' })
+ -- For some reason, augroup! doesn't clear the autocmds themselves, which is just wild
+ -- but we managed to keep this behavior.
+ eq(1, #meths.get_autocmds { event = 'BufReadPost' })
end)
it('legacy: remove augroups that have no autocmds', function()
- command('augroup TEMP_AB')
- command('augroup END')
+ command('augroup TEMP_AB')
+ command('augroup END')
- command('augroup! TEMP_AB')
+ command('augroup! TEMP_AB')
- eq(false, pcall(meths.get_autocmds, { group = 'TEMP_AB' }))
- eq(0, #meths.get_autocmds { event = 'BufReadPost' })
+ eq(false, pcall(meths.get_autocmds, { group = 'TEMP_AB' }))
+ eq(0, #meths.get_autocmds { event = 'BufReadPost' })
end)
it('legacy: multiple remove and add augroup', function()
- command('augroup TEMP_ABC')
- command(' au!')
- command(' autocmd BufReadPost *.py echo "Hello"')
- command('augroup END')
+ command('augroup TEMP_ABC')
+ command(' au!')
+ command(' autocmd BufReadPost *.py echo "Hello"')
+ command('augroup END')
- command('augroup! TEMP_ABC')
+ command('augroup! TEMP_ABC')
- -- Should still have one autocmd :'(
- local aus = meths.get_autocmds { event = 'BufReadPost' }
- eq(1, #aus, aus)
+ -- Should still have one autocmd :'(
+ local aus = meths.get_autocmds { event = 'BufReadPost' }
+ eq(1, #aus, aus)
- command('augroup TEMP_ABC')
- command(' au!')
- command(' autocmd BufReadPost *.py echo "Hello"')
- command('augroup END')
+ command('augroup TEMP_ABC')
+ command(' au!')
+ command(' autocmd BufReadPost *.py echo "Hello"')
+ command('augroup END')
- -- Should now have two autocmds :'(
- aus = meths.get_autocmds { event = 'BufReadPost' }
- eq(2, #aus, aus)
+ -- Should now have two autocmds :'(
+ aus = meths.get_autocmds { event = 'BufReadPost' }
+ eq(2, #aus, aus)
- command('augroup! TEMP_ABC')
+ command('augroup! TEMP_ABC')
- eq(false, pcall(meths.get_autocmds, { group = 'TEMP_ABC' }))
- eq(2, #meths.get_autocmds { event = 'BufReadPost' })
+ eq(false, pcall(meths.get_autocmds, { group = 'TEMP_ABC' }))
+ eq(2, #meths.get_autocmds { event = 'BufReadPost' })
end)
it('api: should clear and not return any autocmds for delete groups by id', function()
- command('augroup TEMP_ABCD')
- command('autocmd! BufReadPost *.py :echo "Hello"')
- command('augroup END')
+ command('augroup TEMP_ABCD')
+ command('autocmd! BufReadPost *.py :echo "Hello"')
+ command('augroup END')
- local augroup_id = meths.create_augroup("TEMP_ABCD", { clear = false })
- meths.del_augroup_by_id(augroup_id)
+ local augroup_id = meths.create_augroup('TEMP_ABCD', { clear = false })
+ meths.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.get_autocmds, { group = 'TEMP_ABCD' }))
- eq(0, #meths.get_autocmds { event = 'BufReadPost' })
+ -- For good reason, we kill all the autocmds from del_augroup,
+ -- so now this works as expected
+ eq(false, pcall(meths.get_autocmds, { group = 'TEMP_ABCD' }))
+ eq(0, #meths.get_autocmds { event = 'BufReadPost' })
end)
it('api: should clear and not return any autocmds for delete groups by name', function()
- command('augroup TEMP_ABCDE')
- command('autocmd! BufReadPost *.py :echo "Hello"')
- command('augroup END')
+ command('augroup TEMP_ABCDE')
+ command('autocmd! BufReadPost *.py :echo "Hello"')
+ command('augroup END')
- meths.del_augroup_by_name("TEMP_ABCDE")
+ meths.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.get_autocmds, { group = 'TEMP_ABCDE' }))
- eq(0, #meths.get_autocmds { event = 'BufReadPost' })
+ -- For good reason, we kill all the autocmds from del_augroup,
+ -- so now this works as expected
+ eq(false, pcall(meths.get_autocmds, { group = 'TEMP_ABCDE' }))
+ eq(0, #meths.get_autocmds { event = 'BufReadPost' })
end)
end)
describe('nvim_clear_autocmds', function()
it('validation', function()
- eq("Cannot use both 'pattern' and 'buffer'", pcall_err(meths.clear_autocmds, {
- pattern = '*',
- buffer = 42,
- }))
- eq("Invalid 'event' item: expected String, got Array", pcall_err(meths.clear_autocmds, {
- event = {'FileType', {}}
- }))
- eq("Invalid 'group': 0", pcall_err(meths.clear_autocmds, {group = 0}))
+ eq(
+ "Cannot use both 'pattern' and 'buffer'",
+ pcall_err(meths.clear_autocmds, {
+ pattern = '*',
+ buffer = 42,
+ })
+ )
+ eq(
+ "Invalid 'event' item: expected String, got Array",
+ pcall_err(meths.clear_autocmds, {
+ event = { 'FileType', {} },
+ })
+ )
+ eq("Invalid 'group': 0", pcall_err(meths.clear_autocmds, { group = 0 }))
end)
it('should clear based on event + pattern', function()
command('autocmd InsertEnter *.py :echo "Python can be cool sometimes"')
command('autocmd InsertEnter *.txt :echo "Text Files Are Cool"')
- local search = { event = "InsertEnter", pattern = "*.txt" }
+ local search = { event = 'InsertEnter', pattern = '*.txt' }
local before_delete = meths.get_autocmds(search)
eq(1, #before_delete)
@@ -1273,7 +1427,7 @@ describe('autocmd api', function()
command('autocmd InsertEnter *.py :echo "Python can be cool sometimes"')
command('autocmd InsertEnter *.txt :echo "Text Files Are Cool"')
- local search = { event = "InsertEnter"}
+ local search = { event = 'InsertEnter' }
local before_delete = meths.get_autocmds(search)
eq(2, #before_delete)
@@ -1288,17 +1442,17 @@ describe('autocmd api', function()
command('autocmd InsertEnter *.TestPat2 :echo "Enter 2"')
command('autocmd InsertLeave *.TestPat2 :echo "Leave 2"')
- local search = { pattern = "*.TestPat1"}
+ local search = { pattern = '*.TestPat1' }
local before_delete = meths.get_autocmds(search)
eq(2, #before_delete)
- local before_delete_events = meths.get_autocmds { event = { "InsertEnter", "InsertLeave" } }
+ local before_delete_events = meths.get_autocmds { event = { 'InsertEnter', 'InsertLeave' } }
eq(4, #before_delete_events)
meths.clear_autocmds(search)
local after_delete = meths.get_autocmds(search)
eq(0, #after_delete)
- local after_delete_events = meths.get_autocmds { event = { "InsertEnter", "InsertLeave" } }
+ local after_delete_events = meths.get_autocmds { event = { 'InsertEnter', 'InsertLeave' } }
eq(2, #after_delete_events)
end)
@@ -1307,14 +1461,14 @@ describe('autocmd api', function()
command('autocmd InsertEnter <buffer> :echo "Enter Buffer"')
command('autocmd InsertEnter *.TestPat1 :echo "Enter Pattern"')
- local search = { event = "InsertEnter" }
+ local search = { event = 'InsertEnter' }
local before_delete = meths.get_autocmds(search)
eq(2, #before_delete)
meths.clear_autocmds { buffer = 0 }
local after_delete = meths.get_autocmds(search)
eq(1, #after_delete)
- eq("*.TestPat1", after_delete[1].pattern)
+ eq('*.TestPat1', after_delete[1].pattern)
end)
it('should allow clearing by buffer and group', function()
@@ -1324,7 +1478,7 @@ describe('autocmd api', function()
command(' autocmd InsertEnter *.TestPat1 :echo "Enter Pattern"')
command('augroup END')
- local search = { event = "InsertEnter", group = "TestNvimClearAutocmds" }
+ local search = { event = 'InsertEnter', group = 'TestNvimClearAutocmds' }
local before_delete = meths.get_autocmds(search)
eq(2, #before_delete)
diff --git a/test/functional/api/buffer_updates_spec.lua b/test/functional/api/buffer_updates_spec.lua
index 6c250ad6ce..b0efcf0dab 100644
--- a/test/functional/api/buffer_updates_spec.lua
+++ b/test/functional/api/buffer_updates_spec.lua
@@ -2,23 +2,25 @@ local helpers = require('test.functional.helpers')(after_each)
local clear = helpers.clear
local eq, ok = helpers.eq, helpers.ok
local funcs = helpers.funcs
-local buffer, command, eval, nvim, next_msg = helpers.buffer,
- helpers.command, helpers.eval, helpers.nvim, helpers.next_msg
+local buffer, command, eval, nvim, next_msg =
+ helpers.buffer, helpers.command, helpers.eval, helpers.nvim, helpers.next_msg
local nvim_prog = helpers.nvim_prog
local pcall_err = helpers.pcall_err
local sleep = helpers.sleep
local write_file = helpers.write_file
-local origlines = {"original line 1",
- "original line 2",
- "original line 3",
- "original line 4",
- "original line 5",
- "original line 6"}
+local origlines = {
+ 'original line 1',
+ 'original line 2',
+ 'original line 3',
+ 'original line 4',
+ 'original line 5',
+ 'original line 6',
+}
local function expectn(name, args)
-- expect the next message to be the specified notification event
- eq({'notification', name, args}, next_msg())
+ eq({ 'notification', name, args }, next_msg())
end
local function sendkeys(keys)
@@ -27,12 +29,13 @@ local function sendkeys(keys)
-- more key presses - otherwise they all pile up in the queue and get
-- processed at once
local ntime = os.clock() + 0.1
- repeat until os.clock() > ntime
+ repeat
+ until os.clock() > ntime
end
local function open(activate, lines)
local filename = helpers.tmpname()
- write_file(filename, table.concat(lines, "\n").."\n", true)
+ write_file(filename, table.concat(lines, '\n') .. '\n', true)
command('edit ' .. filename)
local b = nvim('get_current_buf')
-- what is the value of b:changedtick?
@@ -43,7 +46,7 @@ local function open(activate, lines)
if activate then
local firstline = 0
ok(buffer('attach', b, true, {}))
- expectn('nvim_buf_lines_event', {b, tick, firstline, -1, lines, false})
+ expectn('nvim_buf_lines_event', { b, tick, firstline, -1, lines, false })
end
return b, tick, filename
@@ -60,13 +63,13 @@ end
local function reopen(buf, expectedlines)
ok(buffer('detach', buf))
- expectn('nvim_buf_detach_event', {buf})
+ expectn('nvim_buf_detach_event', { buf })
-- for some reason the :edit! increments tick by 2
command('edit!')
local tick = eval('b:changedtick')
ok(buffer('attach', buf, true, {}))
local firstline = 0
- expectn('nvim_buf_lines_event', {buf, tick, firstline, -1, expectedlines, false})
+ expectn('nvim_buf_lines_event', { buf, tick, firstline, -1, expectedlines, false })
command('normal! gg')
return tick
end
@@ -81,18 +84,36 @@ local function reopenwithfolds(b)
-- add a fold
command('2,4fold')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 4, {'original line 2/*{{{*/',
- 'original line 3',
- 'original line 4/*}}}*/'}, false})
+ expectn('nvim_buf_lines_event', {
+ b,
+ tick,
+ 1,
+ 4,
+ {
+ 'original line 2/*{{{*/',
+ 'original line 3',
+ 'original line 4/*}}}*/',
+ },
+ false,
+ })
-- make a new fold that wraps lines 1-6
command('1,6fold')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 6, {'original line 1/*{{{*/',
- 'original line 2/*{{{*/',
- 'original line 3',
- 'original line 4/*}}}*/',
- 'original line 5',
- 'original line 6/*}}}*/'}, false})
+ expectn('nvim_buf_lines_event', {
+ b,
+ tick,
+ 0,
+ 6,
+ {
+ 'original line 1/*{{{*/',
+ 'original line 2/*{{{*/',
+ 'original line 3',
+ 'original line 4/*}}}*/',
+ 'original line 5',
+ 'original line 6/*}}}*/',
+ },
+ false,
+ })
return tick
end
@@ -105,97 +126,105 @@ describe('API: buffer events:', function()
-- add a new line at the start of the buffer
command('normal! GyyggP')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 0, {'original line 6'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 0, { 'original line 6' }, false })
-- add multiple lines at the start of the file
command('normal! GkkyGggP')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 0, {'original line 4',
- 'original line 5',
- 'original line 6'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 0, 0, { 'original line 4', 'original line 5', 'original line 6' }, false }
+ )
-- add one line to the middle of the file, several times
command('normal! ggYjjp')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 3, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 3, { 'original line 4' }, false })
command('normal! p')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 4, 4, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 4, 4, { 'original line 4' }, false })
command('normal! p')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 5, 5, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 5, 5, { 'original line 4' }, false })
-- add multiple lines to the middle of the file
command('normal! gg4Yjjp')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 3, {'original line 4',
- 'original line 5',
- 'original line 6',
- 'original line 4'}, false})
+ expectn('nvim_buf_lines_event', {
+ b,
+ tick,
+ 3,
+ 3,
+ {
+ 'original line 4',
+ 'original line 5',
+ 'original line 6',
+ 'original line 4',
+ },
+ false,
+ })
-- add one line to the end of the file
command('normal! ggYGp')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 17, 17, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 17, 17, { 'original line 4' }, false })
-- add one line to the end of the file, several times
command('normal! ggYGppp')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 18, 18, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 18, 18, { 'original line 4' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 19, 19, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 19, 19, { 'original line 4' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 20, 20, {'original line 4'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 20, 20, { 'original line 4' }, false })
-- add several lines to the end of the file, several times
command('normal! gg4YGp')
command('normal! Gp')
command('normal! Gp')
- local firstfour = {'original line 4',
- 'original line 5',
- 'original line 6',
- 'original line 4'}
+ local firstfour = { 'original line 4', 'original line 5', 'original line 6', 'original line 4' }
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 21, 21, firstfour, false})
+ expectn('nvim_buf_lines_event', { b, tick, 21, 21, firstfour, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 25, 25, firstfour, false})
+ expectn('nvim_buf_lines_event', { b, tick, 25, 25, firstfour, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 29, 29, firstfour, false})
+ expectn('nvim_buf_lines_event', { b, tick, 29, 29, firstfour, false })
-- delete the current buffer to turn off buffer events
command('bdelete!')
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
-- add a line at the start of an empty file
command('enew')
tick = eval('b:changedtick')
local b2 = nvim('get_current_buf')
ok(buffer('attach', b2, true, {}))
- expectn('nvim_buf_lines_event', {b2, tick, 0, -1, {""}, false})
+ 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})
+ expectn('nvim_buf_lines_event', { b2, tick, 0, 0, { 'new line 1' }, false })
-- turn off buffer events manually
buffer('detach', b2)
- expectn('nvim_buf_detach_event', {b2})
+ expectn('nvim_buf_detach_event', { b2 })
-- add multiple lines to a blank file
command('enew!')
local b3 = nvim('get_current_buf')
ok(buffer('attach', b3, true, {}))
tick = eval('b:changedtick')
- expectn('nvim_buf_lines_event', {b3, tick, 0, -1, {""}, false})
+ expectn('nvim_buf_lines_event', { b3, tick, 0, -1, { '' }, false })
eval('append(0, ["new line 1", "new line 2", "new line 3"])')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b3, tick, 0, 0, {'new line 1',
- 'new line 2',
- 'new line 3'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b3, tick, 0, 0, { 'new line 1', 'new line 2', 'new line 3' }, false }
+ )
-- use the API itself to add a line to the start of the buffer
- buffer('set_lines', b3, 0, 0, true, {'New First Line'})
+ buffer('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})
+ expectn('nvim_buf_lines_event', { b3, tick, 0, 0, { 'New First Line' }, false })
end)
it('when lines are removed', function()
@@ -204,37 +233,37 @@ describe('API: buffer events:', function()
-- remove one line from start of file
command('normal! dd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, {}, false })
-- remove multiple lines from the start of the file
command('normal! 4dd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 4, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 4, {}, false })
-- remove multiple lines from middle of file
tick = reopen(b, origlines)
command('normal! jj3dd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 5, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 5, {}, false })
-- remove one line from the end of the file
tick = reopen(b, origlines)
command('normal! Gdd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 5, 6, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 5, 6, {}, false })
-- remove multiple lines from the end of the file
tick = reopen(b, origlines)
command('normal! 4G3dd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 6, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 6, {}, false })
-- pretend to remove heaps lines from the end of the file but really
-- just remove two
tick = reopen(b, origlines)
command('normal! Gk5dd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 4, 6, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 4, 6, {}, false })
end)
it('when text is changed', function()
@@ -243,53 +272,56 @@ describe('API: buffer events:', function()
-- some normal text editing
command('normal! A555')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'original line 1555'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'original line 1555' }, false })
command('normal! jj8X')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 3, {'origin3'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 3, { 'origin3' }, false })
-- modify multiple lines at once using visual block mode
tick = reopen(b, origlines)
command('normal! jjw')
sendkeys('<C-v>jjllx')
tick = tick + 1
- expectn('nvim_buf_lines_event',
- {b, tick, 2, 5, {'original e 3', 'original e 4', 'original e 5'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 2, 5, { 'original e 3', 'original e 4', 'original e 5' }, false }
+ )
-- replace part of a line line using :s
tick = reopen(b, origlines)
command('3s/line 3/foo/')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 3, {'original foo'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 3, { 'original foo' }, false })
-- replace parts of several lines line using :s
tick = reopen(b, origlines)
command('%s/line [35]/foo/')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 5, {'original foo',
- 'original line 4',
- 'original foo'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 2, 5, { 'original foo', 'original line 4', 'original foo' }, false }
+ )
-- type text into the first line of a blank file, one character at a time
command('bdelete!')
tick = 2
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
local bnew = nvim('get_current_buf')
ok(buffer('attach', bnew, true, {}))
- expectn('nvim_buf_lines_event', {bnew, tick, 0, -1, {''}, false})
+ expectn('nvim_buf_lines_event', { bnew, tick, 0, -1, { '' }, false })
sendkeys('i')
sendkeys('h')
sendkeys('e')
sendkeys('l')
sendkeys('l')
sendkeys('o\nworld')
- expectn('nvim_buf_lines_event', {bnew, tick + 1, 0, 1, {'h'}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 2, 0, 1, {'he'}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 3, 0, 1, {'hel'}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 4, 0, 1, {'hell'}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 5, 0, 1, {'hello'}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 6, 0, 1, {'hello', ''}, false})
- expectn('nvim_buf_lines_event', {bnew, tick + 7, 1, 2, {'world'}, false})
+ expectn('nvim_buf_lines_event', { bnew, tick + 1, 0, 1, { 'h' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 2, 0, 1, { 'he' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 3, 0, 1, { 'hel' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 4, 0, 1, { 'hell' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 5, 0, 1, { 'hello' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 6, 0, 1, { 'hello', '' }, false })
+ expectn('nvim_buf_lines_event', { bnew, tick + 7, 1, 2, { 'world' }, false })
end)
it('when lines are replaced', function()
@@ -298,145 +330,145 @@ describe('API: buffer events:', function()
-- blast away parts of some lines with visual mode
command('normal! jjwvjjllx')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 3, {'original '}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 3, { 'original ' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 4, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 4, {}, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 4, {'e 5'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 4, { 'e 5' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 3, {'original e 5'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 3, { 'original e 5' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 4, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 4, {}, false })
-- blast away a few lines using :g
tick = reopen(b, origlines)
command('global/line [35]/delete')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 2, 3, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 2, 3, {}, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 4, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 4, {}, false })
end)
it('when lines are filtered', function()
-- Test filtering lines with !cat
- local b, tick = editoriginal(true, {"A", "C", "E", "B", "D", "F"})
+ local b, tick = editoriginal(true, { 'A', 'C', 'E', 'B', 'D', 'F' })
command('silent 2,5!cat')
-- the change comes through as two changes:
-- 1) addition of the new lines after the filtered lines
-- 2) removal of the original lines
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 5, 5, {"C", "E", "B", "D"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 5, 5, { 'C', 'E', 'B', 'D' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 5, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 5, {}, false })
end)
it('when you use "o"', function()
- local b, tick = editoriginal(true, {'AAA', 'BBB'})
+ local b, tick = editoriginal(true, { 'AAA', 'BBB' })
command('set noautoindent nosmartindent')
-- use 'o' to start a new line from a line with no indent
command('normal! o')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 1, {""}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 1, { '' }, false })
-- undo the change, indent line 1 a bit, and try again
command('undo')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 2, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 2, {}, false })
tick = tick + 1
- expectn('nvim_buf_changedtick_event', {b, tick})
+ expectn('nvim_buf_changedtick_event', { b, tick })
command('set autoindent')
command('normal! >>')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {"\tAAA"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { '\tAAA' }, false })
command('normal! ommm')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 1, {"\t"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 1, { '\t' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 2, {"\tmmm"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 2, { '\tmmm' }, false })
-- undo the change, and try again with 'O'
command('undo')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 2, {'\t'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 2, { '\t' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 2, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 2, {}, false })
tick = tick + 1
- expectn('nvim_buf_changedtick_event', {b, tick})
+ expectn('nvim_buf_changedtick_event', { b, tick })
command('normal! ggOmmm')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 0, {"\t"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 0, { '\t' }, false })
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {"\tmmm"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { '\tmmm' }, false })
end)
it('deactivates if the buffer is changed externally', function()
-- Test changing file from outside vim and reloading using :edit
- local lines = {"Line 1", "Line 2"};
+ local lines = { 'Line 1', 'Line 2' }
local b, tick, filename = editoriginal(true, lines)
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'ine 1'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'ine 1' }, false })
command('undo')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'Line 1'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'Line 1' }, false })
tick = tick + 1
- expectn('nvim_buf_changedtick_event', {b, tick})
+ expectn('nvim_buf_changedtick_event', { b, tick })
-- change the file directly
- write_file(filename, "another line\n", true, true)
+ write_file(filename, 'another line\n', true, true)
-- reopen the file and watch buffer events shut down
command('edit')
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
end)
it('channel can watch many buffers at once', function()
-- edit 3 buffers, make sure they all have windows visible so that when we
-- move between buffers, none of them are unloaded
- local b1, tick1 = editoriginal(true, {'A1', 'A2'})
+ local b1, tick1 = editoriginal(true, { 'A1', 'A2' })
local b1nr = eval('bufnr("")')
command('split')
- local b2, tick2 = open(true, {'B1', 'B2'})
+ local b2, tick2 = open(true, { 'B1', 'B2' })
local b2nr = eval('bufnr("")')
command('split')
- local b3, tick3 = open(true, {'C1', 'C2'})
+ local b3, tick3 = open(true, { 'C1', 'C2' })
local b3nr = eval('bufnr("")')
-- make a new window for moving between buffers
command('split')
- command('b'..b1nr)
+ command('b' .. b1nr)
command('normal! x')
tick1 = tick1 + 1
- expectn('nvim_buf_lines_event', {b1, tick1, 0, 1, {'1'}, false})
+ expectn('nvim_buf_lines_event', { b1, tick1, 0, 1, { '1' }, false })
command('undo')
tick1 = tick1 + 1
- expectn('nvim_buf_lines_event', {b1, tick1, 0, 1, {'A1'}, false})
+ expectn('nvim_buf_lines_event', { b1, tick1, 0, 1, { 'A1' }, false })
tick1 = tick1 + 1
- expectn('nvim_buf_changedtick_event', {b1, tick1})
+ expectn('nvim_buf_changedtick_event', { b1, tick1 })
- command('b'..b2nr)
+ command('b' .. b2nr)
command('normal! x')
tick2 = tick2 + 1
- expectn('nvim_buf_lines_event', {b2, tick2, 0, 1, {'1'}, false})
+ expectn('nvim_buf_lines_event', { b2, tick2, 0, 1, { '1' }, false })
command('undo')
tick2 = tick2 + 1
- expectn('nvim_buf_lines_event', {b2, tick2, 0, 1, {'B1'}, false})
+ expectn('nvim_buf_lines_event', { b2, tick2, 0, 1, { 'B1' }, false })
tick2 = tick2 + 1
- expectn('nvim_buf_changedtick_event', {b2, tick2})
+ expectn('nvim_buf_changedtick_event', { b2, tick2 })
- command('b'..b3nr)
+ command('b' .. b3nr)
command('normal! x')
tick3 = tick3 + 1
- expectn('nvim_buf_lines_event', {b3, tick3, 0, 1, {'1'}, false})
+ expectn('nvim_buf_lines_event', { b3, tick3, 0, 1, { '1' }, false })
command('undo')
tick3 = tick3 + 1
- expectn('nvim_buf_lines_event', {b3, tick3, 0, 1, {'C1'}, false})
+ expectn('nvim_buf_lines_event', { b3, tick3, 0, 1, { 'C1' }, false })
tick3 = tick3 + 1
- expectn('nvim_buf_changedtick_event', {b3, tick3})
+ expectn('nvim_buf_changedtick_event', { b3, tick3 })
end)
it('does not get confused if enabled/disabled many times', function()
@@ -449,8 +481,8 @@ describe('API: buffer events:', function()
ok(buffer('attach', b, true, {}))
ok(buffer('attach', b, true, {}))
ok(buffer('attach', b, true, {}))
- expectn('nvim_buf_lines_event', {b, tick, 0, -1, origlines, false})
- eval('rpcnotify('..channel..', "Hello There")')
+ expectn('nvim_buf_lines_event', { b, tick, 0, -1, origlines, false })
+ eval('rpcnotify(' .. channel .. ', "Hello There")')
expectn('Hello There', {})
-- Disable buffer events many times.
@@ -459,8 +491,8 @@ describe('API: buffer events:', function()
ok(buffer('detach', b))
ok(buffer('detach', b))
ok(buffer('detach', b))
- expectn('nvim_buf_detach_event', {b})
- eval('rpcnotify('..channel..', "Hello Again")')
+ expectn('nvim_buf_detach_event', { b })
+ eval('rpcnotify(' .. channel .. ', "Hello Again")')
expectn('Hello Again', {})
end)
@@ -470,7 +502,7 @@ describe('API: buffer events:', function()
-- create several new sessions, in addition to our main API
local sessions = {}
local pipe = helpers.new_pipename()
- eval("serverstart('"..pipe.."')")
+ eval("serverstart('" .. pipe .. "')")
sessions[1] = helpers.connect(pipe)
sessions[2] = helpers.connect(pipe)
sessions[3] = helpers.connect(pipe)
@@ -485,109 +517,105 @@ describe('API: buffer events:', function()
local function wantn(sessionid, name, args)
local session = sessions[sessionid]
- eq({'notification', name, args}, session:next_message(10000))
+ eq({ 'notification', name, args }, session:next_message(10000))
end
-- Edit a new file, but don't enable buffer events.
- local lines = {'AAA', 'BBB'}
+ local lines = { 'AAA', 'BBB' }
local b, tick = open(false, lines)
-- Enable buffer events for sessions 1, 2 and 3.
ok(request(1, 'nvim_buf_attach', b, true, {}))
ok(request(2, 'nvim_buf_attach', b, true, {}))
ok(request(3, 'nvim_buf_attach', b, true, {}))
- wantn(1, 'nvim_buf_lines_event', {b, tick, 0, -1, lines, false})
- wantn(2, 'nvim_buf_lines_event', {b, tick, 0, -1, lines, false})
- wantn(3, 'nvim_buf_lines_event', {b, tick, 0, -1, lines, false})
+ wantn(1, 'nvim_buf_lines_event', { b, tick, 0, -1, lines, false })
+ wantn(2, 'nvim_buf_lines_event', { b, tick, 0, -1, lines, false })
+ wantn(3, 'nvim_buf_lines_event', { b, tick, 0, -1, lines, false })
-- Change the buffer.
command('normal! x')
tick = tick + 1
- wantn(1, 'nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
- wantn(2, 'nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
- wantn(3, 'nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ wantn(1, 'nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
+ wantn(2, 'nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
+ wantn(3, 'nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
-- Stop watching on channel 1.
ok(request(1, 'nvim_buf_detach', b))
- wantn(1, 'nvim_buf_detach_event', {b})
+ wantn(1, 'nvim_buf_detach_event', { b })
-- Undo the change to buffer 1.
command('undo')
tick = tick + 1
- wantn(2, 'nvim_buf_lines_event', {b, tick, 0, 1, {'AAA'}, false})
- wantn(3, 'nvim_buf_lines_event', {b, tick, 0, 1, {'AAA'}, false})
+ wantn(2, 'nvim_buf_lines_event', { b, tick, 0, 1, { 'AAA' }, false })
+ wantn(3, 'nvim_buf_lines_event', { b, tick, 0, 1, { 'AAA' }, false })
tick = tick + 1
- wantn(2, 'nvim_buf_changedtick_event', {b, tick})
- wantn(3, 'nvim_buf_changedtick_event', {b, tick})
+ wantn(2, 'nvim_buf_changedtick_event', { b, tick })
+ wantn(3, 'nvim_buf_changedtick_event', { b, tick })
-- make sure there are no other pending nvim_buf_lines_event messages going to
-- channel 1
local channel1 = request(1, 'nvim_get_api_info')[1]
- eval('rpcnotify('..channel1..', "Hello")')
+ eval('rpcnotify(' .. channel1 .. ', "Hello")')
wantn(1, 'Hello', {})
-- close the buffer and channels 2 and 3 should get a nvim_buf_detach_event
-- notification
command('edit')
- wantn(2, 'nvim_buf_detach_event', {b})
- wantn(3, 'nvim_buf_detach_event', {b})
+ wantn(2, 'nvim_buf_detach_event', { b })
+ wantn(3, 'nvim_buf_detach_event', { b })
-- make sure there are no other pending nvim_buf_lines_event messages going to
-- channel 1
channel1 = request(1, 'nvim_get_api_info')[1]
- eval('rpcnotify('..channel1..', "Hello Again")')
+ eval('rpcnotify(' .. channel1 .. ', "Hello Again")')
wantn(1, 'Hello Again', {})
end)
it('works with :diffput and :diffget', function()
- local b1, tick1 = editoriginal(true, {"AAA", "BBB"})
+ local b1, tick1 = editoriginal(true, { 'AAA', 'BBB' })
local channel = nvim('get_api_info')[1]
command('diffthis')
command('rightbelow vsplit')
- local b2, tick2 = open(true, {"BBB", "CCC"})
+ local b2, tick2 = open(true, { 'BBB', 'CCC' })
command('diffthis')
-- go back to first buffer, and push the 'AAA' line to the second buffer
command('1wincmd w')
command('normal! gg')
command('diffput')
tick2 = tick2 + 1
- expectn('nvim_buf_lines_event', {b2, tick2, 0, 0, {"AAA"}, false})
+ expectn('nvim_buf_lines_event', { b2, tick2, 0, 0, { 'AAA' }, false })
-- use :diffget to grab the other change from buffer 2
command('normal! G')
command('diffget')
tick1 = tick1 + 1
- expectn('nvim_buf_lines_event', {b1, tick1, 2, 2, {"CCC"}, false})
+ expectn('nvim_buf_lines_event', { b1, tick1, 2, 2, { 'CCC' }, false })
- eval('rpcnotify('..channel..', "Goodbye")')
+ eval('rpcnotify(' .. channel .. ', "Goodbye")')
expectn('Goodbye', {})
end)
it('works with :sort', function()
-- test for :sort
- local b, tick = editoriginal(true, {"B", "D", "C", "A", "E"})
+ local b, tick = editoriginal(true, { 'B', 'D', 'C', 'A', 'E' })
command('%sort')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 5, {"A", "B", "C", "D", "E"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 5, { 'A', 'B', 'C', 'D', 'E' }, false })
end)
it('works with :left', function()
- local b, tick = editoriginal(true, {" A", " B", "B", "\tB", "\t\tC"})
+ local b, tick = editoriginal(true, { ' A', ' B', 'B', '\tB', '\t\tC' })
command('2,4left')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 4, {"B", "B", "B"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 4, { 'B', 'B', 'B' }, false })
end)
it('works with :right', function()
- local b, tick = editoriginal(true, {" A",
- "\t B",
- "\t \tBB",
- " \tB",
- "\t\tC"})
+ local b, tick = editoriginal(true, { ' A', '\t B', '\t \tBB', ' \tB', '\t\tC' })
command('set ts=2 et')
command('2,4retab')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 4, {" B", " BB", " B"}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 4, { ' B', ' BB', ' B' }, false })
end)
it('works with :move', function()
@@ -595,19 +623,23 @@ describe('API: buffer events:', function()
-- move text down towards the end of the file
command('2,3move 4')
tick = tick + 2
- expectn('nvim_buf_lines_event', {b, tick, 4, 4, {"original line 2",
- "original line 3"}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 4, 4, { 'original line 2', 'original line 3' }, false }
+ )
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 3, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 1, 3, {}, false })
-- move text up towards the start of the file
tick = reopen(b, origlines)
command('4,5move 2')
tick = tick + 2
- expectn('nvim_buf_lines_event', {b, tick, 2, 2, {"original line 4",
- "original line 5"}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 2, 2, { 'original line 4', 'original line 5' }, false }
+ )
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 5, 7, {}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 5, 7, {}, false })
end)
it('when you manually add/remove folds', function()
@@ -617,13 +649,14 @@ describe('API: buffer events:', function()
-- delete the inner fold
command('normal! zR3Gzd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 1, 4, {'original line 2',
- 'original line 3',
- 'original line 4'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 1, 4, { 'original line 2', 'original line 3', 'original line 4' }, false }
+ )
-- delete the outer fold
command('normal! zd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 6, origlines, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 6, origlines, false })
-- discard changes and put the folds back
tick = reopenwithfolds(b)
@@ -631,7 +664,7 @@ describe('API: buffer events:', function()
-- remove both folds at once
command('normal! ggzczD')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 6, origlines, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 6, origlines, false })
-- discard changes and put the folds back
tick = reopenwithfolds(b)
@@ -639,101 +672,102 @@ describe('API: buffer events:', function()
-- now delete all folds at once
command('normal! zE')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 6, origlines, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 6, origlines, false })
-- create a fold from line 4 to the end of the file
command('normal! 4GA/*{{{*/')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 4, {'original line 4/*{{{*/'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 3, 4, { 'original line 4/*{{{*/' }, false })
-- delete the fold which only has one marker
command('normal! Gzd')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 3, 6, {'original line 4',
- 'original line 5',
- 'original line 6'}, false})
+ expectn(
+ 'nvim_buf_lines_event',
+ { b, tick, 3, 6, { 'original line 4', 'original line 5', 'original line 6' }, false }
+ )
end)
it('detaches if the buffer is closed', function()
- local b, tick = editoriginal(true, {'AAA'})
+ local b, tick = editoriginal(true, { 'AAA' })
local channel = nvim('get_api_info')[1]
-- Test that buffer events are working.
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
command('undo')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AAA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AAA' }, false })
tick = tick + 1
- expectn('nvim_buf_changedtick_event', {b, tick})
+ expectn('nvim_buf_changedtick_event', { b, tick })
-- close our buffer and create a new one
command('bdelete')
command('enew')
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
-- Reopen the original buffer, make sure there are no buffer events sent.
command('b1')
command('normal! x')
- eval('rpcnotify('..channel..', "Hello There")')
+ eval('rpcnotify(' .. channel .. ', "Hello There")')
expectn('Hello There', {})
end)
it(':edit! (reload) causes detach #9642', function()
- local b, tick = editoriginal(true, {'AAA', 'BBB'})
+ local b, tick = editoriginal(true, { 'AAA', 'BBB' })
command('set undoreload=1')
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
command('edit!')
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
end)
it(':enew! does not detach hidden buffer', function()
- local b, tick = editoriginal(true, {'AAA', 'BBB'})
+ local b, tick = editoriginal(true, { 'AAA', 'BBB' })
local channel = nvim('get_api_info')[1]
command('set undoreload=1 hidden')
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
command('enew!')
- eval('rpcnotify('..channel..', "Hello There")')
+ eval('rpcnotify(' .. channel .. ', "Hello There")')
expectn('Hello There', {})
end)
it('stays attached if the buffer is hidden', function()
- local b, tick = editoriginal(true, {'AAA'})
+ local b, tick = editoriginal(true, { 'AAA' })
local channel = nvim('get_api_info')[1]
-- Test that buffer events are working.
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
command('undo')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AAA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AAA' }, false })
tick = tick + 1
- expectn('nvim_buf_changedtick_event', {b, tick})
+ expectn('nvim_buf_changedtick_event', { b, tick })
-- Close our buffer by creating a new one.
command('set hidden')
command('enew')
-- Assert that no nvim_buf_detach_event is sent.
- eval('rpcnotify('..channel..', "Hello There")')
+ eval('rpcnotify(' .. channel .. ', "Hello There")')
expectn('Hello There', {})
-- Reopen the original buffer, assert that buffer events are still active.
command('b1')
command('normal! x')
tick = tick + 1
- expectn('nvim_buf_lines_event', {b, tick, 0, 1, {'AA'}, false})
+ expectn('nvim_buf_lines_event', { b, tick, 0, 1, { 'AA' }, false })
end)
it('detaches if the buffer is unloaded/deleted/wiped', function()
@@ -741,15 +775,15 @@ describe('API: buffer events:', function()
clear()
-- need to make a new window with a buffer because :bunload doesn't let you
-- unload the last buffer
- for _, cmd in ipairs({'bunload', 'bdelete', 'bwipeout'}) do
+ for _, cmd in ipairs({ 'bunload', 'bdelete', 'bwipeout' }) do
command('new')
-- open a brand spanking new file
- local b = open(true, {'AAA'})
+ local b = open(true, { 'AAA' })
-- call :bunload or whatever the command is, and then check that we
-- receive a nvim_buf_detach_event
command(cmd)
- expectn('nvim_buf_detach_event', {b})
+ expectn('nvim_buf_detach_event', { b })
end
end)
@@ -757,13 +791,13 @@ describe('API: buffer events:', function()
clear()
local b, tick = editoriginal(false)
ok(buffer('attach', b, false, {}))
- expectn('nvim_buf_changedtick_event', {b, tick})
+ 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(buffer, 'attach', b, false, {builtin="asfd"}))
+ eq("Invalid key: 'builtin'", pcall_err(buffer, 'attach', b, false, { builtin = 'asfd' }))
end)
it('nvim_buf_attach returns response after delay #8634', function()
@@ -773,11 +807,13 @@ describe('API: buffer events:', function()
eq(true, helpers.request('nvim_buf_attach', 0, false, {}))
-- notification
eq({
- [1] = 'notification',
- [2] = 'nvim_buf_changedtick_event',
- [3] = {
- [1] = { id = 1 },
- [2] = 2 }, }, next_msg())
+ [1] = 'notification',
+ [2] = 'nvim_buf_changedtick_event',
+ [3] = {
+ [1] = { id = 1 },
+ [2] = 2,
+ },
+ }, next_msg())
end)
end)
@@ -787,7 +823,7 @@ describe('API: buffer events:', function()
end)
local function lines_subset(first, second)
- for i = 1,#first do
+ for i = 1, #first do
-- need to ignore trailing spaces
if first[i]:gsub(' +$', '') ~= second[i]:gsub(' +$', '') then
return false
@@ -803,7 +839,7 @@ describe('API: buffer events:', function()
local function assert_match_somewhere(expected_lines, buffer_lines)
local msg = next_msg()
- while(msg ~= nil) do
+ while msg ~= nil do
local event = msg[2]
if event == 'nvim_buf_lines_event' then
local args = msg[3]
@@ -814,7 +850,7 @@ describe('API: buffer events:', function()
-- with the test setup. Note updates are contiguous.
assert(#newlines <= 23)
- for i = 1,#newlines do
+ for i = 1, #newlines do
buffer_lines[starts + i] = newlines[i]
end
-- we don't compare the msg area of the embedded nvim, it's too flakey
@@ -834,38 +870,34 @@ describe('API: buffer events:', function()
local buffer_lines = {}
local expected_lines = {}
funcs.termopen({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '-n', '-c', 'set shortmess+=A' }, {
- env = { VIMRUNTIME = os.getenv('VIMRUNTIME') }
+ env = { VIMRUNTIME = os.getenv('VIMRUNTIME') },
})
local b = nvim('get_current_buf')
ok(buffer('attach', b, true, {}))
- for _ = 1,22 do
- table.insert(expected_lines,'~')
+ for _ = 1, 22 do
+ table.insert(expected_lines, '~')
end
expected_lines[1] = ''
- expected_lines[22] = ('tmp_terminal_nvim'..(' '):rep(45)
- ..'0,0-1 All')
+ expected_lines[22] = ('tmp_terminal_nvim' .. (' '):rep(45) .. '0,0-1 All')
sendkeys('i:e tmp_terminal_nvim<Enter>')
assert_match_somewhere(expected_lines, buffer_lines)
expected_lines[1] = 'Blarg'
- expected_lines[22] = ('tmp_terminal_nvim [+]'..(' '):rep(41)
- ..'1,6 All')
+ expected_lines[22] = ('tmp_terminal_nvim [+]' .. (' '):rep(41) .. '1,6 All')
sendkeys('iBlarg')
assert_match_somewhere(expected_lines, buffer_lines)
- for i = 1,21 do
+ for i = 1, 21 do
expected_lines[i] = 'xyz'
end
- expected_lines[22] = ('tmp_terminal_nvim [+]'..(' '):rep(41)
- ..'31,4 Bot')
+ expected_lines[22] = ('tmp_terminal_nvim [+]' .. (' '):rep(41) .. '31,4 Bot')
local s = string.rep('\nxyz', 30)
sendkeys(s)
assert_match_somewhere(expected_lines, buffer_lines)
end)
-
end)
diff --git a/test/functional/api/command_spec.lua b/test/functional/api/command_spec.lua
index 1ddb289ded..e286181bce 100644
--- a/test/functional/api/command_spec.lua
+++ b/test/functional/api/command_spec.lua
@@ -16,61 +16,164 @@ local feed = helpers.feed
local funcs = helpers.funcs
describe('nvim_get_commands', function()
- local cmd_dict = { addr=NIL, bang=false, bar=false, complete=NIL, complete_arg=NIL, count=NIL, definition='echo "Hello World"', name='Hello', nargs='1', preview=false, range=NIL, register=false, keepscript=false, script_id=0, }
- local cmd_dict2 = { addr=NIL, bang=false, bar=false, complete=NIL, complete_arg=NIL, count=NIL, definition='pwd', name='Pwd', nargs='?', preview=false, range=NIL, register=false, keepscript=false, script_id=0, }
+ local cmd_dict = {
+ addr = NIL,
+ bang = false,
+ bar = false,
+ complete = NIL,
+ complete_arg = NIL,
+ count = NIL,
+ definition = 'echo "Hello World"',
+ name = 'Hello',
+ nargs = '1',
+ preview = false,
+ range = NIL,
+ register = false,
+ keepscript = false,
+ script_id = 0,
+ }
+ local cmd_dict2 = {
+ addr = NIL,
+ bang = false,
+ bar = false,
+ complete = NIL,
+ complete_arg = NIL,
+ count = NIL,
+ definition = 'pwd',
+ name = 'Pwd',
+ nargs = '?',
+ preview = false,
+ range = NIL,
+ register = false,
+ keepscript = false,
+ script_id = 0,
+ }
before_each(clear)
it('gets empty list if no commands were defined', function()
- eq({}, meths.get_commands({builtin=false}))
+ eq({}, meths.get_commands({ builtin = false }))
end)
it('validation', function()
- eq('builtin=true not implemented', pcall_err(meths.get_commands,
- {builtin=true}))
- eq("Invalid key: 'foo'", pcall_err(meths.get_commands,
- {foo='blah'}))
+ eq('builtin=true not implemented', pcall_err(meths.get_commands, { builtin = true }))
+ eq("Invalid key: 'foo'", pcall_err(meths.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.get_commands({builtin=false}))
+ eq({ Hello = cmd_dict }, meths.get_commands({ builtin = false }))
-- Define another command.
- command('command -nargs=? Pwd pwd');
- eq({Hello=cmd_dict, Pwd=cmd_dict2}, meths.get_commands({builtin=false}))
+ command('command -nargs=? Pwd pwd')
+ eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, meths.get_commands({ builtin = false }))
-- Delete a command.
command('delcommand Pwd')
- eq({Hello=cmd_dict}, meths.get_commands({builtin=false}))
+ eq({ Hello = cmd_dict }, meths.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}, curbufmeths.get_commands({builtin=false}))
+ eq({ Hello = cmd_dict }, curbufmeths.get_commands({ builtin = false }))
-- Define another buffer-local command.
command('command -buffer -nargs=? Pwd pwd')
- eq({Hello=cmd_dict, Pwd=cmd_dict2}, curbufmeths.get_commands({builtin=false}))
+ eq({ Hello = cmd_dict, Pwd = cmd_dict2 }, curbufmeths.get_commands({ builtin = false }))
-- Delete a command.
command('delcommand Pwd')
- eq({Hello=cmd_dict}, curbufmeths.get_commands({builtin=false}))
+ eq({ Hello = cmd_dict }, curbufmeths.get_commands({ builtin = false }))
-- {builtin=true} always returns empty for buffer-local case.
- eq({}, curbufmeths.get_commands({builtin=true}))
+ eq({}, curbufmeths.get_commands({ builtin = true }))
end)
it('gets various command attributes', function()
- local cmd0 = { addr='arguments', bang=false, bar=false, complete='dir', complete_arg=NIL, count='10', definition='pwd <args>', name='TestCmd', nargs='1', preview=false, range='10', register=false, keepscript=false, script_id=0, }
- local cmd1 = { addr=NIL, bang=false, bar=false, complete='custom', complete_arg='ListUsers', count=NIL, definition='!finger <args>', name='Finger', nargs='+', preview=false, range=NIL, register=false, keepscript=false, script_id=1, }
- local cmd2 = { addr=NIL, bang=true, bar=false, complete=NIL, complete_arg=NIL, count=NIL, definition='call \128\253R2_foo(<q-args>)', name='Cmd2', nargs='*', preview=false, range=NIL, register=false, keepscript=false, script_id=2, }
- local cmd3 = { addr=NIL, bang=false, bar=true, complete=NIL, complete_arg=NIL, count=NIL, definition='call \128\253R3_ohyeah()', name='Cmd3', nargs='0', preview=false, range=NIL, register=false, keepscript=false, script_id=3, }
- local cmd4 = { addr=NIL, bang=false, bar=false, complete=NIL, complete_arg=NIL, count=NIL, definition='call \128\253R4_just_great()', name='Cmd4', nargs='0', preview=false, range=NIL, register=true, keepscript=false, script_id=4, }
+ local cmd0 = {
+ addr = 'arguments',
+ bang = false,
+ bar = false,
+ complete = 'dir',
+ complete_arg = NIL,
+ count = '10',
+ definition = 'pwd <args>',
+ name = 'TestCmd',
+ nargs = '1',
+ preview = false,
+ range = '10',
+ register = false,
+ keepscript = false,
+ script_id = 0,
+ }
+ local cmd1 = {
+ addr = NIL,
+ bang = false,
+ bar = false,
+ complete = 'custom',
+ complete_arg = 'ListUsers',
+ count = NIL,
+ definition = '!finger <args>',
+ name = 'Finger',
+ nargs = '+',
+ preview = false,
+ range = NIL,
+ register = false,
+ keepscript = false,
+ script_id = 1,
+ }
+ local cmd2 = {
+ addr = NIL,
+ bang = true,
+ bar = false,
+ complete = NIL,
+ complete_arg = NIL,
+ count = NIL,
+ definition = 'call \128\253R2_foo(<q-args>)',
+ name = 'Cmd2',
+ nargs = '*',
+ preview = false,
+ range = NIL,
+ register = false,
+ keepscript = false,
+ script_id = 2,
+ }
+ local cmd3 = {
+ addr = NIL,
+ bang = false,
+ bar = true,
+ complete = NIL,
+ complete_arg = NIL,
+ count = NIL,
+ definition = 'call \128\253R3_ohyeah()',
+ name = 'Cmd3',
+ nargs = '0',
+ preview = false,
+ range = NIL,
+ register = false,
+ keepscript = false,
+ script_id = 3,
+ }
+ local cmd4 = {
+ addr = NIL,
+ bang = false,
+ bar = false,
+ complete = NIL,
+ complete_arg = NIL,
+ count = NIL,
+ definition = 'call \128\253R4_just_great()',
+ name = 'Cmd4',
+ nargs = '0',
+ preview = false,
+ range = NIL,
+ register = true,
+ keepscript = false,
+ script_id = 4,
+ }
source([[
let s:foo = 1
command -complete=custom,ListUsers -nargs=+ Finger !finger <args>
]])
- eq({Finger=cmd1}, meths.get_commands({builtin=false}))
+ eq({ Finger = cmd1 }, meths.get_commands({ builtin = false }))
command('command -nargs=1 -complete=dir -addr=arguments -count=10 TestCmd pwd <args>')
- eq({Finger=cmd1, TestCmd=cmd0}, meths.get_commands({builtin=false}))
+ eq({ Finger = cmd1, TestCmd = cmd0 }, meths.get_commands({ builtin = false }))
source([[
function! s:foo() abort
@@ -88,7 +191,10 @@ describe('nvim_get_commands', function()
command -register Cmd4 call <SID>just_great()
]])
-- TODO(justinmk): Order is stable but undefined. Sort before return?
- eq({Cmd2=cmd2, Cmd3=cmd3, Cmd4=cmd4, Finger=cmd1, TestCmd=cmd0}, meths.get_commands({builtin=false}))
+ eq(
+ { Cmd2 = cmd2, Cmd3 = cmd3, Cmd4 = cmd4, Finger = cmd1, TestCmd = cmd0 },
+ meths.get_commands({ builtin = false })
+ )
end)
end)
@@ -96,7 +202,7 @@ describe('nvim_create_user_command', function()
before_each(clear)
it('works with strings', function()
- meths.create_user_command('SomeCommand', 'let g:command_fired = <args>', {nargs = 1})
+ meths.create_user_command('SomeCommand', 'let g:command_fired = <args>', { nargs = 1 })
meths.command('SomeCommand 42')
eq(42, meths.eval('g:command_fired'))
end)
@@ -113,227 +219,245 @@ describe('nvim_create_user_command', function()
})
]]
- eq({
- name = "CommandWithLuaCallback",
- args = [[this\ is a\ test]],
- fargs = {"this ", "is", "a test"},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = [[this\ is a\ test]],
+ fargs = { 'this ', 'is', 'a test' },
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [=[
+ exec_lua [=[
vim.api.nvim_command([[CommandWithLuaCallback this\ is a\ test]])
return result
- ]=])
-
- eq({
- name = "CommandWithLuaCallback",
- args = [[this includes\ a backslash: \\]],
- fargs = {"this", "includes a", "backslash:", "\\"},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ ]=]
+ )
+
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = [[this includes\ a backslash: \\]],
+ fargs = { 'this', 'includes a', 'backslash:', '\\' },
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [=[
+ exec_lua [=[
vim.api.nvim_command([[CommandWithLuaCallback this includes\ a backslash: \\]])
return result
- ]=])
-
- eq({
- name = "CommandWithLuaCallback",
- args = "a\\b",
- fargs = {"a\\b"},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ ]=]
+ )
+
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = 'a\\b',
+ fargs = { 'a\\b' },
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [=[
+ exec_lua [=[
vim.api.nvim_command('CommandWithLuaCallback a\\b')
return result
- ]=])
-
- eq({
- name = "CommandWithLuaCallback",
- args = 'h\tey ',
- fargs = {[[h]], [[ey]]},
- bang = true,
- line1 = 10,
- line2 = 10,
- mods = "confirm unsilent botright horizontal",
- smods = {
- browse = false,
- confirm = true,
- emsg_silent = false,
- hide = false,
- horizontal = true,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "botright",
- tab = -1,
- unsilent = true,
- verbose = -1,
- vertical = false,
+ ]=]
+ )
+
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = 'h\tey ',
+ fargs = { [[h]], [[ey]] },
+ bang = true,
+ line1 = 10,
+ line2 = 10,
+ mods = 'confirm unsilent botright horizontal',
+ smods = {
+ browse = false,
+ confirm = true,
+ emsg_silent = false,
+ hide = false,
+ horizontal = true,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = 'botright',
+ tab = -1,
+ unsilent = true,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 1,
+ count = 10,
+ reg = '',
},
- range = 1,
- count = 10,
- reg = "",
- }, exec_lua [=[
+ exec_lua [=[
vim.api.nvim_command('unsilent horizontal botright confirm 10CommandWithLuaCallback! h\tey ')
return result
- ]=])
-
- eq({
- name = "CommandWithLuaCallback",
- args = "h",
- fargs = {"h"},
- bang = false,
- line1 = 1,
- line2 = 42,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ ]=]
+ )
+
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = 'h',
+ fargs = { 'h' },
+ bang = false,
+ line1 = 1,
+ line2 = 42,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 1,
+ count = 42,
+ reg = '',
},
- range = 1,
- count = 42,
- reg = "",
- }, exec_lua [[
+ exec_lua [[
vim.api.nvim_command('CommandWithLuaCallback 42 h')
return result
- ]])
-
- eq({
- name = "CommandWithLuaCallback",
- args = "",
- fargs = {}, -- fargs works without args
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ ]]
+ )
+
+ eq(
+ {
+ name = 'CommandWithLuaCallback',
+ args = '',
+ fargs = {}, -- fargs works without args
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [[
+ exec_lua [[
vim.api.nvim_command('CommandWithLuaCallback')
return result
- ]])
+ ]]
+ )
-- f-args doesn't split when command nargs is 1 or "?"
exec_lua [[
@@ -347,80 +471,86 @@ describe('nvim_create_user_command', function()
})
]]
- eq({
- name = "CommandWithOneOrNoArg",
- args = "hello I'm one argument",
- fargs = {"hello I'm one argument"}, -- Doesn't split args
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ eq(
+ {
+ name = 'CommandWithOneOrNoArg',
+ args = "hello I'm one argument",
+ fargs = { "hello I'm one argument" }, -- Doesn't split args
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [[
+ exec_lua [[
vim.api.nvim_command('CommandWithOneOrNoArg hello I\'m one argument')
return result
- ]])
+ ]]
+ )
-- f-args is an empty table if no args were passed
- eq({
- name = "CommandWithOneOrNoArg",
- args = "",
- fargs = {},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ eq(
+ {
+ name = 'CommandWithOneOrNoArg',
+ args = '',
+ fargs = {},
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [[
+ exec_lua [[
vim.api.nvim_command('CommandWithOneOrNoArg')
return result
- ]])
+ ]]
+ )
-- f-args is an empty table when the command nargs=0
exec_lua [[
@@ -434,88 +564,93 @@ describe('nvim_create_user_command', function()
register = true,
})
]]
- eq({
- name = "CommandWithNoArgs",
- args = "",
- fargs = {},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ eq(
+ {
+ name = 'CommandWithNoArgs',
+ args = '',
+ fargs = {},
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '',
},
- range = 0,
- count = 2,
- reg = "",
- }, exec_lua [[
+ exec_lua [[
vim.cmd('CommandWithNoArgs')
return result
- ]])
+ ]]
+ )
-- register can be specified
- eq({
- name = "CommandWithNoArgs",
- args = "",
- fargs = {},
- bang = false,
- line1 = 1,
- line2 = 1,
- mods = "",
- smods = {
- browse = false,
- confirm = false,
- emsg_silent = false,
- hide = false,
- horizontal = false,
- keepalt = false,
- keepjumps = false,
- keepmarks = false,
- keeppatterns = false,
- lockmarks = false,
- noautocmd = false,
- noswapfile = false,
- sandbox = false,
- silent = false,
- split = "",
- tab = -1,
- unsilent = false,
- verbose = -1,
- vertical = false,
+ eq(
+ {
+ name = 'CommandWithNoArgs',
+ args = '',
+ fargs = {},
+ bang = false,
+ line1 = 1,
+ line2 = 1,
+ mods = '',
+ smods = {
+ browse = false,
+ confirm = false,
+ emsg_silent = false,
+ hide = false,
+ horizontal = false,
+ keepalt = false,
+ keepjumps = false,
+ keepmarks = false,
+ keeppatterns = false,
+ lockmarks = false,
+ noautocmd = false,
+ noswapfile = false,
+ sandbox = false,
+ silent = false,
+ split = '',
+ tab = -1,
+ unsilent = false,
+ verbose = -1,
+ vertical = false,
+ },
+ range = 0,
+ count = 2,
+ reg = '+',
},
- range = 0,
- count = 2,
- reg = "+",
- }, exec_lua [[
+ exec_lua [[
vim.cmd('CommandWithNoArgs +')
return result
- ]])
-
+ ]]
+ )
end)
it('can define buffer-local commands', function()
local bufnr = meths.create_buf(false, false)
- bufmeths.create_user_command(bufnr, "Hello", "", {})
- matches("Not an editor command: Hello", pcall_err(meths.command, "Hello"))
+ bufmeths.create_user_command(bufnr, 'Hello', '', {})
+ matches('Not an editor command: Hello', pcall_err(meths.command, 'Hello'))
meths.set_current_buf(bufnr)
- meths.command("Hello")
+ meths.command('Hello')
assert_alive()
end)
@@ -543,33 +678,63 @@ describe('nvim_create_user_command', function()
end)
it('does not allow invalid command names', function()
- eq("Invalid command name (must start with uppercase): 'test'", pcall_err(exec_lua, [[
+ eq(
+ "Invalid command name (must start with uppercase): 'test'",
+ pcall_err(
+ exec_lua,
+ [[
vim.api.nvim_create_user_command('test', 'echo "hi"', {})
- ]]))
- eq("Invalid command name: 't@'", pcall_err(exec_lua, [[
+ ]]
+ )
+ )
+ eq(
+ "Invalid command name: 't@'",
+ pcall_err(
+ exec_lua,
+ [[
vim.api.nvim_create_user_command('t@', 'echo "hi"', {})
- ]]))
- eq("Invalid command name: 'T@st'", pcall_err(exec_lua, [[
+ ]]
+ )
+ )
+ eq(
+ "Invalid command name: 'T@st'",
+ pcall_err(
+ exec_lua,
+ [[
vim.api.nvim_create_user_command('T@st', 'echo "hi"', {})
- ]]))
- eq("Invalid command name: 'Test!'", pcall_err(exec_lua, [[
+ ]]
+ )
+ )
+ eq(
+ "Invalid command name: 'Test!'",
+ pcall_err(
+ exec_lua,
+ [[
vim.api.nvim_create_user_command('Test!', 'echo "hi"', {})
- ]]))
- eq("Invalid command name: '💩'", pcall_err(exec_lua, [[
+ ]]
+ )
+ )
+ eq(
+ "Invalid command name: '💩'",
+ pcall_err(
+ exec_lua,
+ [[
vim.api.nvim_create_user_command('💩', 'echo "hi"', {})
- ]]))
+ ]]
+ )
+ )
end)
it('smods can be used with nvim_cmd', function()
- exec_lua[[
+ exec_lua [[
vim.api.nvim_create_user_command('MyEcho', function(opts)
vim.api.nvim_cmd({ cmd = 'echo', args = { '&verbose' }, mods = opts.smods }, {})
end, {})
]]
- eq("3", meths.cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true }))
+ eq('3', meths.cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true }))
eq(1, #meths.list_tabpages())
- exec_lua[[
+ exec_lua [[
vim.api.nvim_create_user_command('MySplit', function(opts)
vim.api.nvim_cmd({ cmd = 'split', mods = opts.smods }, {})
end, {})
@@ -599,13 +764,13 @@ describe('nvim_del_user_command', function()
meths.create_user_command('Hello', 'echo "Hi"', {})
meths.command('Hello')
meths.del_user_command('Hello')
- matches("Not an editor command: Hello", pcall_err(meths.command, "Hello"))
+ matches('Not an editor command: Hello', pcall_err(meths.command, 'Hello'))
end)
it('can delete buffer-local commands', function()
bufmeths.create_user_command(0, 'Hello', 'echo "Hi"', {})
meths.command('Hello')
bufmeths.del_user_command(0, 'Hello')
- matches("Not an editor command: Hello", pcall_err(meths.command, "Hello"))
+ matches('Not an editor command: Hello', pcall_err(meths.command, 'Hello'))
end)
end)
diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua
index 56383986f3..0594f36d0e 100644
--- a/test/functional/api/extmark_spec.lua
+++ b/test/functional/api/extmark_spec.lua
@@ -45,13 +45,13 @@ end
local function check_undo_redo(ns, mark, sr, sc, er, ec) --s = start, e = end
local rv = get_extmark_by_id(ns, mark)
- eq({er, ec}, rv)
- feed("u")
+ eq({ er, ec }, rv)
+ feed('u')
rv = get_extmark_by_id(ns, mark)
- eq({sr, sc}, rv)
- feed("<c-r>")
+ eq({ sr, sc }, rv)
+ feed('<c-r>')
rv = get_extmark_by_id(ns, mark)
- eq({er, ec}, rv)
+ eq({ er, ec }, rv)
end
local function batch_set(ns_id, positions)
@@ -64,20 +64,20 @@ end
local function batch_check(ns_id, ids, positions)
local actual, expected = {}, {}
- for i,id in ipairs(ids) do
+ for i, id in ipairs(ids) do
expected[id] = positions[i]
end
for _, mark in pairs(get_extmarks(ns_id, 0, -1, {})) do
- actual[mark[1]] = {mark[2], mark[3]}
+ actual[mark[1]] = { mark[2], mark[3] }
end
eq(expected, actual)
end
local function batch_check_undo_redo(ns_id, ids, before, after)
batch_check(ns_id, ids, after)
- feed("u")
+ feed('u')
batch_check(ns_id, ids, before)
- feed("<c-r>")
+ feed('<c-r>')
batch_check(ns_id, ids, after)
end
@@ -88,49 +88,78 @@ describe('API/extmarks', function()
before_each(function()
-- Initialize some namespaces and insert 12345 into a buffer
- marks = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
- positions = {{0, 0,}, {0, 2}, {0, 3}}
+ marks = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
+ positions = { { 0, 0 }, { 0, 2 }, { 0, 3 } }
- init_text = "12345"
+ init_text = '12345'
row = 0
col = 2
clear()
insert(init_text)
- ns = request('nvim_create_namespace', "my-fancy-plugin")
- ns2 = request('nvim_create_namespace', "my-fancy-plugin2")
+ ns = request('nvim_create_namespace', 'my-fancy-plugin')
+ ns2 = request('nvim_create_namespace', 'my-fancy-plugin2')
end)
it('validation', function()
- eq("Invalid 'end_col': expected Integer, got Array", pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = {}, end_row = 1 }))
- eq("Invalid 'end_row': expected Integer, got Array", pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = 1, end_row = {} }))
- eq("Invalid 'virt_text_pos': expected String, got Integer", pcall_err(set_extmark, ns, marks[2], 0, 0, { virt_text_pos = 0 }))
- eq("Invalid 'virt_text_pos': 'foo'", pcall_err(set_extmark, ns, marks[2], 0, 0, { virt_text_pos = 'foo' }))
- eq("Invalid 'hl_mode': expected String, got Integer", pcall_err(set_extmark, ns, marks[2], 0, 0, { hl_mode = 0 }))
+ eq(
+ "Invalid 'end_col': expected Integer, got Array",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = {}, end_row = 1 })
+ )
+ eq(
+ "Invalid 'end_row': expected Integer, got Array",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = 1, end_row = {} })
+ )
+ eq(
+ "Invalid 'virt_text_pos': expected String, got Integer",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { virt_text_pos = 0 })
+ )
+ eq(
+ "Invalid 'virt_text_pos': 'foo'",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { virt_text_pos = 'foo' })
+ )
+ eq(
+ "Invalid 'hl_mode': expected String, got Integer",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { hl_mode = 0 })
+ )
eq("Invalid 'hl_mode': 'foo'", pcall_err(set_extmark, ns, marks[2], 0, 0, { hl_mode = 'foo' }))
- eq("Invalid 'id': expected Integer, got Array", pcall_err(set_extmark, ns, {}, 0, 0, { end_col = 1, end_row = 1 }))
- eq("Invalid mark position: expected 2 Integer items", pcall_err(get_extmarks, ns, {}, {-1, -1}))
- eq("Invalid mark position: expected mark id Integer or 2-item Array", pcall_err(get_extmarks, ns, true, {-1, -1}))
+ eq(
+ "Invalid 'id': expected Integer, got Array",
+ pcall_err(set_extmark, ns, {}, 0, 0, { end_col = 1, end_row = 1 })
+ )
+ eq(
+ 'Invalid mark position: expected 2 Integer items',
+ pcall_err(get_extmarks, ns, {}, { -1, -1 })
+ )
+ eq(
+ 'Invalid mark position: expected mark id Integer or 2-item Array',
+ pcall_err(get_extmarks, ns, true, { -1, -1 })
+ )
-- No memory leak with virt_text, virt_lines, sign_text
- eq("right_gravity is not a boolean", pcall_err(set_extmark, ns, marks[2], 0, 0, {
- virt_text = {{'foo', 'Normal'}},
- virt_lines = {{{'bar', 'Normal'}}},
- sign_text = 'a',
- right_gravity = 'baz',
- }))
+ eq(
+ 'right_gravity is not a boolean',
+ pcall_err(set_extmark, ns, marks[2], 0, 0, {
+ virt_text = { { 'foo', 'Normal' } },
+ virt_lines = { { { 'bar', 'Normal' } } },
+ sign_text = 'a',
+ right_gravity = 'baz',
+ })
+ )
end)
- it("can end extranges past final newline using end_col = 0", function()
+ it('can end extranges past final newline using end_col = 0', function()
set_extmark(ns, marks[1], 0, 0, {
end_col = 0,
- end_row = 1
+ end_row = 1,
})
- eq("Invalid 'end_col': out of range",
- pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = 1, end_row = 1 }))
+ eq(
+ "Invalid 'end_col': out of range",
+ pcall_err(set_extmark, ns, marks[2], 0, 0, { end_col = 1, end_row = 1 })
+ )
end)
- it("can end extranges past final newline when strict mode is false", function()
+ it('can end extranges past final newline when strict mode is false', function()
set_extmark(ns, marks[1], 0, 0, {
end_col = 1,
end_row = 1,
@@ -138,7 +167,7 @@ describe('API/extmarks', function()
})
end)
- it("can end extranges past final column when strict mode is false", function()
+ it('can end extranges past final column when strict mode is false', function()
set_extmark(ns, marks[1], 0, 0, {
end_col = 6,
end_row = 0,
@@ -150,7 +179,7 @@ describe('API/extmarks', function()
local rv = set_extmark(ns, marks[1], positions[1][1], positions[1][2])
eq(marks[1], rv)
rv = get_extmark_by_id(ns, marks[1])
- eq({positions[1][1], positions[1][2]}, rv)
+ eq({ positions[1][1], positions[1][2] }, rv)
-- Test adding a second mark on same row works
rv = set_extmark(ns, marks[2], positions[2][1], positions[2][2])
eq(marks[2], rv)
@@ -159,14 +188,14 @@ describe('API/extmarks', function()
rv = set_extmark(ns, marks[1], positions[1][1], positions[1][2])
eq(marks[1], rv)
rv = get_extmark_by_id(ns, marks[2])
- eq({positions[2][1], positions[2][2]}, rv)
+ eq({ positions[2][1], positions[2][2] }, rv)
-- Test an update, (new pos)
row = positions[1][1]
col = positions[1][2] + 1
rv = set_extmark(ns, marks[1], row, col)
eq(marks[1], rv)
rv = get_extmark_by_id(ns, marks[1])
- eq({row, col}, rv)
+ eq({ row, col }, rv)
-- remove the test marks
eq(true, curbufmeths.del_extmark(ns, marks[1]))
@@ -182,14 +211,14 @@ describe('API/extmarks', function()
-- force a new undo buffer
feed('o<esc>')
curbufmeths.clear_namespace(ns2, 0, -1)
- eq({{1, 0, 1}}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({ { 1, 0, 1 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
feed('u')
- eq({{1, 0, 1}}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({ { 1, 0, 1 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
feed('<c-r>')
- eq({{1, 0, 1}}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({ { 1, 0, 1 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
end)
it('can clear a namespace range using 0,-1', function()
@@ -198,30 +227,30 @@ describe('API/extmarks', function()
-- force a new undo buffer
feed('o<esc>')
curbufmeths.clear_namespace(-1, 0, -1)
- eq({}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({}, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
feed('u')
- eq({}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({}, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
feed('<c-r>')
- eq({}, get_extmarks(ns, {0, 0}, {-1, -1}))
- eq({}, get_extmarks(ns2, {0, 0}, {-1, -1}))
+ eq({}, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
+ eq({}, get_extmarks(ns2, { 0, 0 }, { -1, -1 }))
end)
it('can undo with extmarks (#25147)', function()
feed('itest<esc>')
set_extmark(ns, 1, 0, 0)
set_extmark(ns, 2, 1, 0)
- eq({ { 1, 0, 0 }, { 2, 1, 0 } }, get_extmarks(ns, {0, 0}, {-1, -1}))
+ 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}))
+ eq({ { 1, 1, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
curbufmeths.clear_namespace(ns, 0, -1)
- eq({}, get_extmarks(ns, {0, 0}, {-1, -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}))
+ 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}))
+ eq({ { 1, 0, 0 }, { 2, 1, 0 } }, get_extmarks(ns, { 0, 0 }, { -1, -1 }))
curbufmeths.clear_namespace(ns, 0, -1)
end)
@@ -237,112 +266,114 @@ describe('API/extmarks', function()
end
-- {0, 0} and {-1, -1} work as extreme values
- eq({{1, 0, 0}}, get_extmarks(ns, {0, 0}, {0, 0}))
- eq({}, get_extmarks(ns, {-1, -1}, {-1, -1}))
- local rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ eq({ { 1, 0, 0 } }, get_extmarks(ns, { 0, 0 }, { 0, 0 }))
+ eq({}, get_extmarks(ns, { -1, -1 }, { -1, -1 }))
+ local rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
for i, m in ipairs(marks) do
if positions[i] ~= nil then
- eq({m, positions[i][1], positions[i][2]}, rv[i])
+ eq({ m, positions[i][1], positions[i][2] }, rv[i])
end
end
-- 0 and -1 works as short hand extreme values
- eq({{1, 0, 0}}, get_extmarks(ns, 0, 0))
+ eq({ { 1, 0, 0 } }, get_extmarks(ns, 0, 0))
eq({}, get_extmarks(ns, -1, -1))
rv = get_extmarks(ns, 0, -1)
for i, m in ipairs(marks) do
if positions[i] ~= nil then
- eq({m, positions[i][1], positions[i][2]}, rv[i])
+ eq({ m, positions[i][1], positions[i][2] }, rv[i])
end
end
-- next with mark id
- rv = get_extmarks(ns, marks[1], {-1, -1}, {limit=1})
- eq({{marks[1], positions[1][1], positions[1][2]}}, rv)
- rv = get_extmarks(ns, marks[2], {-1, -1}, {limit=1})
- eq({{marks[2], positions[2][1], positions[2][2]}}, rv)
+ rv = get_extmarks(ns, marks[1], { -1, -1 }, { limit = 1 })
+ eq({ { marks[1], positions[1][1], positions[1][2] } }, rv)
+ rv = get_extmarks(ns, marks[2], { -1, -1 }, { limit = 1 })
+ eq({ { marks[2], positions[2][1], positions[2][2] } }, rv)
-- next with positional when mark exists at position
- rv = get_extmarks(ns, positions[1], {-1, -1}, {limit=1})
- eq({{marks[1], positions[1][1], positions[1][2]}}, rv)
+ rv = get_extmarks(ns, positions[1], { -1, -1 }, { limit = 1 })
+ eq({ { marks[1], positions[1][1], positions[1][2] } }, rv)
-- next with positional index (no mark at position)
- rv = get_extmarks(ns, {positions[1][1], positions[1][2] +1}, {-1, -1}, {limit=1})
- eq({{marks[2], positions[2][1], positions[2][2]}}, rv)
+ rv = get_extmarks(ns, { positions[1][1], positions[1][2] + 1 }, { -1, -1 }, { limit = 1 })
+ eq({ { marks[2], positions[2][1], positions[2][2] } }, rv)
-- next with Extremity index
- rv = get_extmarks(ns, {0,0}, {-1, -1}, {limit=1})
- eq({{marks[1], positions[1][1], positions[1][2]}}, rv)
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 1 })
+ eq({ { marks[1], positions[1][1], positions[1][2] } }, rv)
-- nextrange with mark id
rv = get_extmarks(ns, marks[1], marks[3])
- eq({marks[1], positions[1][1], positions[1][2]}, rv[1])
- eq({marks[2], positions[2][1], positions[2][2]}, rv[2])
+ eq({ marks[1], positions[1][1], positions[1][2] }, rv[1])
+ eq({ marks[2], positions[2][1], positions[2][2] }, rv[2])
-- nextrange with `limit`
- rv = get_extmarks(ns, marks[1], marks[3], {limit=2})
+ rv = get_extmarks(ns, marks[1], marks[3], { limit = 2 })
eq(2, #rv)
-- nextrange with positional when mark exists at position
rv = get_extmarks(ns, positions[1], positions[3])
- eq({marks[1], positions[1][1], positions[1][2]}, rv[1])
- eq({marks[2], positions[2][1], positions[2][2]}, rv[2])
+ eq({ marks[1], positions[1][1], positions[1][2] }, rv[1])
+ eq({ marks[2], positions[2][1], positions[2][2] }, rv[2])
rv = get_extmarks(ns, positions[2], positions[3])
eq(2, #rv)
-- nextrange with positional index (no mark at position)
- local lower = {positions[1][1], positions[2][2] -1}
- local upper = {positions[2][1], positions[3][2] - 1}
+ local lower = { positions[1][1], positions[2][2] - 1 }
+ local upper = { positions[2][1], positions[3][2] - 1 }
rv = get_extmarks(ns, lower, upper)
- eq({{marks[2], positions[2][1], positions[2][2]}}, rv)
- lower = {positions[3][1], positions[3][2] + 1}
- upper = {positions[3][1], positions[3][2] + 2}
+ eq({ { marks[2], positions[2][1], positions[2][2] } }, rv)
+ lower = { positions[3][1], positions[3][2] + 1 }
+ upper = { positions[3][1], positions[3][2] + 2 }
rv = get_extmarks(ns, lower, upper)
eq({}, rv)
-- nextrange with extremity index
- lower = {positions[2][1], positions[2][2]+1}
- upper = {-1, -1}
+ lower = { positions[2][1], positions[2][2] + 1 }
+ upper = { -1, -1 }
rv = get_extmarks(ns, lower, upper)
- eq({{marks[3], positions[3][1], positions[3][2]}}, rv)
+ eq({ { marks[3], positions[3][1], positions[3][2] } }, rv)
-- prev with mark id
- rv = get_extmarks(ns, marks[3], {0, 0}, {limit=1})
- eq({{marks[3], positions[3][1], positions[3][2]}}, rv)
- rv = get_extmarks(ns, marks[2], {0, 0}, {limit=1})
- eq({{marks[2], positions[2][1], positions[2][2]}}, rv)
+ rv = get_extmarks(ns, marks[3], { 0, 0 }, { limit = 1 })
+ eq({ { marks[3], positions[3][1], positions[3][2] } }, rv)
+ rv = get_extmarks(ns, marks[2], { 0, 0 }, { limit = 1 })
+ eq({ { marks[2], positions[2][1], positions[2][2] } }, rv)
-- prev with positional when mark exists at position
- rv = get_extmarks(ns, positions[3], {0, 0}, {limit=1})
- eq({{marks[3], positions[3][1], positions[3][2]}}, rv)
+ rv = get_extmarks(ns, positions[3], { 0, 0 }, { limit = 1 })
+ eq({ { marks[3], positions[3][1], positions[3][2] } }, rv)
-- prev with positional index (no mark at position)
- rv = get_extmarks(ns, {positions[1][1], positions[1][2] +1}, {0, 0}, {limit=1})
- eq({{marks[1], positions[1][1], positions[1][2]}}, rv)
+ rv = get_extmarks(ns, { positions[1][1], positions[1][2] + 1 }, { 0, 0 }, { limit = 1 })
+ eq({ { marks[1], positions[1][1], positions[1][2] } }, rv)
-- prev with Extremity index
- rv = get_extmarks(ns, {-1,-1}, {0,0}, {limit=1})
- eq({{marks[3], positions[3][1], positions[3][2]}}, rv)
+ rv = get_extmarks(ns, { -1, -1 }, { 0, 0 }, { limit = 1 })
+ eq({ { marks[3], positions[3][1], positions[3][2] } }, rv)
-- prevrange with mark id
rv = get_extmarks(ns, marks[3], marks[1])
- eq({marks[3], positions[3][1], positions[3][2]}, rv[1])
- eq({marks[2], positions[2][1], positions[2][2]}, rv[2])
- eq({marks[1], positions[1][1], positions[1][2]}, rv[3])
+ eq({ marks[3], positions[3][1], positions[3][2] }, rv[1])
+ eq({ marks[2], positions[2][1], positions[2][2] }, rv[2])
+ eq({ marks[1], positions[1][1], positions[1][2] }, rv[3])
-- prevrange with limit
- rv = get_extmarks(ns, marks[3], marks[1], {limit=2})
+ rv = get_extmarks(ns, marks[3], marks[1], { limit = 2 })
eq(2, #rv)
-- prevrange with positional when mark exists at position
rv = get_extmarks(ns, positions[3], positions[1])
- eq({{marks[3], positions[3][1], positions[3][2]},
- {marks[2], positions[2][1], positions[2][2]},
- {marks[1], positions[1][1], positions[1][2]}}, rv)
+ eq({
+ { marks[3], positions[3][1], positions[3][2] },
+ { marks[2], positions[2][1], positions[2][2] },
+ { marks[1], positions[1][1], positions[1][2] },
+ }, rv)
rv = get_extmarks(ns, positions[2], positions[1])
eq(2, #rv)
-- prevrange with positional index (no mark at position)
- lower = {positions[2][1], positions[2][2] + 1}
- upper = {positions[3][1], positions[3][2] + 1}
+ lower = { positions[2][1], positions[2][2] + 1 }
+ upper = { positions[3][1], positions[3][2] + 1 }
rv = get_extmarks(ns, upper, lower)
- eq({{marks[3], positions[3][1], positions[3][2]}}, rv)
- lower = {positions[3][1], positions[3][2] + 1}
- upper = {positions[3][1], positions[3][2] + 2}
+ eq({ { marks[3], positions[3][1], positions[3][2] } }, rv)
+ lower = { positions[3][1], positions[3][2] + 1 }
+ upper = { positions[3][1], positions[3][2] + 2 }
rv = get_extmarks(ns, upper, lower)
eq({}, rv)
-- prevrange with extremity index
- lower = {0,0}
- upper = {positions[2][1], positions[2][2] - 1}
+ lower = { 0, 0 }
+ upper = { positions[2][1], positions[2][2] - 1 }
rv = get_extmarks(ns, upper, lower)
- eq({{marks[1], positions[1][1], positions[1][2]}}, rv)
+ eq({ { marks[1], positions[1][1], positions[1][2] } }, rv)
end)
it('querying for information with limit', function()
@@ -354,34 +385,34 @@ describe('API/extmarks', function()
end
end
- local rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=1})
+ local rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 1 })
eq(1, #rv)
- rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=2})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 2 })
eq(2, #rv)
- rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=3})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 3 })
eq(3, #rv)
-- now in reverse
- rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=1})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 1 })
eq(1, #rv)
- rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=2})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 2 })
eq(2, #rv)
- rv = get_extmarks(ns, {0, 0}, {-1, -1}, {limit=3})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 }, { limit = 3 })
eq(3, #rv)
end)
it('get_marks works when mark col > upper col', function()
feed('A<cr>12345<esc>')
feed('A<cr>12345<esc>')
- set_extmark(ns, 10, 0, 2) -- this shouldn't be found
- set_extmark(ns, 11, 2, 1) -- this shouldn't be found
+ set_extmark(ns, 10, 0, 2) -- this shouldn't be found
+ set_extmark(ns, 11, 2, 1) -- this shouldn't be found
set_extmark(ns, marks[1], 0, 4) -- check col > our upper bound
set_extmark(ns, marks[2], 1, 1) -- check col < lower bound
set_extmark(ns, marks[3], 2, 0) -- check is inclusive
- eq({{marks[1], 0, 4},
- {marks[2], 1, 1},
- {marks[3], 2, 0}},
- get_extmarks(ns, {0, 3}, {2, 0}))
+ eq(
+ { { marks[1], 0, 4 }, { marks[2], 1, 1 }, { marks[3], 2, 0 } },
+ get_extmarks(ns, { 0, 3 }, { 2, 0 })
+ )
end)
it('get_marks works in reverse when mark col < lower col', function()
@@ -392,28 +423,24 @@ describe('API/extmarks', function()
set_extmark(ns, marks[1], 2, 1) -- check col < our lower bound
set_extmark(ns, marks[2], 1, 4) -- check col > upper bound
set_extmark(ns, marks[3], 0, 2) -- check is inclusive
- local rv = get_extmarks(ns, {2, 3}, {0, 2})
- eq({{marks[1], 2, 1},
- {marks[2], 1, 4},
- {marks[3], 0, 2}},
- rv)
+ local rv = get_extmarks(ns, { 2, 3 }, { 0, 2 })
+ eq({ { marks[1], 2, 1 }, { marks[2], 1, 4 }, { marks[3], 0, 2 } }, rv)
end)
it('get_marks limit=0 returns nothing', function()
set_extmark(ns, marks[1], positions[1][1], positions[1][2])
- local rv = get_extmarks(ns, {-1, -1}, {-1, -1}, {limit=0})
+ local rv = get_extmarks(ns, { -1, -1 }, { -1, -1 }, { limit = 0 })
eq({}, rv)
end)
-
it('marks move with line insertations', function()
set_extmark(ns, marks[1], 0, 0)
- feed("yyP")
+ feed('yyP')
check_undo_redo(ns, marks[1], 0, 0, 1, 0)
end)
it('marks move with multiline insertations', function()
- feed("a<cr>22<cr>33<esc>")
+ feed('a<cr>22<cr>33<esc>')
set_extmark(ns, marks[1], 1, 1)
feed('ggVGyP')
check_undo_redo(ns, marks[1], 1, 1, 4, 1)
@@ -421,7 +448,7 @@ describe('API/extmarks', function()
it('marks move with line join', function()
-- do_join in ops.c
- feed("a<cr>222<esc>")
+ feed('a<cr>222<esc>')
set_extmark(ns, marks[1], 1, 0)
feed('ggJ')
check_undo_redo(ns, marks[1], 1, 0, 0, 6)
@@ -430,7 +457,7 @@ describe('API/extmarks', function()
it('join works when no marks are present', function()
screen = Screen.new(15, 10)
screen:attach()
- feed("a<cr>1<esc>")
+ feed('a<cr>1<esc>')
feed('kJ')
-- This shouldn't seg fault
screen:expect([[
@@ -442,21 +469,21 @@ describe('API/extmarks', function()
it('marks move with multiline join', function()
-- do_join in ops.c
- feed("a<cr>222<cr>333<cr>444<esc>")
+ feed('a<cr>222<cr>333<cr>444<esc>')
set_extmark(ns, marks[1], 3, 0)
feed('2GVGJ')
check_undo_redo(ns, marks[1], 3, 0, 1, 8)
end)
it('marks move with line deletes', function()
- feed("a<cr>222<cr>333<cr>444<esc>")
+ feed('a<cr>222<cr>333<cr>444<esc>')
set_extmark(ns, marks[1], 2, 1)
feed('ggjdd')
check_undo_redo(ns, marks[1], 2, 1, 1, 1)
end)
it('marks move with multiline deletes', function()
- feed("a<cr>222<cr>333<cr>444<esc>")
+ feed('a<cr>222<cr>333<cr>444<esc>')
set_extmark(ns, marks[1], 3, 0)
feed('gg2dd')
check_undo_redo(ns, marks[1], 3, 0, 1, 0)
@@ -468,7 +495,7 @@ describe('API/extmarks', function()
it('marks move with open line', function()
-- open_line in change.c
-- testing marks below are also moved
- feed("yyP")
+ feed('yyP')
set_extmark(ns, marks[1], 0, 4)
set_extmark(ns, marks[2], 1, 4)
feed('1G<s-o><esc>')
@@ -492,7 +519,7 @@ describe('API/extmarks', function()
|
]])
local rv = get_extmark_by_id(ns, marks[1])
- eq({0, 6}, rv)
+ eq({ 0, 6 }, rv)
check_undo_redo(ns, marks[1], 0, 3, 0, 6)
end)
@@ -501,12 +528,12 @@ describe('API/extmarks', function()
-- insertchar in edit.c (the ins_str branch)
set_extmark(ns, marks[1], 0, 2)
feed('03l')
- insert("X")
+ insert('X')
check_undo_redo(ns, marks[1], 0, 2, 0, 2)
-- check multibyte chars
feed('03l<esc>')
- insert("~~")
+ insert('~~')
check_undo_redo(ns, marks[1], 0, 2, 0, 2)
end)
@@ -530,7 +557,7 @@ describe('API/extmarks', function()
it('marks move with line splits (using enter)', function()
-- open_line in change.c
-- testing marks below are also moved
- feed("yyP")
+ feed('yyP')
set_extmark(ns, marks[1], 0, 4)
set_extmark(ns, marks[2], 1, 4)
feed('1Gla<cr><esc>')
@@ -547,16 +574,16 @@ describe('API/extmarks', function()
it('yet again marks move with line splits', function()
-- the first test above wasn't catching all errors..
- feed("A67890<esc>")
+ feed('A67890<esc>')
set_extmark(ns, marks[1], 0, 4)
- feed("04li<cr><esc>")
+ feed('04li<cr><esc>')
check_undo_redo(ns, marks[1], 0, 4, 1, 0)
end)
it('and one last time line splits...', function()
set_extmark(ns, marks[1], 0, 1)
set_extmark(ns, marks[2], 0, 2)
- feed("02li<cr><esc>")
+ feed('02li<cr><esc>')
check_undo_redo(ns, marks[1], 0, 1, 0, 1)
check_undo_redo(ns, marks[2], 0, 2, 1, 0)
end)
@@ -564,7 +591,7 @@ describe('API/extmarks', function()
it('multiple marks move with mark splits', function()
set_extmark(ns, marks[1], 0, 1)
set_extmark(ns, marks[2], 0, 3)
- feed("0li<cr><esc>")
+ feed('0li<cr><esc>')
check_undo_redo(ns, marks[1], 0, 1, 1, 0)
check_undo_redo(ns, marks[2], 0, 3, 1, 2)
end)
@@ -656,11 +683,11 @@ describe('API/extmarks', function()
feed('0vx<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 2)
- feed("u")
+ feed('u')
feed('0vlx<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 1)
- feed("u")
+ feed('u')
feed('0v2lx<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 0)
@@ -675,16 +702,16 @@ describe('API/extmarks', function()
feed('0x<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 2)
- feed("u")
+ feed('u')
feed('02x<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 1)
- feed("u")
+ feed('u')
feed('0v3lx<esc>')
check_undo_redo(ns, marks[1], 0, 3, 0, 0)
-- from the other side (nothing should happen)
- feed("u")
+ feed('u')
feed('$vx')
check_undo_redo(ns, marks[1], 0, 3, 0, 3)
end)
@@ -742,27 +769,44 @@ describe('API/extmarks', function()
it('delete', function()
local pos1 = {
- {2, 4}, {2, 12}, {2, 13}, {2, 14}, {2, 25},
- {4, 8}, {4, 10}, {4, 20},
- {5, 3}, {6, 10}
+ { 2, 4 },
+ { 2, 12 },
+ { 2, 13 },
+ { 2, 14 },
+ { 2, 25 },
+ { 4, 8 },
+ { 4, 10 },
+ { 4, 20 },
+ { 5, 3 },
+ { 6, 10 },
}
local ids = batch_set(ns, pos1)
batch_check(ns, ids, pos1)
feed('3Gfiv2+ftd')
batch_check_undo_redo(ns, ids, pos1, {
- {2, 4}, {2, 12}, {2, 13}, {2, 13}, {2, 13},
- {2, 13}, {2, 15}, {2, 25},
- {3, 3}, {4, 10}
+ { 2, 4 },
+ { 2, 12 },
+ { 2, 13 },
+ { 2, 13 },
+ { 2, 13 },
+ { 2, 13 },
+ { 2, 15 },
+ { 2, 25 },
+ { 3, 3 },
+ { 4, 10 },
})
end)
it('can get overlapping extmarks', function()
- set_extmark(ns, 1, 0, 0, {end_row = 5, end_col=0})
- set_extmark(ns, 2, 2, 5, {end_row = 2, end_col=30})
- set_extmark(ns, 3, 0, 5, {end_row = 2, end_col=10})
- set_extmark(ns, 4, 0, 0, {end_row = 1, end_col=0})
- eq({{ 2, 2, 5 }}, get_extmarks(ns, {2, 0}, {2, -1}, { overlap=false }))
- eq({{ 1, 0, 0 }, { 3, 0, 5}, {2, 2, 5}}, get_extmarks(ns, {2, 0}, {2, -1}, { overlap=true }))
+ set_extmark(ns, 1, 0, 0, { end_row = 5, end_col = 0 })
+ set_extmark(ns, 2, 2, 5, { end_row = 2, end_col = 30 })
+ set_extmark(ns, 3, 0, 5, { end_row = 2, end_col = 10 })
+ set_extmark(ns, 4, 0, 0, { end_row = 1, end_col = 0 })
+ eq({ { 2, 2, 5 } }, get_extmarks(ns, { 2, 0 }, { 2, -1 }, { overlap = false }))
+ eq(
+ { { 1, 0, 0 }, { 3, 0, 5 }, { 2, 2, 5 } },
+ get_extmarks(ns, { 2, 0 }, { 2, -1 }, { overlap = true })
+ )
end)
end)
@@ -862,33 +906,40 @@ describe('API/extmarks', function()
set_extmark(ns, marks[2], 0, -1)
set_extmark(ns, marks[3], 0, -1)
- feed("u")
- local rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ feed('u')
+ local rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
eq(3, #rv)
- feed("<c-r>")
- rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ feed('<c-r>')
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
eq(3, #rv)
-- Test updates
feed('o<esc>')
set_extmark(ns, marks[1], positions[1][1], positions[1][2])
- rv = get_extmarks(ns, marks[1], marks[1], {limit=1})
+ rv = get_extmarks(ns, marks[1], marks[1], { limit = 1 })
eq(1, #rv)
- feed("u")
- feed("<c-r>")
+ feed('u')
+ feed('<c-r>')
-- old value is NOT kept in history
- check_undo_redo(ns, marks[1], positions[1][1], positions[1][2], positions[1][1], positions[1][2])
+ check_undo_redo(
+ ns,
+ marks[1],
+ positions[1][1],
+ positions[1][2],
+ positions[1][1],
+ positions[1][2]
+ )
-- Test unset
feed('o<esc>')
curbufmeths.del_extmark(ns, marks[3])
- feed("u")
- rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ feed('u')
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
-- undo does NOT restore deleted marks
eq(2, #rv)
- feed("<c-r>")
- rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ feed('<c-r>')
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
eq(2, #rv)
end)
@@ -905,9 +956,9 @@ describe('API/extmarks', function()
eq(1, rv)
rv = set_extmark(ns2, marks[1], positions[1][1], positions[1][2])
eq(1, rv)
- rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
eq(1, #rv)
- rv = get_extmarks(ns2, {0, 0}, {-1, -1})
+ rv = get_extmarks(ns2, { 0, 0 }, { -1, -1 })
eq(1, #rv)
-- Set more marks for testing the ranges
@@ -917,14 +968,14 @@ describe('API/extmarks', function()
set_extmark(ns2, marks[3], positions[3][1], positions[3][2])
-- get_next (limit set)
- rv = get_extmarks(ns, {0, 0}, positions[2], {limit=1})
+ rv = get_extmarks(ns, { 0, 0 }, positions[2], { limit = 1 })
eq(1, #rv)
- rv = get_extmarks(ns2, {0, 0}, positions[2], {limit=1})
+ rv = get_extmarks(ns2, { 0, 0 }, positions[2], { limit = 1 })
eq(1, #rv)
-- get_prev (limit set)
- rv = get_extmarks(ns, positions[1], {0, 0}, {limit=1})
+ rv = get_extmarks(ns, positions[1], { 0, 0 }, { limit = 1 })
eq(1, #rv)
- rv = get_extmarks(ns2, positions[1], {0, 0}, {limit=1})
+ rv = get_extmarks(ns2, positions[1], { 0, 0 }, { limit = 1 })
eq(1, #rv)
-- get_next (no limit)
@@ -939,10 +990,10 @@ describe('API/extmarks', function()
eq(2, #rv)
curbufmeths.del_extmark(ns, marks[1])
- rv = get_extmarks(ns, {0, 0}, {-1, -1})
+ rv = get_extmarks(ns, { 0, 0 }, { -1, -1 })
eq(2, #rv)
curbufmeths.del_extmark(ns2, marks[1])
- rv = get_extmarks(ns2, {0, 0}, {-1, -1})
+ rv = get_extmarks(ns2, { 0, 0 }, { -1, -1 })
eq(2, #rv)
end)
@@ -966,16 +1017,16 @@ describe('API/extmarks', function()
feed(':set cindent<cr><esc>')
feed(':set autoindent<cr><esc>')
feed(':set shiftwidth=2<cr><esc>')
- feed("0iint <esc>A {1M1<esc>b<esc>")
+ feed('0iint <esc>A {1M1<esc>b<esc>')
-- Set the mark on the M, should move..
set_extmark(ns, marks[1], 0, 12)
-- Set the mark before the cursor, should stay there
set_extmark(ns, marks[2], 0, 10)
- feed("i<cr><esc>")
+ feed('i<cr><esc>')
local rv = get_extmark_by_id(ns, marks[1])
- eq({1, 3}, rv)
+ eq({ 1, 3 }, rv)
rv = get_extmark_by_id(ns, marks[2])
- eq({0, 10}, rv)
+ eq({ 0, 10 }, rv)
check_undo_redo(ns, marks[1], 0, 12, 1, 3)
end)
@@ -984,39 +1035,39 @@ describe('API/extmarks', function()
feed(':set autoindent<cr><esc>')
feed(':set shiftwidth=2<cr><esc>')
-- <c-f> will force an indent of 2
- feed("0iint <esc>A {<cr><esc>0i1M1<esc>")
+ feed('0iint <esc>A {<cr><esc>0i1M1<esc>')
set_extmark(ns, marks[1], 1, 1)
- feed("0i<c-f><esc>")
+ feed('0i<c-f><esc>')
local rv = get_extmark_by_id(ns, marks[1])
- eq({1, 3}, rv)
+ eq({ 1, 3 }, rv)
check_undo_redo(ns, marks[1], 1, 1, 1, 3)
-- now check when cursor at eol
- feed("uA<c-f><esc>")
+ feed('uA<c-f><esc>')
rv = get_extmark_by_id(ns, marks[1])
- eq({1, 3}, rv)
+ eq({ 1, 3 }, rv)
end)
it('removing auto indenting with <C-D> works', function()
feed(':set cindent<cr><esc>')
feed(':set autoindent<cr><esc>')
feed(':set shiftwidth=2<cr><esc>')
- feed("0i<tab><esc>")
+ feed('0i<tab><esc>')
set_extmark(ns, marks[1], 0, 3)
- feed("bi<c-d><esc>")
+ feed('bi<c-d><esc>')
local rv = get_extmark_by_id(ns, marks[1])
- eq({0, 1}, rv)
+ eq({ 0, 1 }, rv)
check_undo_redo(ns, marks[1], 0, 3, 0, 1)
-- check when cursor at eol
- feed("uA<c-d><esc>")
+ feed('uA<c-d><esc>')
rv = get_extmark_by_id(ns, marks[1])
- eq({0, 1}, rv)
+ eq({ 0, 1 }, rv)
end)
it('indenting multiple lines with = works', function()
feed(':set cindent<cr><esc>')
feed(':set autoindent<cr><esc>')
feed(':set shiftwidth=2<cr><esc>')
- feed("0iint <esc>A {<cr><bs>1M1<cr><bs>2M2<esc>")
+ feed('0iint <esc>A {<cr><bs>1M1<cr><bs>2M2<esc>')
set_extmark(ns, marks[1], 1, 1)
set_extmark(ns, marks[2], 2, 1)
feed('=gg')
@@ -1138,7 +1189,7 @@ describe('API/extmarks', function()
check_undo_redo(ns, marks[5], 2, 0, 3, 0)
feed('u')
feed([[:1,2s:3:\rxx<cr>]])
- eq({1, 3}, get_extmark_by_id(ns, marks[3]))
+ eq({ 1, 3 }, get_extmark_by_id(ns, marks[3]))
end)
it('substitutes over multiple lines with replace in substitution', function()
@@ -1374,7 +1425,10 @@ describe('API/extmarks', function()
it('throws consistent error codes', function()
local ns_invalid = ns2 + 1
- eq("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(set_extmark, ns_invalid, marks[1], positions[1][1], positions[1][2])
+ )
eq("Invalid 'ns_id': 3", pcall_err(curbufmeths.del_extmark, 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]))
@@ -1383,11 +1437,11 @@ describe('API/extmarks', function()
it('when col = line-length, set the mark on eol', function()
set_extmark(ns, marks[1], 0, -1)
local rv = get_extmark_by_id(ns, marks[1])
- eq({0, init_text:len()}, rv)
+ eq({ 0, init_text:len() }, rv)
-- Test another
set_extmark(ns, marks[1], 0, -1)
rv = get_extmark_by_id(ns, marks[1])
- eq({0, init_text:len()}, rv)
+ eq({ 0, init_text:len() }, rv)
end)
it('when col = line-length, set the mark on eol', function()
@@ -1398,7 +1452,10 @@ describe('API/extmarks', function()
it('fails when line > line_count', function()
local invalid_col = init_text:len() + 1
local invalid_lnum = 3
- eq("Invalid 'line': out of range", pcall_err(set_extmark, ns, marks[1], invalid_lnum, invalid_col))
+ eq(
+ "Invalid 'line': out of range",
+ pcall_err(set_extmark, ns, marks[1], invalid_lnum, invalid_col)
+ )
eq({}, get_extmark_by_id(ns, marks[1]))
end)
@@ -1414,17 +1471,17 @@ describe('API/extmarks', function()
end)
it('in read-only buffer', function()
- command("view! runtime/doc/help.txt")
+ command('view! runtime/doc/help.txt')
eq(true, meths.get_option_value('ro', {}))
local id = set_extmark(ns, 0, 0, 2)
- eq({{id, 0, 2}}, get_extmarks(ns,0, -1))
+ eq({ { id, 0, 2 } }, get_extmarks(ns, 0, -1))
end)
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, {"", ""})
+ request('nvim_buf_set_lines', buf, 0, -1, 1, { '', '' })
local id = bufmeths.set_extmark(buf, ns, 1, 0, {})
- eq({{id, 1, 0}}, bufmeths.get_extmarks(buf, ns, 0, -1, {}))
+ eq({ { id, 1, 0 } }, bufmeths.get_extmarks(buf, ns, 0, -1, {}))
end)
it('does not crash with append/delete/undo sequence', function()
@@ -1440,49 +1497,51 @@ 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.
- curbufmeths.set_extmark(ns, 0, 5, {right_gravity = false})
- curbufmeths.set_extmark(ns, 0, 5, {right_gravity = true})
+ curbufmeths.set_extmark(ns, 0, 5, { right_gravity = false })
+ curbufmeths.set_extmark(ns, 0, 5, { right_gravity = true })
feed([[Aasdfasdf]])
- eq({ {1, 0, 5}, {2, 0, 13} },
- curbufmeths.get_extmarks(ns, 0, -1, {}))
+ eq({ { 1, 0, 5 }, { 2, 0, 13 } }, curbufmeths.get_extmarks(ns, 0, -1, {}))
-- but both move when text is inserted before
feed([[<esc>Iasdf<esc>]])
-- eq({}, curbufmeths.get_lines(0, -1, true))
- eq({ {1, 0, 9}, {2, 0, 17} },
- curbufmeths.get_extmarks(ns, 0, -1, {}))
+ eq({ { 1, 0, 9 }, { 2, 0, 17 } }, curbufmeths.get_extmarks(ns, 0, -1, {}))
-- clear text
curbufmeths.set_text(0, 0, 0, 17, {})
-- handles set_text correctly as well
- eq({ {1, 0, 0}, {2, 0, 0} },
- meths.buf_get_extmarks(0, ns, 0, -1, {}))
- curbufmeths.set_text(0, 0, 0, 0, {'asdfasdf'})
- eq({ {1, 0, 0}, {2, 0, 8} },
- curbufmeths.get_extmarks(ns, 0, -1, {}))
+ eq({ { 1, 0, 0 }, { 2, 0, 0 } }, meths.buf_get_extmarks(0, ns, 0, -1, {}))
+ curbufmeths.set_text(0, 0, 0, 0, { 'asdfasdf' })
+ eq({ { 1, 0, 0 }, { 2, 0, 8 } }, curbufmeths.get_extmarks(ns, 0, -1, {}))
feed('u')
-- handles pasting
exec([[let @a='asdfasdf']])
feed([["ap]])
- eq({ {1, 0, 0}, {2, 0, 8} },
- meths.buf_get_extmarks(0, ns, 0, -1, {}))
+ eq({ { 1, 0, 0 }, { 2, 0, 8 } }, meths.buf_get_extmarks(0, ns, 0, -1, {}))
end)
it('can accept "end_row" or "end_line" #16548', function()
set_extmark(ns, marks[1], 0, 0, {
end_col = 0,
- end_line = 1
+ end_line = 1,
})
- eq({ {1, 0, 0, {
- ns_id = 1,
- end_col = 0,
- end_row = 1,
- right_gravity = true,
- end_right_gravity = false,
- }} }, get_extmarks(ns, 0, -1, {details=true}))
+ eq({
+ {
+ 1,
+ 0,
+ 0,
+ {
+ ns_id = 1,
+ end_col = 0,
+ end_row = 1,
+ right_gravity = true,
+ end_right_gravity = false,
+ },
+ },
+ }, get_extmarks(ns, 0, -1, { details = true }))
end)
it('in prompt buffer', function()
@@ -1490,129 +1549,149 @@ describe('API/extmarks', function()
local id = set_extmark(ns, marks[1], 0, 0, {})
meths.set_option_value('buftype', 'prompt', {})
feed('i<esc>')
- eq({{id, 0, 2}}, get_extmarks(ns, 0, -1))
+ eq({ { id, 0, 2 } }, get_extmarks(ns, 0, -1))
end)
it('can get details', function()
set_extmark(ns, marks[1], 0, 0, {
- conceal = "c",
- cursorline_hl_group = "Statement",
+ conceal = 'c',
+ cursorline_hl_group = 'Statement',
end_col = 0,
end_right_gravity = true,
end_row = 1,
hl_eol = true,
- hl_group = "String",
- hl_mode = "blend",
- line_hl_group = "Statement",
- number_hl_group = "Statement",
+ hl_group = 'String',
+ hl_mode = 'blend',
+ line_hl_group = 'Statement',
+ number_hl_group = 'Statement',
priority = 0,
right_gravity = false,
- sign_hl_group = "Statement",
- sign_text = ">>",
+ sign_hl_group = 'Statement',
+ sign_text = '>>',
spell = true,
virt_lines = {
- { { "lines", "Macro" }, { "???" } },
- { { "stack", { "Type", "Search" } }, { "!!!" } },
+ { { 'lines', 'Macro' }, { '???' } },
+ { { 'stack', { 'Type', 'Search' } }, { '!!!' } },
},
virt_lines_above = true,
virt_lines_leftcol = true,
- virt_text = { { "text", "Macro" }, { "???" }, { "stack", { "Type", "Search" } } },
+ virt_text = { { 'text', 'Macro' }, { '???' }, { 'stack', { 'Type', 'Search' } } },
virt_text_hide = true,
- virt_text_pos = "right_align",
+ virt_text_pos = 'right_align',
})
set_extmark(ns, marks[2], 0, 0, {
priority = 0,
- virt_text = { { "", "Macro" }, { "", { "Type", "Search" } }, { "" } },
+ virt_text = { { '', 'Macro' }, { '', { 'Type', 'Search' } }, { '' } },
virt_text_win_col = 1,
})
- eq({0, 0, {
- conceal = "c",
- cursorline_hl_group = "Statement",
- end_col = 0,
- end_right_gravity = true,
- end_row = 1,
- hl_eol = true,
- hl_group = "String",
- hl_mode = "blend",
- line_hl_group = "Statement",
- ns_id = 1,
- number_hl_group = "Statement",
- priority = 0,
- right_gravity = false,
- sign_hl_group = "Statement",
- sign_text = ">>",
- spell = true,
- virt_lines = {
- { { "lines", "Macro" }, { "???" } },
- { { "stack", { "Type", "Search" } }, { "!!!" } },
+ eq({
+ 0,
+ 0,
+ {
+ conceal = 'c',
+ cursorline_hl_group = 'Statement',
+ end_col = 0,
+ end_right_gravity = true,
+ end_row = 1,
+ hl_eol = true,
+ hl_group = 'String',
+ hl_mode = 'blend',
+ line_hl_group = 'Statement',
+ ns_id = 1,
+ number_hl_group = 'Statement',
+ priority = 0,
+ right_gravity = false,
+ sign_hl_group = 'Statement',
+ sign_text = '>>',
+ spell = true,
+ virt_lines = {
+ { { 'lines', 'Macro' }, { '???' } },
+ { { 'stack', { 'Type', 'Search' } }, { '!!!' } },
+ },
+ virt_lines_above = true,
+ virt_lines_leftcol = true,
+ virt_text = { { 'text', 'Macro' }, { '???' }, { 'stack', { 'Type', 'Search' } } },
+ virt_text_repeat_linebreak = false,
+ virt_text_hide = true,
+ virt_text_pos = 'right_align',
},
- virt_lines_above = true,
- virt_lines_leftcol = true,
- virt_text = { { "text", "Macro" }, { "???" }, { "stack", { "Type", "Search" } } },
- virt_text_repeat_linebreak = false,
- virt_text_hide = true,
- virt_text_pos = "right_align",
- } }, get_extmark_by_id(ns, marks[1], { details = true }))
- eq({0, 0, {
- ns_id = 1,
- right_gravity = true,
- priority = 0,
- virt_text = { { "", "Macro" }, { "", { "Type", "Search" } }, { "" } },
- virt_text_repeat_linebreak = false,
- virt_text_hide = false,
- virt_text_pos = "win_col",
- virt_text_win_col = 1,
- } }, get_extmark_by_id(ns, marks[2], { details = true }))
- set_extmark(ns, marks[3], 0, 0, { cursorline_hl_group = "Statement" })
- eq({0, 0, {
- ns_id = 1,
- cursorline_hl_group = "Statement",
- priority = 4096,
- right_gravity = true,
- } }, get_extmark_by_id(ns, marks[3], { details = true }))
+ }, get_extmark_by_id(ns, marks[1], { details = true }))
+ eq({
+ 0,
+ 0,
+ {
+ ns_id = 1,
+ right_gravity = true,
+ priority = 0,
+ virt_text = { { '', 'Macro' }, { '', { 'Type', 'Search' } }, { '' } },
+ virt_text_repeat_linebreak = false,
+ virt_text_hide = false,
+ virt_text_pos = 'win_col',
+ virt_text_win_col = 1,
+ },
+ }, get_extmark_by_id(ns, marks[2], { details = true }))
+ set_extmark(ns, marks[3], 0, 0, { cursorline_hl_group = 'Statement' })
+ eq({
+ 0,
+ 0,
+ {
+ ns_id = 1,
+ cursorline_hl_group = 'Statement',
+ priority = 4096,
+ right_gravity = true,
+ },
+ }, get_extmark_by_id(ns, marks[3], { details = true }))
curbufmeths.clear_namespace(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')
- eq({ {1, 0, 0, {
- cursorline_hl_group = 'CursorLine',
- invalidate = true,
- line_hl_group = 'LineNr',
- ns_id = 0,
- number_hl_group = 'Normal',
- priority = 10,
- right_gravity = true,
- sign_hl_group = 'Title',
- sign_name = 'sign1',
- sign_text = 's1',
- undo_restore = false
- } } }, get_extmarks(-1, 0, -1, { details = true }))
+ eq({
+ {
+ 1,
+ 0,
+ 0,
+ {
+ cursorline_hl_group = 'CursorLine',
+ invalidate = true,
+ line_hl_group = 'LineNr',
+ ns_id = 0,
+ number_hl_group = 'Normal',
+ priority = 10,
+ right_gravity = true,
+ sign_hl_group = 'Title',
+ sign_name = 'sign1',
+ sign_text = 's1',
+ undo_restore = false,
+ },
+ },
+ }, get_extmarks(-1, 0, -1, { details = true }))
end)
it('can get marks from anonymous namespaces', function()
- ns = request('nvim_create_namespace', "")
- ns2 = request('nvim_create_namespace', "")
+ ns = request('nvim_create_namespace', '')
+ ns2 = request('nvim_create_namespace', '')
set_extmark(ns, 1, 0, 0, {})
set_extmark(ns2, 2, 1, 0, {})
- eq({{ 1, 0, 0, { ns_id = ns, right_gravity = true }},
- { 2, 1, 0, { ns_id = ns2, right_gravity = true }}},
- get_extmarks(-1, 0, -1, { details = true }))
+ eq({
+ { 1, 0, 0, { ns_id = ns, right_gravity = true } },
+ { 2, 1, 0, { ns_id = ns2, right_gravity = true } },
+ }, get_extmarks(-1, 0, -1, { details = true }))
end)
it('can filter by extmark properties', function()
set_extmark(ns, 1, 0, 0, {})
set_extmark(ns, 2, 0, 0, { hl_group = 'Normal' })
set_extmark(ns, 3, 0, 0, { sign_text = '>>' })
- set_extmark(ns, 4, 0, 0, { virt_text = {{'text', 'Normal'}}})
- set_extmark(ns, 5, 0, 0, { virt_lines = {{{ 'line', 'Normal' }}}})
+ set_extmark(ns, 4, 0, 0, { virt_text = { { 'text', 'Normal' } } })
+ set_extmark(ns, 5, 0, 0, { virt_lines = { { { 'line', 'Normal' } } } })
eq(5, #get_extmarks(-1, 0, -1, {}))
- eq({{ 2, 0, 0 }}, get_extmarks(-1, 0, -1, { type = 'highlight' }))
- eq({{ 3, 0, 0 }}, get_extmarks(-1, 0, -1, { type = 'sign' }))
- eq({{ 4, 0, 0 }}, get_extmarks(-1, 0, -1, { type = 'virt_text' }))
- eq({{ 5, 0, 0 }}, get_extmarks(-1, 0, -1, { type = 'virt_lines' }))
+ eq({ { 2, 0, 0 } }, get_extmarks(-1, 0, -1, { type = 'highlight' }))
+ eq({ { 3, 0, 0 } }, get_extmarks(-1, 0, -1, { type = 'sign' }))
+ eq({ { 4, 0, 0 } }, get_extmarks(-1, 0, -1, { type = 'virt_text' }))
+ eq({ { 5, 0, 0 } }, get_extmarks(-1, 0, -1, { type = 'virt_lines' }))
end)
- it("invalidated marks are deleted", function()
+ it('invalidated marks are deleted', function()
screen = Screen.new(40, 6)
screen:attach()
feed('dd6iaaa bbb ccc<CR><ESC>gg')
@@ -1641,8 +1720,13 @@ describe('API/extmarks', function()
command('1d 2')
eq(0, #get_extmarks(-1, 0, -1, {}))
-- mark is not removed when deleting bytes before the range
- set_extmark(ns, 3, 0, 4, { invalidate = true, undo_restore = false,
- hl_group = 'Error', end_col = 7 })
+ set_extmark(
+ ns,
+ 3,
+ 0,
+ 4,
+ { invalidate = true, undo_restore = false, hl_group = 'Error', end_col = 7 }
+ )
feed('dw')
eq(3, get_extmark_by_id(ns, 3, { details = true })[3].end_col)
-- mark is not removed when deleting bytes at the start of the range
@@ -1650,18 +1734,23 @@ describe('API/extmarks', function()
eq(2, get_extmark_by_id(ns, 3, { details = true })[3].end_col)
-- mark is not removed when deleting bytes from the end of the range
feed('lx')
- eq(1, get_extmark_by_id(ns, 3, { details = true})[3].end_col)
+ eq(1, get_extmark_by_id(ns, 3, { details = true })[3].end_col)
-- mark is not removed when deleting bytes beyond end of the range
feed('x')
- eq(1, get_extmark_by_id(ns, 3, { details = true})[3].end_col)
+ eq(1, get_extmark_by_id(ns, 3, { details = true })[3].end_col)
-- mark is removed when all bytes in the range are deleted
feed('hx')
eq({}, get_extmark_by_id(ns, 3, {}))
-- multiline mark is not removed when start of its range is deleted
- set_extmark(ns, 4, 1, 4, { undo_restore = false, invalidate = true,
- hl_group = 'Error', end_col = 7, end_row = 3 })
+ set_extmark(
+ ns,
+ 4,
+ 1,
+ 4,
+ { undo_restore = false, invalidate = true, hl_group = 'Error', end_col = 7, end_row = 3 }
+ )
feed('ddDdd')
- eq({0, 0}, get_extmark_by_id(ns, 4, {}))
+ eq({ 0, 0 }, get_extmark_by_id(ns, 4, {}))
-- multiline mark is removed when entirety of its range is deleted
feed('vj2ed')
eq({}, get_extmark_by_id(ns, 4, {}))
@@ -1674,29 +1763,28 @@ describe('Extmarks buffer api with many marks', function()
local ns_marks = {}
before_each(function()
clear()
- ns1 = request('nvim_create_namespace', "ns1")
- ns2 = request('nvim_create_namespace', "ns2")
- ns_marks = {[ns1]={}, [ns2]={}}
+ ns1 = request('nvim_create_namespace', 'ns1')
+ ns2 = request('nvim_create_namespace', 'ns2')
+ ns_marks = { [ns1] = {}, [ns2] = {} }
local lines = {}
- for i = 1,30 do
- lines[#lines+1] = string.rep("x ",i)
+ for i = 1, 30 do
+ lines[#lines + 1] = string.rep('x ', i)
end
curbufmeths.set_lines(0, -1, true, lines)
local ns = ns1
local q = 0
- for i = 0,29 do
- for j = 0,i do
- local id = set_extmark(ns,0, i,j)
+ for i = 0, 29 do
+ for j = 0, i do
+ local id = set_extmark(ns, 0, i, j)
eq(nil, ns_marks[ns][id])
ok(id > 0)
- ns_marks[ns][id] = {i,j}
- ns = ns1+ns2-ns
+ ns_marks[ns][id] = { i, j }
+ ns = ns1 + ns2 - ns
q = q + 1
end
end
eq(233, #ns_marks[ns1])
eq(232, #ns_marks[ns2])
-
end)
local function get_marks(ns)
@@ -1704,18 +1792,18 @@ describe('Extmarks buffer api with many marks', function()
local marks = {}
for _, mark in ipairs(mark_list) do
local id, row, col = unpack(mark)
- eq(nil, marks[id], "duplicate mark")
- marks[id] = {row,col}
+ eq(nil, marks[id], 'duplicate mark')
+ marks[id] = { row, col }
end
return marks
end
- it("can get marks", function()
+ it('can get marks', function()
eq(ns_marks[ns1], get_marks(ns1))
eq(ns_marks[ns2], get_marks(ns2))
end)
- it("can clear all marks in ns", function()
+ it('can clear all marks in ns', function()
curbufmeths.clear_namespace(ns1, 0, -1)
eq({}, get_marks(ns1))
eq(ns_marks[ns2], get_marks(ns2))
@@ -1724,7 +1812,7 @@ describe('Extmarks buffer api with many marks', function()
eq({}, get_marks(ns2))
end)
- it("can clear line range", function()
+ it('can clear line range', function()
curbufmeths.clear_namespace(ns1, 10, 20)
for id, mark in pairs(ns_marks[ns1]) do
if 10 <= mark[1] and mark[1] < 20 then
@@ -1735,12 +1823,12 @@ describe('Extmarks buffer api with many marks', function()
eq(ns_marks[ns2], get_marks(ns2))
end)
- it("can delete line", function()
+ it('can delete line', function()
feed('10Gdd')
for _, marks in pairs(ns_marks) do
for id, mark in pairs(marks) do
if mark[1] == 9 then
- marks[id] = {9,0}
+ marks[id] = { 9, 0 }
elseif mark[1] >= 10 then
mark[1] = mark[1] - 1
end
@@ -1750,12 +1838,12 @@ describe('Extmarks buffer api with many marks', function()
eq(ns_marks[ns2], get_marks(ns2))
end)
- it("can delete lines", function()
+ it('can delete lines', function()
feed('10G10dd')
for _, marks in pairs(ns_marks) do
for id, mark in pairs(marks) do
if 9 <= mark[1] and mark[1] < 19 then
- marks[id] = {9,0}
+ marks[id] = { 9, 0 }
elseif mark[1] >= 19 then
mark[1] = mark[1] - 10
end
@@ -1765,7 +1853,7 @@ describe('Extmarks buffer api with many marks', function()
eq(ns_marks[ns2], get_marks(ns2))
end)
- it("can wipe buffer", function()
+ it('can wipe buffer', function()
command('bwipe!')
eq({}, get_marks(ns1))
eq({}, get_marks(ns2))
@@ -1779,17 +1867,17 @@ describe('API/win_extmark', function()
before_each(function()
-- Initialize some namespaces and insert text into a buffer
- marks = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
+ marks = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
- line1 = "non ui-watched line"
- line2 = "ui-watched line"
+ line1 = 'non ui-watched line'
+ line2 = 'ui-watched line'
clear()
insert(line1)
- feed("o<esc>")
+ feed('o<esc>')
insert(line2)
- ns = request('nvim_create_namespace', "extmark-ui")
+ ns = request('nvim_create_namespace', 'extmark-ui')
end)
it('sends and only sends ui-watched marks to ui', function()
@@ -1809,8 +1897,8 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- positioned at the end of the 2nd line
- { {id = 1000}, ns, marks[1], 1, 16 },
- }
+ { { id = 1000 }, ns, marks[1], 1, 16 },
+ },
},
})
end)
@@ -1820,10 +1908,10 @@ describe('API/win_extmark', function()
screen:attach()
feed('15A!<Esc>')
-- should send all of these
- set_extmark(ns, marks[1], 1, 0, { ui_watched = true, virt_text_pos = "overlay" })
- set_extmark(ns, marks[2], 1, 2, { ui_watched = true, virt_text_pos = "overlay" })
- set_extmark(ns, marks[3], 1, 4, { ui_watched = true, virt_text_pos = "overlay" })
- set_extmark(ns, marks[4], 1, 6, { ui_watched = true, virt_text_pos = "overlay" })
+ set_extmark(ns, marks[1], 1, 0, { ui_watched = true, virt_text_pos = 'overlay' })
+ set_extmark(ns, marks[2], 1, 2, { ui_watched = true, virt_text_pos = 'overlay' })
+ set_extmark(ns, marks[3], 1, 4, { ui_watched = true, virt_text_pos = 'overlay' })
+ set_extmark(ns, marks[4], 1, 6, { ui_watched = true, virt_text_pos = 'overlay' })
set_extmark(ns, marks[5], 1, 8, { ui_watched = true })
screen:expect({
grid = [[
@@ -1835,28 +1923,28 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- notification from 1st call
- { {id = 1000}, ns, marks[1], 1, 0 },
+ { { id = 1000 }, ns, marks[1], 1, 0 },
-- notifications from 2nd call
- { {id = 1000}, ns, marks[1], 1, 0 },
- { {id = 1000}, ns, marks[2], 1, 2 },
+ { { id = 1000 }, ns, marks[1], 1, 0 },
+ { { id = 1000 }, ns, marks[2], 1, 2 },
-- notifications from 3rd call
- { {id = 1000}, ns, marks[1], 1, 0 },
- { {id = 1000}, ns, marks[2], 1, 2 },
- { {id = 1000}, ns, marks[3], 1, 4 },
+ { { id = 1000 }, ns, marks[1], 1, 0 },
+ { { id = 1000 }, ns, marks[2], 1, 2 },
+ { { id = 1000 }, ns, marks[3], 1, 4 },
-- notifications from 4th call
- { {id = 1000}, ns, marks[1], 1, 0 },
- { {id = 1000}, ns, marks[2], 1, 2 },
- { {id = 1000}, ns, marks[3], 1, 4 },
- { {id = 1000}, ns, marks[4], 1, 6 },
+ { { id = 1000 }, ns, marks[1], 1, 0 },
+ { { id = 1000 }, ns, marks[2], 1, 2 },
+ { { id = 1000 }, ns, marks[3], 1, 4 },
+ { { id = 1000 }, ns, marks[4], 1, 6 },
-- final
-- overlay
- { {id = 1000}, ns, marks[1], 1, 0 },
- { {id = 1000}, ns, marks[2], 1, 2 },
- { {id = 1000}, ns, marks[3], 1, 4 },
- { {id = 1000}, ns, marks[4], 1, 6 },
+ { { id = 1000 }, ns, marks[1], 1, 0 },
+ { { id = 1000 }, ns, marks[2], 1, 2 },
+ { { id = 1000 }, ns, marks[3], 1, 4 },
+ { { id = 1000 }, ns, marks[4], 1, 6 },
-- eol
- { {id = 1000}, ns, marks[5], 2, 11 },
- }
+ { { id = 1000 }, ns, marks[5], 2, 11 },
+ },
},
})
end)
@@ -1869,7 +1957,7 @@ describe('API/win_extmark', function()
-- should not send this
set_extmark(ns, marks[2], 0, 0, { ui_watched = false })
-- make some changes
- insert(" update")
+ insert(' update')
screen:expect({
grid = [[
non ui-watched line |
@@ -1880,13 +1968,13 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- positioned at the end of the 2nd line
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
-- updated and wrapped to 3rd line
- { {id = 1000}, ns, marks[1], 2, 2 },
- }
- }
+ { { id = 1000 }, ns, marks[1], 2, 2 },
+ },
+ },
})
- feed("<c-e>")
+ feed('<c-e>')
screen:expect({
grid = [[
ui-watched linupdat^e|
@@ -1897,18 +1985,18 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- positioned at the end of the 2nd line
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
-- updated and wrapped to 3rd line
- { {id = 1000}, ns, marks[1], 2, 2 },
+ { { id = 1000 }, ns, marks[1], 2, 2 },
-- scrolled up one line, should be handled by grid scroll
- }
- }
+ },
+ },
})
end)
it('sends ui-watched to splits', function()
screen = Screen.new(20, 8)
- screen:attach({ext_multigrid=true})
+ screen:attach({ ext_multigrid = true })
-- should send this
set_extmark(ns, marks[1], 1, 0, { ui_watched = true })
-- should not send this
@@ -1935,18 +2023,18 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- positioned at the end of the 2nd line
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
-- updated after split
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
},
[4] = {
-- only after split
- { {id = 1001}, ns, marks[1], 1, 16 },
- }
- }
+ { { id = 1001 }, ns, marks[1], 1, 16 },
+ },
+ },
})
-- make some changes
- insert(" update")
+ insert(' update')
screen:expect({
grid = [[
## grid 1
@@ -1968,16 +2056,16 @@ describe('API/win_extmark', function()
extmarks = {
[2] = {
-- positioned at the end of the 2nd line
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
-- updated after split
- { {id = 1000}, ns, marks[1], 1, 16 },
+ { { id = 1000 }, ns, marks[1], 1, 16 },
},
[4] = {
- { {id = 1001}, ns, marks[1], 1, 16 },
+ { { id = 1001 }, ns, marks[1], 1, 16 },
-- updated
- { {id = 1001}, ns, marks[1], 2, 2 },
- }
- }
+ { { id = 1001 }, ns, marks[1], 2, 2 },
+ },
+ },
})
end)
end)
diff --git a/test/functional/api/highlight_spec.lua b/test/functional/api/highlight_spec.lua
index c9edbf825d..fe9e2a7727 100644
--- a/test/functional/api/highlight_spec.lua
+++ b/test/functional/api/highlight_spec.lua
@@ -10,7 +10,7 @@ local pcall_err = helpers.pcall_err
local ok = helpers.ok
local assert_alive = helpers.assert_alive
-describe('API: highlight',function()
+describe('API: highlight', function()
clear()
Screen.new() -- initialize Screen.colors
@@ -45,31 +45,35 @@ describe('API: highlight',function()
before_each(function()
clear()
- command("hi NewHighlight cterm=underline ctermbg=green guifg=red guibg=yellow guisp=blue gui=bold")
+ command(
+ 'hi NewHighlight cterm=underline ctermbg=green guifg=red guibg=yellow guisp=blue gui=bold'
+ )
end)
- it("nvim_get_hl_by_id", function()
+ it('nvim_get_hl_by_id', function()
local hl_id = eval("hlID('NewHighlight')")
- eq(expected_cterm, nvim("get_hl_by_id", hl_id, false))
+ eq(expected_cterm, nvim('get_hl_by_id', hl_id, false))
hl_id = eval("hlID('NewHighlight')")
-- Test valid id.
- eq(expected_rgb, nvim("get_hl_by_id", hl_id, true))
+ eq(expected_rgb, nvim('get_hl_by_id', hl_id, true))
-- Test invalid id.
eq('Invalid highlight id: 30000', pcall_err(meths.get_hl_by_id, 30000, false))
-- Test all highlight properties.
command('hi NewHighlight gui=underline,bold,italic,reverse,strikethrough,altfont,nocombine')
- eq(expected_rgb2, nvim("get_hl_by_id", hl_id, true))
+ eq(expected_rgb2, nvim('get_hl_by_id', hl_id, true))
-- Test undercurl
command('hi NewHighlight gui=undercurl')
- eq(expected_undercurl, nvim("get_hl_by_id", hl_id, true))
+ eq(expected_undercurl, 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.get_hl_by_id, { nil }, false))
+ eq(
+ 'Wrong type for argument 1 when calling nvim_get_hl_by_id, expecting Integer',
+ pcall_err(meths.get_hl_by_id, { nil }, false)
+ )
-- Test 0 argument.
eq('Invalid highlight id: 0', pcall_err(meths.get_hl_by_id, 0, false))
@@ -81,76 +85,83 @@ describe('API: highlight',function()
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.get_hl_by_id(hl_id, false))
+ eq({ foreground = 10 }, meths.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.get_hl_by_id(hl_id, false))
+ eq({ background = 13 }, meths.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.get_hl_by_id(hl_id, false))
+ eq({ foreground = 10, background = 13 }, meths.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 }
+ it('nvim_get_hl_by_name', function()
+ local expected_normal = { background = Screen.colors.Yellow, foreground = Screen.colors.Red }
-- Test `Normal` default values.
- eq({}, nvim("get_hl_by_name", 'Normal', true))
+ eq({}, nvim('get_hl_by_name', 'Normal', true))
- eq(expected_cterm, nvim("get_hl_by_name", 'NewHighlight', false))
- eq(expected_rgb, nvim("get_hl_by_name", 'NewHighlight', true))
+ eq(expected_cterm, nvim('get_hl_by_name', 'NewHighlight', false))
+ eq(expected_rgb, nvim('get_hl_by_name', 'NewHighlight', true))
-- Test `Normal` modified values.
command('hi Normal guifg=red guibg=yellow')
- eq(expected_normal, nvim("get_hl_by_name", 'Normal', true))
+ eq(expected_normal, nvim('get_hl_by_name', 'Normal', true))
-- Test invalid name.
- eq("Invalid highlight name: 'unknown_highlight'",
- pcall_err(meths.get_hl_by_name , 'unknown_highlight', false))
+ eq(
+ "Invalid highlight name: 'unknown_highlight'",
+ pcall_err(meths.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.get_hl_by_name , { nil }, false))
+ eq(
+ 'Wrong type for argument 1 when calling nvim_get_hl_by_name, expecting String',
+ pcall_err(meths.get_hl_by_name, { nil }, false)
+ )
-- Test empty string argument.
- eq('Invalid highlight name',
- pcall_err(meths.get_hl_by_name , '', false))
+ eq('Invalid highlight name', pcall_err(meths.get_hl_by_name, '', false))
-- Test "standout" attribute. #8054
- eq({ underline = true, },
- meths.get_hl_by_name('cursorline', 0));
+ eq({ underline = true }, meths.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.get_hl_by_name('cursorline', 0));
+ eq({ underline = true, standout = true }, meths.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.set_hl(0, 'Normal', {ctermfg = 17, ctermbg = 213})
- meths.set_hl(0, 'NotNormal', {ctermfg = 17, ctermbg = 213, nocombine = true})
+ meths.set_hl(0, 'Normal', { ctermfg = 17, ctermbg = 213 })
+ meths.set_hl(0, 'NotNormal', { ctermfg = 17, ctermbg = 213, nocombine = true })
-- Note colors are "cterm" values, not rgb-as-ints
- eq({foreground = 17, background = 213}, nvim("get_hl_by_name", 'Normal', false))
- eq({foreground = 17, background = 213, nocombine = true}, nvim("get_hl_by_name", 'NotNormal', false))
+ eq({ foreground = 17, background = 213 }, nvim('get_hl_by_name', 'Normal', false))
+ eq(
+ { foreground = 17, background = 213, nocombine = true },
+ 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.get_hl_by_name, "Shrubbery", true))
- eq(0, funcs.hlID("Shrubbery"))
+ eq("Invalid highlight name: 'Shrubbery'", pcall_err(meths.get_hl_by_name, 'Shrubbery', true))
+ eq(0, funcs.hlID('Shrubbery'))
- local hl_id = meths.get_hl_id_by_name("Shrubbery")
+ local hl_id = meths.get_hl_id_by_name('Shrubbery')
ok(hl_id > 0)
- eq(hl_id, funcs.hlID("Shrubbery"))
+ eq(hl_id, funcs.hlID('Shrubbery'))
command('hi Shrubbery guifg=#888888 guibg=#888888')
- eq({foreground=tonumber("0x888888"), background=tonumber("0x888888")},
- meths.get_hl_by_id(hl_id, true))
- eq({foreground=tonumber("0x888888"), background=tonumber("0x888888")},
- meths.get_hl_by_name("Shrubbery", true))
+ eq(
+ { foreground = tonumber('0x888888'), background = tonumber('0x888888') },
+ meths.get_hl_by_id(hl_id, true)
+ )
+ eq(
+ { foreground = tonumber('0x888888'), background = tonumber('0x888888') },
+ meths.get_hl_by_name('Shrubbery', true)
+ )
end)
it("nvim_buf_add_highlight to other buffer doesn't crash if undo is disabled #12873", function()
@@ -165,7 +176,7 @@ describe('API: highlight',function()
end)
end)
-describe("API: set highlight", function()
+describe('API: set highlight', function()
local highlight_color = {
fg = tonumber('0xff0000'),
bg = tonumber('0x0032aa'),
@@ -207,7 +218,7 @@ describe("API: set highlight", function()
strikethrough = true,
altfont = true,
nocombine = true,
- }
+ },
}
local highlight3_result_gui = {
background = highlight_color.bg,
@@ -238,31 +249,35 @@ describe("API: set highlight", function()
before_each(clear)
it('validation', function()
- eq("Invalid 'blend': out of range",
- pcall_err(meths.set_hl, 0, 'Test_hl3', {fg='#FF00FF', blend=999}))
- eq("Invalid 'blend': expected Integer, got Array",
- pcall_err(meths.set_hl, 0, 'Test_hl3', {fg='#FF00FF', blend={}}))
+ eq(
+ "Invalid 'blend': out of range",
+ pcall_err(meths.set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = 999 })
+ )
+ eq(
+ "Invalid 'blend': expected Integer, got Array",
+ pcall_err(meths.set_hl, 0, 'Test_hl3', { fg = '#FF00FF', blend = {} })
+ )
end)
- it("can set gui highlight", function()
+ it('can set gui highlight', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', highlight1)
eq(highlight1, meths.get_hl_by_name('Test_hl', true))
end)
- it("can set cterm highlight", function()
+ it('can set cterm highlight', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', highlight2_config)
eq(highlight2_result, meths.get_hl_by_name('Test_hl', false))
end)
- it("can set empty cterm attr", function()
+ it('can set empty cterm attr', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', { cterm = {} })
eq({}, meths.get_hl_by_name('Test_hl', false))
end)
- it("cterm attr defaults to gui attr", function()
+ it('cterm attr defaults to gui attr', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', highlight1)
eq({
@@ -271,14 +286,14 @@ describe("API: set highlight", function()
}, meths.get_hl_by_name('Test_hl', false))
end)
- it("can overwrite attr for cterm", function()
+ it('can overwrite attr for cterm', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', highlight3_config)
eq(highlight3_result_gui, meths.get_hl_by_name('Test_hl', true))
eq(highlight3_result_cterm, meths.get_hl_by_name('Test_hl', false))
end)
- it("only allows one underline attribute #22371", function()
+ it('only allows one underline attribute #22371', function()
local ns = get_ns()
meths.set_hl(ns, 'Test_hl', {
underdouble = true,
@@ -292,80 +307,76 @@ describe("API: set highlight", function()
eq({ underdotted = true }, meths.get_hl_by_name('Test_hl', true))
end)
- it("can set a highlight in the global namespace", function()
+ it('can set a highlight in the global namespace', function()
meths.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'))
+ eq(
+ 'Test_hl xxx cterm=underline,reverse ctermfg=8 ctermbg=15 gui=underline,reverse',
+ exec_capture('highlight Test_hl')
+ )
meths.set_hl(0, 'Test_hl', { background = highlight_color.bg })
- eq('Test_hl xxx guibg=#0032aa',
- exec_capture('highlight Test_hl'))
+ eq('Test_hl xxx guibg=#0032aa', exec_capture('highlight Test_hl'))
meths.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'))
+ 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')
+ )
-- Colors are stored with the name they are defined, but
-- with canonical casing
- meths.set_hl(0, 'Test_hl3', { bg = 'reD', fg = 'bLue'})
- eq('Test_hl3 xxx guifg=Blue guibg=Red',
- exec_capture('highlight Test_hl3'))
+ meths.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.set_hl(0, 'Test_hl3', { bg = 'red', fg = 'blue'})
- eq('Test_hl3 xxx guifg=Blue guibg=Red',
- exec_capture('highlight Test_hl3'))
+ it('can modify a highlight in the global namespace', function()
+ meths.set_hl(0, 'Test_hl3', { bg = 'red', fg = 'blue' })
+ eq('Test_hl3 xxx guifg=Blue guibg=Red', exec_capture('highlight Test_hl3'))
meths.set_hl(0, 'Test_hl3', { bg = 'red' })
- eq('Test_hl3 xxx guibg=Red',
- exec_capture('highlight Test_hl3'))
+ eq('Test_hl3 xxx guibg=Red', exec_capture('highlight Test_hl3'))
- meths.set_hl(0, 'Test_hl3', { ctermbg = 9, ctermfg = 12})
- eq('Test_hl3 xxx ctermfg=12 ctermbg=9',
- exec_capture('highlight Test_hl3'))
+ meths.set_hl(0, 'Test_hl3', { ctermbg = 9, ctermfg = 12 })
+ eq('Test_hl3 xxx ctermfg=12 ctermbg=9', exec_capture('highlight Test_hl3'))
- meths.set_hl(0, 'Test_hl3', { ctermbg = 'red' , ctermfg = 'blue'})
- eq('Test_hl3 xxx ctermfg=12 ctermbg=9',
- exec_capture('highlight Test_hl3'))
+ meths.set_hl(0, 'Test_hl3', { ctermbg = 'red', ctermfg = 'blue' })
+ eq('Test_hl3 xxx ctermfg=12 ctermbg=9', exec_capture('highlight Test_hl3'))
meths.set_hl(0, 'Test_hl3', { ctermbg = 9 })
- eq('Test_hl3 xxx ctermbg=9',
- exec_capture('highlight Test_hl3'))
+ eq('Test_hl3 xxx ctermbg=9', exec_capture('highlight Test_hl3'))
- eq("Invalid highlight color: 'redd'",
- pcall_err(meths.set_hl, 0, 'Test_hl3', {fg='redd'}))
+ eq("Invalid highlight color: 'redd'", pcall_err(meths.set_hl, 0, 'Test_hl3', { fg = 'redd' }))
- eq("Invalid highlight color: 'bleu'",
- pcall_err(meths.set_hl, 0, 'Test_hl3', {ctermfg='bleu'}))
+ eq(
+ "Invalid highlight color: 'bleu'",
+ pcall_err(meths.set_hl, 0, 'Test_hl3', { ctermfg = 'bleu' })
+ )
- meths.set_hl(0, 'Test_hl3', {fg='#FF00FF'})
- eq('Test_hl3 xxx guifg=#ff00ff',
- exec_capture('highlight Test_hl3'))
+ meths.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.set_hl, 0, 'Test_hl3', {ctermfg='#FF00FF'}))
+ eq(
+ "Invalid highlight color: '#FF00FF'",
+ pcall_err(meths.set_hl, 0, 'Test_hl3', { ctermfg = '#FF00FF' })
+ )
- for _, fg_val in ipairs{ nil, 'NONE', 'nOnE', '', -1 } do
- meths.set_hl(0, 'Test_hl3', {fg = fg_val})
- eq('Test_hl3 xxx cleared',
- exec_capture('highlight Test_hl3'))
+ for _, fg_val in ipairs { nil, 'NONE', 'nOnE', '', -1 } do
+ meths.set_hl(0, 'Test_hl3', { fg = fg_val })
+ eq('Test_hl3 xxx cleared', exec_capture('highlight Test_hl3'))
end
- meths.set_hl(0, 'Test_hl3', {fg='#FF00FF', blend=50})
- eq('Test_hl3 xxx guifg=#ff00ff blend=50',
- exec_capture('highlight Test_hl3'))
-
+ meths.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.set_hl(0, 'Normal', {fg='#000083', bg='#0000F3'})
- eq({foreground = 131, background = 243}, nvim("get_hl_by_name", 'Normal', true))
+ meths.set_hl(0, 'Normal', { fg = '#000083', bg = '#0000F3' })
+ eq({ foreground = 131, background = 243 }, 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.set_hl, 0, 'foo bar', {bold = true}))
+ eq("Invalid highlight name: 'foo bar'", pcall_err(meths.set_hl, 0, 'foo bar', { bold = true }))
assert_alive()
end)
end)
@@ -380,14 +391,16 @@ describe('API: get highlight', function()
local highlight1 = {
bg = highlight_color.bg,
fg = highlight_color.fg,
- bold = true, italic = true,
- cterm = {bold = true, italic = true},
+ bold = true,
+ italic = true,
+ cterm = { bold = true, italic = true },
}
local highlight2 = {
ctermbg = highlight_color.ctermbg,
ctermfg = highlight_color.ctermfg,
- underline = true, reverse = true,
- cterm = {underline = true, reverse = true},
+ underline = true,
+ reverse = true,
+ cterm = { underline = true, reverse = true },
}
local highlight3_config = {
bg = highlight_color.bg,
@@ -413,8 +426,19 @@ describe('API: get highlight', function()
fg = highlight_color.fg,
ctermbg = highlight_color.ctermbg,
ctermfg = highlight_color.ctermfg,
- bold = true, italic = true, reverse = true, underdashed = true, strikethrough = true, altfont = true,
- cterm = {italic = true, nocombine = true, reverse = true, strikethrough = true, altfont = true}
+ bold = true,
+ italic = true,
+ reverse = true,
+ underdashed = true,
+ strikethrough = true,
+ altfont = true,
+ cterm = {
+ italic = true,
+ nocombine = true,
+ reverse = true,
+ strikethrough = true,
+ altfont = true,
+ },
}
local function get_ns()
@@ -434,17 +458,16 @@ describe('API: get highlight', function()
before_each(clear)
it('validation', function()
- eq("Invalid 'name': expected String, got Integer",
- pcall_err(meths.get_hl, 0, { name = 177 }))
+ eq("Invalid 'name': expected String, got Integer", pcall_err(meths.get_hl, 0, { name = 177 }))
eq('Highlight id out of bounds', pcall_err(meths.get_hl, 0, { name = 'Test set hl' }))
end)
it('nvim_get_hl with create flag', function()
- eq({}, nvim("get_hl", 0, {name = 'Foo', create = false}))
+ eq({}, nvim('get_hl', 0, { name = 'Foo', create = false }))
eq(0, funcs.hlexists('Foo'))
- meths.get_hl(0, {name = 'Bar', create = true})
+ meths.get_hl(0, { name = 'Bar', create = true })
eq(1, funcs.hlexists('Bar'))
- meths.get_hl(0, {name = 'FooBar'})
+ meths.get_hl(0, { name = 'FooBar' })
eq(1, funcs.hlexists('FooBar'))
end)
@@ -454,11 +477,11 @@ describe('API: get highlight', function()
meths.set_hl(ns, 'Test_hl_link', { link = 'Test_hl' })
eq({
Test_hl = {
- bg = 11845374
+ bg = 11845374,
},
Test_hl_link = {
- link = 'Test_hl'
- }
+ link = 'Test_hl',
+ },
}, meths.get_hl(ns, {}))
end)
@@ -502,8 +525,7 @@ describe('API: get highlight', function()
undercurl = true,
},
})
- eq({ underdotted = true, cterm = { undercurl = true} },
- meths.get_hl(ns, { name = 'Test_hl' }))
+ eq({ underdotted = true, cterm = { undercurl = true } }, meths.get_hl(ns, { name = 'Test_hl' }))
end)
it('can get a highlight in the global namespace', function()
@@ -533,8 +555,13 @@ describe('API: get highlight', function()
command(
'hi NewHighlight cterm=underline ctermbg=green guifg=red guibg=yellow guisp=blue gui=bold'
)
- eq({ fg = 16711680, bg = 16776960, sp = 255, bold = true,
- ctermbg = 10, cterm = { underline = true },
+ eq({
+ fg = 16711680,
+ bg = 16776960,
+ sp = 255,
+ bold = true,
+ ctermbg = 10,
+ cterm = { underline = true },
}, meths.get_hl(0, { id = hl_id }))
-- Test 0 argument
@@ -547,16 +574,30 @@ describe('API: get highlight', function()
-- Test all highlight properties.
command('hi NewHighlight gui=underline,bold,italic,reverse,strikethrough,altfont,nocombine')
- eq({ fg = 16711680, bg = 16776960, sp = 255,
- altfont = true, bold = true, italic = true, nocombine = true, reverse = true, strikethrough = true, underline = true,
- ctermbg = 10, cterm = {underline = true},
+ eq({
+ fg = 16711680,
+ bg = 16776960,
+ sp = 255,
+ altfont = true,
+ bold = true,
+ italic = true,
+ nocombine = true,
+ reverse = true,
+ strikethrough = true,
+ underline = true,
+ ctermbg = 10,
+ cterm = { underline = true },
}, meths.get_hl(0, { id = hl_id }))
-- Test undercurl
command('hi NewHighlight gui=undercurl')
- eq({ fg = 16711680, bg = 16776960, sp = 255, undercurl = true,
- ctermbg = 10,
- cterm = {underline = true},
+ eq({
+ fg = 16711680,
+ bg = 16776960,
+ sp = 255,
+ undercurl = true,
+ ctermbg = 10,
+ cterm = { underline = true },
}, meths.get_hl(0, { id = hl_id }))
end)
@@ -573,7 +614,10 @@ describe('API: get highlight', function()
command('hi Bar guifg=red')
command('hi Foo guifg=#00ff00 gui=bold,underline')
command('hi! link Foo Bar')
- eq({ link = 'Bar', fg = tonumber('00ff00', 16), bold = true, underline = true }, meths.get_hl(0, { name = 'Foo', link = true }))
+ eq(
+ { link = 'Bar', fg = tonumber('00ff00', 16), bold = true, underline = true },
+ meths.get_hl(0, { name = 'Foo', link = true })
+ )
end)
it('can set link as well as other attributes', function()
@@ -584,57 +628,57 @@ describe('API: get highlight', function()
end)
it("doesn't contain unset groups", function()
- local id = meths.get_hl_id_by_name "@foobar.hubbabubba"
+ local id = meths.get_hl_id_by_name '@foobar.hubbabubba'
ok(id > 0)
local data = meths.get_hl(0, {})
- eq(nil, data["@foobar.hubbabubba"])
- eq(nil, data["@foobar"])
+ eq(nil, data['@foobar.hubbabubba'])
+ eq(nil, data['@foobar'])
command 'hi @foobar.hubbabubba gui=bold'
data = meths.get_hl(0, {})
- eq({bold = true}, data["@foobar.hubbabubba"])
- eq(nil, data["@foobar"])
+ 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.get_hl(0, {})
- eq({}, data["@foobar.hubbabubba"])
- eq(nil, data["@foobar"])
+ eq({}, data['@foobar.hubbabubba'])
+ eq(nil, data['@foobar'])
end)
it('should return default flag', function()
- meths.set_hl(0, 'Tried', { fg = "#00ff00", default = true })
+ meths.set_hl(0, 'Tried', { fg = '#00ff00', default = true })
eq({ fg = tonumber('00ff00', 16), default = true }, meths.get_hl(0, { name = 'Tried' }))
end)
it('should not output empty gui and cterm #23474', function()
- meths.set_hl(0, 'Foo', {default = true})
+ meths.set_hl(0, 'Foo', { default = true })
meths.set_hl(0, 'Bar', { default = true, fg = '#ffffff' })
- meths.set_hl(0, 'FooBar', { default = true, fg = '#ffffff', cterm = {bold = true} })
- meths.set_hl(0, 'FooBarA', { default = true, fg = '#ffffff', cterm = {bold = true,italic = true}})
+ meths.set_hl(0, 'FooBar', { default = true, fg = '#ffffff', cterm = { bold = true } })
+ meths.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.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'))
+ eq('Foo xxx cleared', exec_capture('highlight Foo'))
+ eq({ default = true }, meths.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'))
end)
it('can override exist highlight group by force #20323', function()
local white = tonumber('ffffff', 16)
local green = tonumber('00ff00', 16)
- meths.set_hl(0, 'Foo', { fg=white })
- meths.set_hl(0, 'Foo', { fg=green, force = true })
- eq({ fg = green },meths.get_hl(0, {name = 'Foo'}))
- meths.set_hl(0, 'Bar', {link = 'Comment', default = true})
- meths.set_hl(0, 'Bar', {link = 'Foo',default = true, force = true})
- eq({link ='Foo', default = true}, meths.get_hl(0, {name = 'Bar'}))
+ meths.set_hl(0, 'Foo', { fg = white })
+ meths.set_hl(0, 'Foo', { fg = green, force = true })
+ eq({ fg = green }, meths.get_hl(0, { name = 'Foo' }))
+ meths.set_hl(0, 'Bar', { link = 'Comment', default = true })
+ meths.set_hl(0, 'Bar', { link = 'Foo', default = true, force = true })
+ eq({ link = 'Foo', default = true }, meths.get_hl(0, { name = 'Bar' }))
end)
end)
@@ -647,9 +691,9 @@ describe('API: set/get highlight namespace', function()
end)
it('set/get window highlight namespace', function()
- eq(-1, meths.get_hl_ns({winid = 0}))
+ eq(-1, meths.get_hl_ns({ winid = 0 }))
local ns = meths.create_namespace('')
meths.win_set_hl_ns(0, ns)
- eq(ns, meths.get_hl_ns({winid = 0}))
+ eq(ns, meths.get_hl_ns({ winid = 0 }))
end)
end)
diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua
index 434f117956..50c353d764 100644
--- a/test/functional/api/keymap_spec.lua
+++ b/test/functional/api/keymap_spec.lua
@@ -39,21 +39,21 @@ describe('nvim_get_keymap', function()
-- Basic mapping and table to be used to describe results
local foo_bar_string = 'nnoremap foo bar'
local foo_bar_map_table = {
- lhs='foo',
- lhsraw='foo',
- script=0,
- silent=0,
- rhs='bar',
- expr=0,
- sid=0,
- scriptversion=1,
- buffer=0,
- nowait=0,
- mode='n',
- mode_bits=0x01,
- abbr=0,
- noremap=1,
- lnum=0,
+ lhs = 'foo',
+ lhsraw = 'foo',
+ script = 0,
+ silent = 0,
+ rhs = 'bar',
+ expr = 0,
+ sid = 0,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ mode = 'n',
+ mode_bits = 0x01,
+ abbr = 0,
+ noremap = 1,
+ lnum = 0,
}
it('returns empty list when no map', function()
@@ -66,10 +66,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.get_keymap('n'))
- eq({funcs.maparg('foo', 'n', false, true)},
- meths.get_keymap('n')
- )
+ eq({ foo_bar_map_table }, meths.get_keymap('n'))
+ eq({ funcs.maparg('foo', 'n', false, true) }, meths.get_keymap('n'))
-- Add another mapping
command('nnoremap foo_longer bar_longer')
@@ -78,15 +76,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.get_keymap('n')
- )
+ eq({ foolong_bar_map_table, foo_bar_map_table }, meths.get_keymap('n'))
-- Remove a mapping
command('unmap foo_longer')
- eq({foo_bar_map_table},
- meths.get_keymap('n')
- )
+ eq({ foo_bar_map_table }, meths.get_keymap('n'))
end)
it('works for other modes', function()
@@ -100,7 +94,7 @@ describe('nvim_get_keymap', function()
insert_table['mode'] = 'i'
insert_table['mode_bits'] = 0x10
- eq({insert_table}, meths.get_keymap('i'))
+ eq({ insert_table }, meths.get_keymap('i'))
end)
it('considers scope', function()
@@ -117,8 +111,8 @@ describe('nvim_get_keymap', function()
command('nnoremap <buffer> foo bar')
-- The buffer mapping should not show up
- eq({foolong_bar_map_table}, meths.get_keymap('n'))
- eq({buffer_table}, curbufmeths.get_keymap('n'))
+ eq({ foolong_bar_map_table }, meths.get_keymap('n'))
+ eq({ buffer_table }, curbufmeths.get_keymap('n'))
end)
it('considers scope for overlapping maps', function()
@@ -129,8 +123,8 @@ describe('nvim_get_keymap', function()
command('nnoremap <buffer> foo bar')
- eq({foo_bar_map_table}, meths.get_keymap('n'))
- eq({buffer_table}, curbufmeths.get_keymap('n'))
+ eq({ foo_bar_map_table }, meths.get_keymap('n'))
+ eq({ buffer_table }, curbufmeths.get_keymap('n'))
end)
it('can retrieve mapping for different buffers', function()
@@ -149,81 +143,118 @@ describe('nvim_get_keymap', function()
-- Final buffer will have buffer mappings
local buffer_table = shallowcopy(foo_bar_map_table)
buffer_table['buffer'] = final_buffer
- eq({buffer_table}, meths.buf_get_keymap(final_buffer, 'n'))
- eq({buffer_table}, meths.buf_get_keymap(0, 'n'))
+ eq({ buffer_table }, meths.buf_get_keymap(final_buffer, 'n'))
+ eq({ buffer_table }, meths.buf_get_keymap(0, 'n'))
command('buffer ' .. original_buffer)
eq(original_buffer, curbufmeths.get_number())
-- Original buffer won't have any mappings
eq({}, meths.get_keymap('n'))
eq({}, curbufmeths.get_keymap('n'))
- eq({buffer_table}, meths.buf_get_keymap(final_buffer, 'n'))
+ eq({ buffer_table }, meths.buf_get_keymap(final_buffer, 'n'))
end)
-- Test toggle switches for basic options
-- @param option The key represented in the `maparg()` result dict
- local function global_and_buffer_test(map,
- option,
- option_token,
- global_on_result,
- buffer_on_result,
- global_off_result,
- buffer_off_result,
- new_windows)
-
+ local function global_and_buffer_test(
+ map,
+ option,
+ option_token,
+ global_on_result,
+ buffer_on_result,
+ global_off_result,
+ buffer_off_result,
+ new_windows
+ )
local function make_new_windows(number_of_windows)
if new_windows == nil then
return nil
end
- for _=1,number_of_windows do
+ for _ = 1, number_of_windows do
command('new')
end
end
- local mode = string.sub(map, 1,1)
+ local mode = string.sub(map, 1, 1)
-- Don't run this for the <buffer> mapping, since it doesn't make sense
if option_token ~= '<buffer>' then
- it(string.format( 'returns %d for the key "%s" when %s is used globally with %s (%s)',
- global_on_result, option, option_token, map, mode), function()
- make_new_windows(new_windows)
- command(map .. ' ' .. option_token .. ' foo bar')
- local result = meths.get_keymap(mode)[1][option]
- eq(global_on_result, result)
- end)
+ it(
+ string.format(
+ 'returns %d for the key "%s" when %s is used globally with %s (%s)',
+ global_on_result,
+ option,
+ option_token,
+ map,
+ mode
+ ),
+ function()
+ make_new_windows(new_windows)
+ command(map .. ' ' .. option_token .. ' foo bar')
+ local result = meths.get_keymap(mode)[1][option]
+ eq(global_on_result, result)
+ end
+ )
end
- it(string.format('returns %d for the key "%s" when %s is used for buffers with %s (%s)',
- buffer_on_result, option, option_token, map, mode), function()
- make_new_windows(new_windows)
- command(map .. ' <buffer> ' .. option_token .. ' foo bar')
- local result = curbufmeths.get_keymap(mode)[1][option]
- eq(buffer_on_result, result)
- end)
+ it(
+ string.format(
+ 'returns %d for the key "%s" when %s is used for buffers with %s (%s)',
+ buffer_on_result,
+ option,
+ option_token,
+ map,
+ mode
+ ),
+ function()
+ make_new_windows(new_windows)
+ command(map .. ' <buffer> ' .. option_token .. ' foo bar')
+ local result = curbufmeths.get_keymap(mode)[1][option]
+ eq(buffer_on_result, result)
+ end
+ )
-- Don't run these for the <buffer> mapping, since it doesn't make sense
if option_token ~= '<buffer>' then
- it(string.format('returns %d for the key "%s" when %s is not used globally with %s (%s)',
- global_off_result, option, option_token, map, mode), function()
- make_new_windows(new_windows)
- command(map .. ' baz bat')
- local result = meths.get_keymap(mode)[1][option]
- eq(global_off_result, result)
- end)
-
- it(string.format('returns %d for the key "%s" when %s is not used for buffers with %s (%s)',
- buffer_off_result, option, option_token, map, mode), function()
- make_new_windows(new_windows)
- command(map .. ' <buffer> foo bar')
+ it(
+ string.format(
+ 'returns %d for the key "%s" when %s is not used globally with %s (%s)',
+ global_off_result,
+ option,
+ option_token,
+ map,
+ mode
+ ),
+ function()
+ make_new_windows(new_windows)
+ command(map .. ' baz bat')
+ local result = meths.get_keymap(mode)[1][option]
+ eq(global_off_result, result)
+ end
+ )
- local result = curbufmeths.get_keymap(mode)[1][option]
- eq(buffer_off_result, result)
- end)
+ it(
+ string.format(
+ 'returns %d for the key "%s" when %s is not used for buffers with %s (%s)',
+ buffer_off_result,
+ option,
+ option_token,
+ map,
+ mode
+ ),
+ function()
+ make_new_windows(new_windows)
+ command(map .. ' <buffer> foo bar')
+
+ local result = curbufmeths.get_keymap(mode)[1][option]
+ eq(buffer_off_result, result)
+ end
+ )
end
end
-- Standard modes and returns the same values in the dictionary as maparg()
- local mode_list = {'nnoremap', 'nmap', 'imap', 'inoremap', 'cnoremap'}
+ local mode_list = { 'nnoremap', 'nmap', 'imap', 'inoremap', 'cnoremap' }
for mode in pairs(mode_list) do
global_and_buffer_test(mode_list[mode], 'silent', '<silent>', 1, 1, 0, 0)
global_and_buffer_test(mode_list[mode], 'nowait', '<nowait>', 1, 1, 0, 0)
@@ -272,16 +303,16 @@ describe('nvim_get_keymap', function()
it('works correctly despite various &cpo settings', function()
local cpo_table = {
- script=0,
- silent=0,
- expr=0,
- sid=0,
- scriptversion=1,
- buffer=0,
- nowait=0,
- abbr=0,
- noremap=1,
- lnum=0,
+ script = 0,
+ silent = 0,
+ expr = 0,
+ sid = 0,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ abbr = 0,
+ noremap = 1,
+ lnum = 0,
}
local function cpomap(lhs, rhs, mode)
local ret = shallowcopy(cpo_table)
@@ -323,57 +354,67 @@ describe('nvim_get_keymap', function()
'set cpo+=B',
}) do
command(cmd)
- eq({cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'n'),
- cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'n')},
- get_keymap_noraw('n'))
- eq({cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'x'),
- cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'x')},
- get_keymap_noraw('x'))
- eq({cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 's'),
- cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 's')},
- get_keymap_noraw('s'))
- eq({cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 'o'),
- cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 'o')},
- get_keymap_noraw('o'))
+ eq({
+ cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'n'),
+ cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'n'),
+ }, get_keymap_noraw('n'))
+ eq({
+ cpomap('\\<C-C><C-C><lt>C-c>\\', '\\<C-D><C-D><lt>C-d>\\', 'x'),
+ cpomap('\\<C-A><C-A><lt>C-a>\\', '\\<C-B><C-B><lt>C-b>\\', 'x'),
+ }, get_keymap_noraw('x'))
+ eq({
+ cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 's'),
+ cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 's'),
+ }, get_keymap_noraw('s'))
+ eq({
+ cpomap('<lt>C-c><C-C><lt>C-c> ', '<lt>C-d><C-D><lt>C-d>', 'o'),
+ cpomap('<lt>C-a><C-A><lt>C-a> ', '<lt>C-b><C-B><lt>C-b>', 'o'),
+ }, get_keymap_noraw('o'))
end
end)
it('always uses space for space and bar for bar', function()
local space_table = {
- lhs='| |',
- lhsraw='| |',
- rhs='| |',
- mode='n',
- mode_bits=0x01,
- abbr=0,
- script=0,
- silent=0,
- expr=0,
- sid=0,
- scriptversion=1,
- buffer=0,
- nowait=0,
- noremap=1,
- lnum=0,
+ lhs = '| |',
+ lhsraw = '| |',
+ rhs = '| |',
+ mode = 'n',
+ mode_bits = 0x01,
+ abbr = 0,
+ script = 0,
+ silent = 0,
+ expr = 0,
+ sid = 0,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ noremap = 1,
+ lnum = 0,
}
command('nnoremap \\|<Char-0x20><Char-32><Space><Bar> \\|<Char-0x20><Char-32><Space> <Bar>')
- eq({space_table}, meths.get_keymap('n'))
+ eq({ space_table }, meths.get_keymap('n'))
end)
it('can handle lua mappings', function()
- eq(0, exec_lua([[
+ eq(
+ 0,
+ exec_lua([[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]]))
+ ]])
+ )
feed('asdf\n')
eq(1, exec_lua([[return GlobalCount]]))
- eq(2, exec_lua([[
+ eq(
+ 2,
+ exec_lua([[
vim.api.nvim_get_keymap('n')[1].callback()
return GlobalCount
- ]]))
+ ]])
+ )
exec([[
call nvim_get_keymap('n')[0].callback()
@@ -383,42 +424,42 @@ describe('nvim_get_keymap', function()
local mapargs = meths.get_keymap('n')
mapargs[1].callback = nil
eq({
- lhs='asdf',
- lhsraw='asdf',
- script=0,
- silent=0,
- expr=0,
- sid=sid_lua,
- scriptversion=1,
- buffer=0,
- nowait=0,
- mode='n',
- mode_bits=0x01,
- abbr=0,
- noremap=0,
- lnum=0,
+ lhs = 'asdf',
+ lhsraw = 'asdf',
+ script = 0,
+ silent = 0,
+ expr = 0,
+ sid = sid_lua,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ mode = 'n',
+ mode_bits = 0x01,
+ abbr = 0,
+ noremap = 0,
+ lnum = 0,
}, mapargs[1])
end)
it('can handle map descriptions', function()
- meths.set_keymap('n', 'lhs', 'rhs', {desc="map description"})
+ meths.set_keymap('n', 'lhs', 'rhs', { desc = 'map description' })
eq({
- lhs='lhs',
- lhsraw='lhs',
- rhs='rhs',
- script=0,
- silent=0,
- expr=0,
- sid=sid_api_client,
- scriptversion=1,
- buffer=0,
- nowait=0,
- mode='n',
- mode_bits=0x01,
- abbr=0,
- noremap=0,
- lnum=0,
- desc='map description'
+ lhs = 'lhs',
+ lhsraw = 'lhs',
+ rhs = 'rhs',
+ script = 0,
+ silent = 0,
+ expr = 0,
+ sid = sid_api_client,
+ scriptversion = 1,
+ buffer = 0,
+ nowait = 0,
+ mode = 'n',
+ mode_bits = 0x01,
+ abbr = 0,
+ noremap = 0,
+ lnum = 0,
+ desc = 'map description',
}, meths.get_keymap('n')[1])
end)
end)
@@ -490,8 +531,8 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
-- assume MAXMAPLEN of 50 chars, as declared in mapping_defs.h
local MAXMAPLEN = 50
local lhs = ''
- for i=1,MAXMAPLEN do
- lhs = lhs..(i % 10)
+ for i = 1, MAXMAPLEN do
+ lhs = lhs .. (i % 10)
end
-- exactly 50 chars should be fine
@@ -502,23 +543,20 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq({}, get_mapargs('', lhs))
-- 51 chars should produce an error
- lhs = lhs..'1'
- eq('LHS exceeds maximum map length: '..lhs,
- pcall_err(meths.set_keymap, '', lhs, 'rhs', {}))
- eq('LHS exceeds maximum map length: '..lhs,
- pcall_err(meths.del_keymap, '', lhs))
+ lhs = lhs .. '1'
+ eq('LHS exceeds maximum map length: ' .. lhs, pcall_err(meths.set_keymap, '', lhs, 'rhs', {}))
+ eq('LHS exceeds maximum map length: ' .. lhs, pcall_err(meths.del_keymap, '', lhs))
end)
it('does not throw errors when rhs is longer than MAXMAPLEN', function()
local MAXMAPLEN = 50
local rhs = ''
- for i=1,MAXMAPLEN do
- rhs = rhs..(i % 10)
+ for i = 1, MAXMAPLEN do
+ rhs = rhs .. (i % 10)
end
- rhs = rhs..'1'
+ rhs = rhs .. '1'
meths.set_keymap('', 'lhs', rhs, {})
- eq(generate_mapargs('', 'lhs', rhs),
- get_mapargs('', 'lhs'))
+ eq(generate_mapargs('', 'lhs', rhs), get_mapargs('', 'lhs'))
end)
it('error on invalid mode shortname', function()
@@ -534,7 +572,10 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq('Invalid mode shortname: "!!"', pcall_err(meths.set_keymap, '!!', 'lhs', 'rhs', {}))
eq('Invalid mode shortname: "map"', pcall_err(meths.set_keymap, 'map', 'lhs', 'rhs', {}))
eq('Invalid mode shortname: "vmap"', pcall_err(meths.set_keymap, 'vmap', 'lhs', 'rhs', {}))
- eq('Invalid mode shortname: "xnoremap"', pcall_err(meths.set_keymap, 'xnoremap', 'lhs', 'rhs', {}))
+ eq(
+ 'Invalid mode shortname: "xnoremap"',
+ pcall_err(meths.set_keymap, 'xnoremap', 'lhs', 'rhs', {})
+ )
eq('Invalid mode shortname: " "', pcall_err(meths.del_keymap, ' ', 'lhs'))
eq('Invalid mode shortname: "m"', pcall_err(meths.del_keymap, 'm', 'lhs'))
eq('Invalid mode shortname: "?"', pcall_err(meths.del_keymap, '?', 'lhs'))
@@ -551,32 +592,29 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
end)
it('error on invalid optnames', function()
- eq("Invalid key: 'silentt'",
- pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', {silentt = true}))
- eq("Invalid key: 'sidd'",
- pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', {sidd = false}))
- eq("Invalid key: 'nowaiT'",
- pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', {nowaiT = false}))
+ eq("Invalid key: 'silentt'", pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', { silentt = true }))
+ eq("Invalid key: 'sidd'", pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', { sidd = false }))
+ eq("Invalid key: 'nowaiT'", pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', { nowaiT = false }))
end)
it('error on <buffer> option key', function()
- eq("Invalid key: 'buffer'",
- pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', {buffer = true}))
+ eq("Invalid key: 'buffer'", pcall_err(meths.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.set_keymap, 'n', 'lhs', 'rhs', {replace_keycodes = true}))
+ eq(
+ '"replace_keycodes" requires "expr"',
+ pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', { replace_keycodes = true })
+ )
end)
- local optnames = {'nowait', 'silent', 'script', 'expr', 'unique'}
+ local optnames = { 'nowait', 'silent', 'script', 'expr', 'unique' }
for _, opt in ipairs(optnames) do
-- note: need '%' to escape hyphens, which have special meaning in lua
- it('throws an error when given non-boolean value for '..opt, 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.set_keymap, 'n', 'lhs', 'rhs', opts))
+ eq(opt .. ' is not a boolean', pcall_err(meths.set_keymap, 'n', 'lhs', 'rhs', opts))
end)
end
@@ -591,26 +629,21 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('does not throw when LHS or RHS have leading/trailing whitespace', function()
meths.set_keymap('n', ' lhs', 'rhs', {})
- eq(generate_mapargs('n', '<Space><Space><Space>lhs', 'rhs'),
- get_mapargs('n', ' lhs'))
+ eq(generate_mapargs('n', '<Space><Space><Space>lhs', 'rhs'), get_mapargs('n', ' lhs'))
meths.set_keymap('n', 'lhs ', 'rhs', {})
- eq(generate_mapargs('n', 'lhs<Space><Space><Space><Space>', 'rhs'),
- get_mapargs('n', 'lhs '))
+ eq(generate_mapargs('n', 'lhs<Space><Space><Space><Space>', 'rhs'), get_mapargs('n', 'lhs '))
meths.set_keymap('v', ' lhs ', '\trhs\t\f', {})
- eq(generate_mapargs('v', '<Space>lhs<Space><Space>', '\trhs\t\f'),
- get_mapargs('v', ' lhs '))
+ eq(generate_mapargs('v', '<Space>lhs<Space><Space>', '\trhs\t\f'), get_mapargs('v', ' lhs '))
end)
it('can set noremap mappings', function()
- meths.set_keymap('x', 'lhs', 'rhs', {noremap = true})
- eq(generate_mapargs('x', 'lhs', 'rhs', {noremap = true}),
- get_mapargs('x', 'lhs'))
+ meths.set_keymap('x', 'lhs', 'rhs', { noremap = true })
+ eq(generate_mapargs('x', 'lhs', 'rhs', { noremap = true }), get_mapargs('x', 'lhs'))
- meths.set_keymap('t', 'lhs', 'rhs', {noremap = true})
- eq(generate_mapargs('t', 'lhs', 'rhs', {noremap = true}),
- get_mapargs('t', 'lhs'))
+ meths.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()
@@ -618,14 +651,14 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
meths.del_keymap('v', 'lhs')
eq({}, get_mapargs('v', 'lhs'))
- meths.set_keymap('t', 'lhs', 'rhs', {noremap = true})
+ meths.set_keymap('t', 'lhs', 'rhs', { noremap = true })
meths.del_keymap('t', 'lhs')
eq({}, get_mapargs('t', 'lhs'))
end)
-- Test some edge cases
it('"!" and empty string are synonyms for mapmode-nvo', function()
- local nvo_shortnames = {'', '!'}
+ local nvo_shortnames = { '', '!' }
for _, name in ipairs(nvo_shortnames) do
meths.set_keymap(name, 'lhs', 'rhs', {})
meths.del_keymap(name, 'lhs')
@@ -633,12 +666,11 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
end
end)
- local special_chars = {'<C-U>', '<S-Left>', '<F12><F2><Tab>', '<Space><Tab>'}
+ local special_chars = { '<C-U>', '<S-Left>', '<F12><F2><Tab>', '<Space><Tab>' }
for _, lhs in ipairs(special_chars) do
for _, rhs in ipairs(special_chars) do
local mapmode = '!'
- it('can set mappings with special characters, lhs: '..lhs..', rhs: '..rhs,
- function()
+ it('can set mappings with special characters, lhs: ' .. lhs .. ', rhs: ' .. rhs, function()
meths.set_keymap(mapmode, lhs, rhs, {})
eq(generate_mapargs(mapmode, lhs, rhs), get_mapargs(mapmode, lhs))
end)
@@ -654,39 +686,34 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
it('can set mappings whose RHS is a <Nop>', function()
meths.set_keymap('i', 'lhs', '<Nop>', {})
command('normal ilhs')
- eq({''}, curbufmeths.get_lines(0, -1, 0)) -- imap to <Nop> does nothing
- eq(generate_mapargs('i', 'lhs', '<Nop>', {}),
- get_mapargs('i', 'lhs'))
+ eq({ '' }, curbufmeths.get_lines(0, -1, 0)) -- imap to <Nop> does nothing
+ eq(generate_mapargs('i', 'lhs', '<Nop>', {}), get_mapargs('i', 'lhs'))
-- also test for case insensitivity
meths.set_keymap('i', 'lhs', '<nOp>', {})
command('normal ilhs')
- eq({''}, curbufmeths.get_lines(0, -1, 0))
+ eq({ '' }, curbufmeths.get_lines(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'))
+ eq(generate_mapargs('i', 'lhs', '<nOp>', {}), get_mapargs('i', 'lhs'))
meths.set_keymap('i', 'lhs', '<NOP>', {})
command('normal ilhs')
- eq({''}, curbufmeths.get_lines(0, -1, 0))
- eq(generate_mapargs('i', 'lhs', '<NOP>', {}),
- get_mapargs('i', 'lhs'))
+ eq({ '' }, curbufmeths.get_lines(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.set_keymap('i', 'lhs', '\022', {})
command('normal ilhs')
- eq({''}, curbufmeths.get_lines(0, -1, 0))
- eq(generate_mapargs('i', 'lhs', '\022', {}),
- get_mapargs('i', 'lhs'))
+ eq({ '' }, curbufmeths.get_lines(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.set_keymap('i', 'lhs', '', {})
command('normal ilhs')
- eq({''}, curbufmeths.get_lines(0, -1, 0))
- eq(generate_mapargs('i', 'lhs', '', {}),
- get_mapargs('i', 'lhs'))
+ eq({ '' }, curbufmeths.get_lines(0, -1, 0))
+ eq(generate_mapargs('i', 'lhs', '', {}), get_mapargs('i', 'lhs'))
end)
it('can set and unset <M-">', function()
@@ -698,21 +725,24 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq({}, get_mapargs('i', '<M-">'))
end)
- it('interprets control sequences in expr-quotes correctly when called '
- ..'inside vim', 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'}, curbufmeths.get_lines(0, -1, 0))
- end)
+ it(
+ 'interprets control sequences in expr-quotes correctly when called ' .. 'inside vim',
+ 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' }, curbufmeths.get_lines(0, -1, 0))
+ end
+ )
it('throws appropriate error messages when setting <unique> maps', function()
meths.set_keymap('l', 'lhs', 'rhs', {})
- eq('E227: mapping already exists for lhs',
- pcall_err(meths.set_keymap, 'l', 'lhs', 'rhs', {unique = true}))
+ eq(
+ 'E227: mapping already exists for lhs',
+ pcall_err(meths.set_keymap, 'l', 'lhs', 'rhs', { unique = true })
+ )
-- different mapmode, no error should be thrown
- meths.set_keymap('t', 'lhs', 'rhs', {unique = true})
+ meths.set_keymap('t', 'lhs', 'rhs', { unique = true })
end)
it('can set <expr> mappings whose RHS change dynamically', function()
@@ -728,14 +758,14 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq(1, meths.call_function('FlipFlop', {}))
eq(0, meths.call_function('FlipFlop', {}))
- meths.set_keymap('i', 'lhs', 'FlipFlop()', {expr = true})
+ meths.set_keymap('i', 'lhs', 'FlipFlop()', { expr = true })
command('normal ilhs')
- eq({'1'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ '1' }, curbufmeths.get_lines(0, -1, 0))
command('normal! ggVGd')
command('normal ilhs')
- eq({'0'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ '0' }, curbufmeths.get_lines(0, -1, 0))
end)
it('can set mappings that do trigger other mappings', function()
@@ -743,30 +773,30 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
meths.set_keymap('i', 'lhs', 'mhs', {})
command('normal imhs')
- eq({'rhs'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ 'rhs' }, curbufmeths.get_lines(0, -1, 0))
command('normal! ggVGd')
command('normal ilhs')
- eq({'rhs'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ 'rhs' }, curbufmeths.get_lines(0, -1, 0))
end)
it("can set noremap mappings that don't trigger other mappings", function()
meths.set_keymap('i', 'mhs', 'rhs', {})
- meths.set_keymap('i', 'lhs', 'mhs', {noremap = true})
+ meths.set_keymap('i', 'lhs', 'mhs', { noremap = true })
command('normal imhs')
- eq({'rhs'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ 'rhs' }, curbufmeths.get_lines(0, -1, 0))
command('normal! ggVGd')
- command('normal ilhs') -- shouldn't trigger mhs-to-rhs mapping
- eq({'mhs'}, curbufmeths.get_lines(0, -1, 0))
+ command('normal ilhs') -- shouldn't trigger mhs-to-rhs mapping
+ eq({ 'mhs' }, curbufmeths.get_lines(0, -1, 0))
end)
- it("can set nowait mappings that fire without waiting", function()
- meths.set_keymap('i', '123456', 'longer', {})
- meths.set_keymap('i', '123', 'shorter', {nowait = true})
+ it('can set nowait mappings that fire without waiting', function()
+ meths.set_keymap('i', '123456', 'longer', {})
+ meths.set_keymap('i', '123', 'shorter', { nowait = true })
-- feed keys one at a time; if all keys arrive atomically, the longer
-- mapping will trigger
@@ -775,16 +805,15 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed(c)
sleep(5)
end
- eq({'shorter456'}, curbufmeths.get_lines(0, -1, 0))
+ eq({ 'shorter456' }, curbufmeths.get_lines(0, -1, 0))
end)
-- Perform exhaustive tests of basic functionality
- local mapmodes = {'n', 'v', 'x', 's', 'o', '!', 'i', 'l', 'c', 't', '', 'ia', 'ca', '!a'}
+ 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()
+ it('can set/unset normal mappings in mapmode ' .. mapmode, function()
meths.set_keymap(mapmode, 'lhs', 'rhs', {})
- eq(generate_mapargs(mapmode, 'lhs', 'rhs'),
- get_mapargs(mapmode, 'lhs'))
+ 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
@@ -794,10 +823,9 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
end
for _, mapmode in ipairs(mapmodes) do
- it('can set/unset noremap mappings using mapmode '..mapmode, function()
- meths.set_keymap(mapmode, 'lhs', 'rhs', {noremap = true})
- eq(generate_mapargs(mapmode, 'lhs', 'rhs', {noremap = true}),
- get_mapargs(mapmode, 'lhs'))
+ it('can set/unset noremap mappings using mapmode ' .. mapmode, function()
+ meths.set_keymap(mapmode, 'lhs', 'rhs', { noremap = true })
+ eq(generate_mapargs(mapmode, 'lhs', 'rhs', { noremap = true }), get_mapargs(mapmode, 'lhs'))
meths.del_keymap(mapmode, 'lhs')
eq({}, get_mapargs(mapmode, 'lhs'))
@@ -806,53 +834,70 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
-- Test map-arguments, using optnames from above
-- remove some map arguments that are harder to test, or were already tested
- optnames = {'nowait', 'silent', 'expr', 'noremap'}
+ optnames = { 'nowait', 'silent', 'expr', 'noremap' }
for _, mapmode in ipairs(mapmodes) do
-- Test with single mappings
for _, maparg in ipairs(optnames) do
- it('can set/unset '..mapmode..'-mappings with maparg: '..maparg,
- function()
- meths.set_keymap(mapmode, 'lhs', 'rhs', {[maparg] = true})
- eq(generate_mapargs(mapmode, 'lhs', 'rhs', {[maparg] = true}),
- get_mapargs(mapmode, 'lhs'))
- meths.del_keymap(mapmode, 'lhs')
- eq({}, get_mapargs(mapmode, 'lhs'))
- end)
- it ('can set/unset '..mapmode..'-mode mappings with maparg '..
- maparg..', whose value is false', function()
- meths.set_keymap(mapmode, 'lhs', 'rhs', {[maparg] = false})
- eq(generate_mapargs(mapmode, 'lhs', 'rhs'),
- get_mapargs(mapmode, 'lhs'))
+ it('can set/unset ' .. mapmode .. '-mappings with maparg: ' .. maparg, function()
+ meths.set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = true })
+ eq(
+ generate_mapargs(mapmode, 'lhs', 'rhs', { [maparg] = true }),
+ get_mapargs(mapmode, 'lhs')
+ )
meths.del_keymap(mapmode, 'lhs')
eq({}, get_mapargs(mapmode, 'lhs'))
end)
+ it(
+ 'can set/unset '
+ .. mapmode
+ .. '-mode mappings with maparg '
+ .. maparg
+ .. ', whose value is false',
+ function()
+ meths.set_keymap(mapmode, 'lhs', 'rhs', { [maparg] = false })
+ eq(generate_mapargs(mapmode, 'lhs', 'rhs'), get_mapargs(mapmode, 'lhs'))
+ meths.del_keymap(mapmode, 'lhs')
+ eq({}, get_mapargs(mapmode, 'lhs'))
+ end
+ )
end
-- Test with triplets of mappings, one of which is false
for i = 1, (#optnames - 2) do
local opt1, opt2, opt3 = optnames[i], optnames[i + 1], optnames[i + 2]
- it('can set/unset '..mapmode..'-mode mappings with mapargs '..
- opt1..', '..opt2..', '..opt3, function()
- local opts = {[opt1] = true, [opt2] = false, [opt3] = true}
- meths.set_keymap(mapmode, 'lhs', 'rhs', opts)
- eq(generate_mapargs(mapmode, 'lhs', 'rhs', opts),
- get_mapargs(mapmode, 'lhs'))
- meths.del_keymap(mapmode, 'lhs')
- eq({}, get_mapargs(mapmode, 'lhs'))
- end)
+ it(
+ 'can set/unset '
+ .. mapmode
+ .. '-mode mappings with mapargs '
+ .. opt1
+ .. ', '
+ .. opt2
+ .. ', '
+ .. opt3,
+ function()
+ local opts = { [opt1] = true, [opt2] = false, [opt3] = true }
+ meths.set_keymap(mapmode, 'lhs', 'rhs', opts)
+ eq(generate_mapargs(mapmode, 'lhs', 'rhs', opts), get_mapargs(mapmode, 'lhs'))
+ meths.del_keymap(mapmode, 'lhs')
+ eq({}, get_mapargs(mapmode, 'lhs'))
+ end
+ )
end
end
it('can make lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
end)
it(':map command shows lua mapping correctly', function()
@@ -861,8 +906,8 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
]]
assert.truthy(
string.match(
- exec_lua[[return vim.api.nvim_exec2(':nmap asdf', { output = true }).output]],
- "^\nn asdf <Lua %d+>"
+ exec_lua [[return vim.api.nvim_exec2(':nmap asdf', { output = true }).output]],
+ '^\nn asdf <Lua %d+>'
)
)
end)
@@ -871,29 +916,34 @@ 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(funcs.mapcheck('asdf', 'n'), '^<Lua %d+>'))
end)
it('maparg() returns lua mapping correctly', function()
- eq(0, exec_lua([[
+ eq(
+ 0,
+ exec_lua([[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]]))
+ ]])
+ )
- assert.truthy(string.match(funcs.maparg('asdf', 'n'), "^<Lua %d+>"))
+ assert.truthy(string.match(funcs.maparg('asdf', 'n'), '^<Lua %d+>'))
local mapargs = funcs.maparg('asdf', 'n', false, true)
mapargs.callback = nil
mapargs.lhsraw = nil
mapargs.lhsrawalt = nil
- eq(generate_mapargs('n', 'asdf', nil, {sid=sid_lua}), mapargs)
+ eq(generate_mapargs('n', 'asdf', nil, { sid = sid_lua }), mapargs)
- eq(1, exec_lua([[
+ eq(
+ 1,
+ exec_lua([[
vim.fn.maparg('asdf', 'n', false, true).callback()
return GlobalCount
- ]]))
+ ]])
+ )
exec([[
call maparg('asdf', 'n', v:false, v:true).callback()
@@ -908,7 +958,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('aa')
- eq({'π<M-π>foo<'}, meths.buf_get_lines(0, 0, -1, false))
+ eq({ 'π<M-π>foo<' }, meths.buf_get_lines(0, 0, -1, false))
end)
it('can make lua expr mappings without replacing keycodes', function()
@@ -918,7 +968,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('iaa<esc>')
- eq({'<space>'}, meths.buf_get_lines(0, 0, -1, false))
+ eq({ '<space>' }, meths.buf_get_lines(0, 0, -1, false))
end)
it('lua expr mapping returning nil is equivalent to returning an empty string', function()
@@ -928,41 +978,50 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('iaa<esc>')
- eq({''}, meths.buf_get_lines(0, 0, -1, false))
+ eq({ '' }, meths.buf_get_lines(0, 0, -1, false))
end)
it('does not reset pum in lua mapping', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
VisibleCount = 0
vim.api.nvim_set_keymap('i', '<F2>', '', {callback = function() VisibleCount = VisibleCount + vim.fn.pumvisible() end})
return VisibleCount
- ]])
+ ]]
+ )
feed('i<C-X><C-V><F2><F2><esc>')
- eq(2, exec_lua[[return VisibleCount]])
+ eq(2, exec_lua [[return VisibleCount]])
end)
it('redo of lua mappings in op-pending mode work', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
OpCount = 0
vim.api.nvim_set_keymap('o', '<F2>', '', {callback = function() OpCount = OpCount + 1 end})
return OpCount
- ]])
+ ]]
+ )
feed('d<F2>')
- eq(1, exec_lua[[return OpCount]])
+ eq(1, exec_lua [[return OpCount]])
feed('.')
- eq(2, exec_lua[[return OpCount]])
+ eq(2, exec_lua [[return OpCount]])
end)
it('can overwrite lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount - 1 end })
@@ -970,19 +1029,22 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('asdf\n')
- eq(0, exec_lua[[return GlobalCount]])
+ eq(0, exec_lua [[return GlobalCount]])
end)
it('can unmap lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_set_keymap('n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_del_keymap('n', 'asdf' )
@@ -990,20 +1052,23 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
eq('\nNo mapping found', helpers.exec_capture('nmap asdf'))
end)
it('no double-free when unmapping simplifiable lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_set_keymap('n', '<C-I>', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('<C-I>\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_del_keymap('n', '<C-I>')
@@ -1011,15 +1076,14 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
feed('<C-I>\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
eq('\nNo mapping found', helpers.exec_capture('nmap <C-I>'))
end)
it('can set descriptions on mappings', function()
- meths.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"))
+ meths.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)
it('can define !-mode abbreviations with lua callbacks', function()
@@ -1035,7 +1099,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq('The 1 and the bar and the 2 again', meths.get_current_line())
feed ':let x = "The foo is the one"<cr>'
- eq('The 3 is the one', meths.eval'x')
+ eq('The 3 is the one', meths.eval 'x')
end)
it('can define insert mode abbreviations with lua callbacks', function()
@@ -1051,7 +1115,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq('The 1 and the bar and the 2 again', meths.get_current_line())
feed ':let x = "The foo is the one"<cr>'
- eq('The foo is the one', meths.eval'x')
+ eq('The foo is the one', meths.eval 'x')
end)
it('can define cmdline mode abbreviations with lua callbacks', function()
@@ -1067,7 +1131,7 @@ describe('nvim_set_keymap, nvim_del_keymap', function()
eq('The foo and the bar and the foo again', meths.get_current_line())
feed ':let x = "The foo is the one"<cr>'
- eq('The 1 is the one', meths.eval'x')
+ eq('The 1 is the one', meths.eval 'x')
end)
end)
@@ -1081,7 +1145,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
-- switch to the given buffer, abandoning any changes in the current buffer
local function switch_to_buf(bufnr)
- command(bufnr..'buffer!')
+ command(bufnr .. 'buffer!')
end
-- `set hidden`, then create two buffers and return their bufnr's
@@ -1090,10 +1154,10 @@ 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.call_function('bufnr', {'%'})
+ local first_buf = meths.call_function('bufnr', { '%' })
command('new')
- local second_buf = meths.call_function('bufnr', {'%'})
- neq(second_buf, first_buf) -- sanity check
+ local second_buf = meths.call_function('bufnr', { '%' })
+ neq(second_buf, first_buf) -- sanity check
if start_from_first then
switch_to_buf(first_buf)
@@ -1103,8 +1167,10 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
end
it('rejects negative bufnr values', function()
- eq('Wrong type for argument 1 when calling nvim_buf_set_keymap, expecting Buffer',
- pcall_err(bufmeths.set_keymap, -1, '', 'lhs', 'rhs', {}))
+ eq(
+ 'Wrong type for argument 1 when calling nvim_buf_set_keymap, expecting Buffer',
+ pcall_err(bufmeths.set_keymap, -1, '', 'lhs', 'rhs', {})
+ )
end)
it('can set mappings active in the current buffer but not others', function()
@@ -1112,17 +1178,17 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
bufmeths.set_keymap(0, '', 'lhs', 'irhs<Esc>', {})
command('normal lhs')
- eq({'rhs'}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ 'rhs' }, bufmeths.get_lines(0, 0, 1, 1))
-- mapping should have no effect in new buffer
switch_to_buf(second)
command('normal lhs')
- eq({''}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ '' }, bufmeths.get_lines(0, 0, 1, 1))
-- mapping should remain active in old buffer
switch_to_buf(first)
command('normal ^lhs')
- eq({'rhsrhs'}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ 'rhsrhs' }, bufmeths.get_lines(0, 0, 1, 1))
end)
it('can set local mappings in buffer other than current', function()
@@ -1131,12 +1197,12 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
-- shouldn't do anything
command('normal lhs')
- eq({''}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ '' }, bufmeths.get_lines(0, 0, 1, 1))
-- should take effect
switch_to_buf(first)
command('normal lhs')
- eq({'rhs'}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ 'rhs' }, bufmeths.get_lines(0, 0, 1, 1))
end)
it('can disable mappings made in another buffer, inside that buffer', function()
@@ -1147,36 +1213,38 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
-- shouldn't do anything
command('normal lhs')
- eq({''}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ '' }, bufmeths.get_lines(0, 0, 1, 1))
end)
it("can't disable mappings given wrong buffer handle", function()
local first, second = make_two_buffers(false)
bufmeths.set_keymap(first, '', 'lhs', 'irhs<Esc>', {})
- eq('E31: No such mapping',
- pcall_err(bufmeths.del_keymap, second, '', 'lhs'))
+ eq('E31: No such mapping', pcall_err(bufmeths.del_keymap, second, '', 'lhs'))
-- should still work
switch_to_buf(first)
command('normal lhs')
- eq({'rhs'}, bufmeths.get_lines(0, 0, 1, 1))
+ eq({ 'rhs' }, bufmeths.get_lines(0, 0, 1, 1))
end)
- it("does not crash when setting mapping in a non-existing buffer #13541", function()
+ it('does not crash when setting mapping in a non-existing buffer #13541', function()
pcall_err(bufmeths.set_keymap, 100, '', 'lsh', 'irhs<Esc>', {})
helpers.assert_alive()
end)
it('can make lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
end)
it('can make lua expr mappings replacing keycodes', function()
@@ -1186,7 +1254,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
feed('aa')
- eq({'π<M-π>foo<'}, meths.buf_get_lines(0, 0, -1, false))
+ eq({ 'π<M-π>foo<' }, meths.buf_get_lines(0, 0, -1, false))
end)
it('can make lua expr mappings without replacing keycodes', function()
@@ -1196,20 +1264,22 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
feed('iaa<esc>')
- eq({'<space>'}, meths.buf_get_lines(0, 0, -1, false))
+ eq({ '<space>' }, meths.buf_get_lines(0, 0, -1, false))
end)
-
it('can overwrite lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount - 1 end })
@@ -1217,19 +1287,22 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
feed('asdf\n')
- eq(0, exec_lua[[return GlobalCount]])
+ eq(0, exec_lua [[return GlobalCount]])
end)
it('can unmap lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_buf_set_keymap(0, 'n', 'asdf', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_buf_del_keymap(0, 'n', 'asdf' )
@@ -1237,20 +1310,23 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
feed('asdf\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
eq('\nNo mapping found', helpers.exec_capture('nmap asdf'))
end)
it('no double-free when unmapping simplifiable lua mappings', function()
- eq(0, exec_lua [[
+ eq(
+ 0,
+ exec_lua [[
GlobalCount = 0
vim.api.nvim_buf_set_keymap(0, 'n', '<C-I>', '', {callback = function() GlobalCount = GlobalCount + 1 end })
return GlobalCount
- ]])
+ ]]
+ )
feed('<C-I>\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
exec_lua [[
vim.api.nvim_buf_del_keymap(0, 'n', '<C-I>')
@@ -1258,7 +1334,7 @@ describe('nvim_buf_set_keymap, nvim_buf_del_keymap', function()
feed('<C-I>\n')
- eq(1, exec_lua[[return GlobalCount]])
+ eq(1, exec_lua [[return GlobalCount]])
eq('\nNo mapping found', helpers.exec_capture('nmap <C-I>'))
end)
end)
diff --git a/test/functional/api/menu_spec.lua b/test/functional/api/menu_spec.lua
index 34a92477f3..44b9039393 100644
--- a/test/functional/api/menu_spec.lua
+++ b/test/functional/api/menu_spec.lua
@@ -5,8 +5,7 @@ local clear = helpers.clear
local command = helpers.command
local feed = helpers.feed
-describe("update_menu notification", function()
-
+describe('update_menu notification', function()
local screen
before_each(function()
@@ -16,23 +15,26 @@ describe("update_menu notification", function()
end)
local function expect_sent(expected)
- screen:expect{condition=function()
- if screen.update_menu ~= expected then
- if expected then
- error('update_menu was expected but not sent')
- else
- error('update_menu was sent unexpectedly')
+ screen:expect {
+ condition = function()
+ if screen.update_menu ~= expected then
+ if expected then
+ error('update_menu was expected but not sent')
+ else
+ error('update_menu was sent unexpectedly')
+ end
end
- end
- end, unchanged=(not expected)}
+ end,
+ unchanged = not expected,
+ }
end
- it("should be sent when adding a menu", function()
+ it('should be sent when adding a menu', function()
command('menu Test.Test :')
expect_sent(true)
end)
- it("should be sent when deleting a menu", function()
+ it('should be sent when deleting a menu', function()
command('menu Test.Test :')
screen.update_menu = false
@@ -40,9 +42,8 @@ describe("update_menu notification", function()
expect_sent(true)
end)
- it("should not be sent unnecessarily", function()
+ it('should not be sent unnecessarily', function()
feed('i12345<ESC>:redraw<CR>')
expect_sent(false)
end)
-
end)
diff --git a/test/functional/api/proc_spec.lua b/test/functional/api/proc_spec.lua
index 20edea3feb..4f99a69ce6 100644
--- a/test/functional/api/proc_spec.lua
+++ b/test/functional/api/proc_spec.lua
@@ -43,16 +43,16 @@ describe('API', function()
end)
it('validation', function()
- local status, rv = pcall(request, "nvim_get_proc_children", -1)
+ local status, rv = pcall(request, 'nvim_get_proc_children', -1)
eq(false, status)
- eq("Invalid 'pid': -1", string.match(rv, "Invalid.*"))
+ eq("Invalid 'pid': -1", string.match(rv, 'Invalid.*'))
- status, rv = pcall(request, "nvim_get_proc_children", 0)
+ status, rv = pcall(request, 'nvim_get_proc_children', 0)
eq(false, status)
- eq("Invalid 'pid': 0", string.match(rv, "Invalid.*"))
+ eq("Invalid 'pid': 0", string.match(rv, 'Invalid.*'))
-- Assume PID 99999 does not exist.
- status, rv = pcall(request, "nvim_get_proc_children", 99999)
+ status, rv = pcall(request, 'nvim_get_proc_children', 99999)
eq(true, status)
eq({}, rv)
end)
@@ -69,16 +69,16 @@ describe('API', function()
end)
it('validation', function()
- local status, rv = pcall(request, "nvim_get_proc", -1)
+ local status, rv = pcall(request, 'nvim_get_proc', -1)
eq(false, status)
- eq("Invalid 'pid': -1", string.match(rv, "Invalid.*"))
+ eq("Invalid 'pid': -1", string.match(rv, 'Invalid.*'))
- status, rv = pcall(request, "nvim_get_proc", 0)
+ status, rv = pcall(request, 'nvim_get_proc', 0)
eq(false, status)
- eq("Invalid 'pid': 0", string.match(rv, "Invalid.*"))
+ eq("Invalid 'pid': 0", string.match(rv, 'Invalid.*'))
-- Assume PID 99999 does not exist.
- status, rv = pcall(request, "nvim_get_proc", 99999)
+ status, rv = pcall(request, 'nvim_get_proc', 99999)
eq(true, status)
eq(NIL, rv)
end)
diff --git a/test/functional/api/rpc_fixture.lua b/test/functional/api/rpc_fixture.lua
index c860a6da59..050d439a1b 100644
--- a/test/functional/api/rpc_fixture.lua
+++ b/test/functional/api/rpc_fixture.lua
@@ -4,8 +4,8 @@
package.path = arg[1]
package.cpath = arg[2]
-local StdioStream = require'test.client.uv_stream'.StdioStream
-local Session = require'test.client.session'
+local StdioStream = require 'test.client.uv_stream'.StdioStream
+local Session = require 'test.client.session'
local stdio_stream = StdioStream.open()
local session = Session.new(stdio_stream)
@@ -15,8 +15,8 @@ local function on_request(method, args)
return 'ok'
elseif method == 'write_stderr' then
io.stderr:write(args[1])
- return "done!"
- elseif method == "exit" then
+ return 'done!'
+ elseif method == 'exit' then
session:stop()
return vim.NIL
end
@@ -24,7 +24,7 @@ end
local function on_notification(event, args)
if event == 'ping' and #args == 0 then
- session:notify("nvim_eval", "rpcnotify(g:channel, 'pong')")
+ session:notify('nvim_eval', "rpcnotify(g:channel, 'pong')")
end
end
diff --git a/test/functional/api/server_notifications_spec.lua b/test/functional/api/server_notifications_spec.lua
index bc43f6564d..d75bfd5324 100644
--- a/test/functional/api/server_notifications_spec.lua
+++ b/test/functional/api/server_notifications_spec.lua
@@ -1,8 +1,7 @@
local helpers = require('test.functional.helpers')(after_each)
local assert_log = helpers.assert_log
local eq, clear, eval, command, nvim, next_msg =
- helpers.eq, helpers.clear, helpers.eval, helpers.command, helpers.nvim,
- helpers.next_msg
+ helpers.eq, helpers.clear, helpers.eval, helpers.command, helpers.nvim, helpers.next_msg
local meths = helpers.meths
local exec_lua = helpers.exec_lua
local retry = helpers.retry
@@ -24,11 +23,11 @@ describe('notify', function()
describe('passing a valid channel id', function()
it('sends the notification/args to the corresponding channel', function()
- eval('rpcnotify('..channel..', "test-event", 1, 2, 3)')
- eq({'notification', 'test-event', {1, 2, 3}}, next_msg())
- command('au FileType lua call rpcnotify('..channel..', "lua!")')
+ eval('rpcnotify(' .. channel .. ', "test-event", 1, 2, 3)')
+ eq({ 'notification', 'test-event', { 1, 2, 3 } }, next_msg())
+ command('au FileType lua call rpcnotify(' .. channel .. ', "lua!")')
command('set filetype=lua')
- eq({'notification', 'lua!', {}}, next_msg())
+ eq({ 'notification', 'lua!', {} }, next_msg())
end)
end)
@@ -38,20 +37,20 @@ describe('notify', function()
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())
+ eq({ 'notification', 'event2', { 4, 5, 6 } }, next_msg())
+ eq({ 'notification', 'event2', { 7, 8, 9 } }, next_msg())
nvim('unsubscribe', 'event2')
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())
+ eq({ 'notification', 'event1', { 13, 14, 15 } }, next_msg())
end)
it('does not crash for deeply nested variable', function()
meths.set_var('l', {})
local nest_level = 1000
meths.command(('call map(range(%u), "extend(g:, {\'l\': [g:l]})")'):format(nest_level - 1))
- eval('rpcnotify('..channel..', "event", g:l)')
+ eval('rpcnotify(' .. channel .. ', "event", g:l)')
local msg = next_msg()
eq('notification', msg[1])
eq('event', msg[2])
@@ -77,9 +76,9 @@ describe('notify', function()
end)
it('unsubscribe non-existing event #8745', function()
- clear{env={
- NVIM_LOG_FILE=testlog,
- }}
+ clear { env = {
+ NVIM_LOG_FILE = testlog,
+ } }
nvim('subscribe', 'event1')
nvim('unsubscribe', 'doesnotexist')
assert_log("tried to unsubscribe unknown event 'doesnotexist'", testlog, 10)
@@ -90,14 +89,24 @@ describe('notify', function()
it('cancels stale events on channel close', function()
local catchan = eval("jobstart(['cat'], {'rpc': v:true})")
local catpath = eval('exepath("cat")')
- eq({id=catchan, argv={catpath}, stream='job', mode='rpc', client = {}}, exec_lua ([[
+ eq(
+ { id = catchan, argv = { catpath }, stream = 'job', mode = 'rpc', client = {} },
+ exec_lua(
+ [[
vim.rpcnotify(..., "nvim_call_function", 'chanclose', {..., 'rpc'})
vim.rpcnotify(..., "nvim_subscribe", "daily_rant")
return vim.api.nvim_get_chan_info(...)
- ]], catchan))
+ ]],
+ catchan
+ )
+ )
assert_alive()
- eq({false, 'Invalid channel: '..catchan},
- exec_lua ([[ return {pcall(vim.rpcrequest, ..., 'nvim_eval', '1+1')}]], catchan))
- retry(nil, 3000, function() eq({}, meths.get_chan_info(catchan)) end) -- cat be dead :(
+ eq(
+ { false, 'Invalid channel: ' .. catchan },
+ exec_lua([[ return {pcall(vim.rpcrequest, ..., 'nvim_eval', '1+1')}]], catchan)
+ )
+ retry(nil, 3000, function()
+ eq({}, meths.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 1ad4ad3a02..421e0b5c9a 100644
--- a/test/functional/api/server_requests_spec.lua
+++ b/test/functional/api/server_requests_spec.lua
@@ -40,13 +40,13 @@ describe('server -> client', function()
describe('simple call', function()
it('works', function()
local function on_setup()
- eq({4, 5, 6}, eval('rpcrequest('..cid..', "scall", 1, 2, 3)'))
+ eq({ 4, 5, 6 }, eval('rpcrequest(' .. cid .. ', "scall", 1, 2, 3)'))
stop()
end
local function on_request(method, args)
eq('scall', method)
- eq({1, 2, 3}, args)
+ eq({ 1, 2, 3 }, args)
nvim('command', 'let g:result = [4, 5, 6]')
return eval('g:result')
end
@@ -61,14 +61,14 @@ describe('server -> client', function()
-- elements following the empty string.
it('works', function()
local function on_setup()
- eq({1, 2, '', 3, 'asdf'}, eval('rpcrequest('..cid..', "nstring")'))
+ eq({ 1, 2, '', 3, 'asdf' }, eval('rpcrequest(' .. cid .. ', "nstring")'))
stop()
end
local function on_request()
-- No need to evaluate the args, we are only interested in
-- a response that contains an array with an empty string.
- return {1, 2, '', 3, 'asdf'}
+ return { 1, 2, '', 3, 'asdf' }
end
run(on_request, nil, on_setup)
end)
@@ -81,7 +81,7 @@ describe('server -> client', function()
nvim('set_var', 'result2', 0)
nvim('set_var', 'result3', 0)
nvim('set_var', 'result4', 0)
- nvim('command', 'let g:result1 = rpcrequest('..cid..', "rcall", 2)')
+ nvim('command', 'let g:result1 = rpcrequest(' .. cid .. ', "rcall", 2)')
eq(4, nvim('get_var', 'result1'))
eq(8, nvim('get_var', 'result2'))
eq(16, nvim('get_var', 'result3'))
@@ -95,11 +95,11 @@ describe('server -> client', function()
if n <= 16 then
local cmd
if n == 4 then
- cmd = 'let g:result2 = rpcrequest('..cid..', "rcall", '..n..')'
+ cmd = 'let g:result2 = rpcrequest(' .. cid .. ', "rcall", ' .. n .. ')'
elseif n == 8 then
- cmd = 'let g:result3 = rpcrequest('..cid..', "rcall", '..n..')'
+ cmd = 'let g:result3 = rpcrequest(' .. cid .. ', "rcall", ' .. n .. ')'
elseif n == 16 then
- cmd = 'let g:result4 = rpcrequest('..cid..', "rcall", '..n..')'
+ cmd = 'let g:result4 = rpcrequest(' .. cid .. ', "rcall", ' .. n .. ')'
end
nvim('command', cmd)
end
@@ -113,18 +113,18 @@ 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', funcs.rpcrequest(cid, 'doit'))
stop()
end
local function on_request(method)
- if method == "doit" then
- funcs.rpcnotify(cid, "headsup")
- eq(true,received)
- return "retval"
+ if method == 'doit' then
+ funcs.rpcnotify(cid, 'headsup')
+ eq(true, received)
+ return 'retval'
end
end
local function on_notification(method)
- if method == "headsup" then
+ if method == 'headsup' then
received = true
end
end
@@ -148,28 +148,28 @@ describe('server -> client', function()
-- of nvim's request stack).
pending('will close connection if not properly synchronized', function()
local function on_setup()
- eq('notified!', eval('rpcrequest('..cid..', "notify")'))
+ eq('notified!', eval('rpcrequest(' .. cid .. ', "notify")'))
end
local function on_request(method)
- if method == "notify" then
- eq(1, eval('rpcnotify('..cid..', "notification")'))
+ if method == 'notify' then
+ eq(1, eval('rpcnotify(' .. cid .. ', "notification")'))
return 'notified!'
- elseif method == "nested" then
+ elseif method == 'nested' then
-- do some busywork, so the first request will return
-- before this one
for _ = 1, 5 do
assert_alive()
end
- eq(1, eval('rpcnotify('..cid..', "nested_done")'))
+ eq(1, eval('rpcnotify(' .. cid .. ', "nested_done")'))
return 'done!'
end
end
local function on_notification(method)
- if method == "notification" then
- eq('done!', eval('rpcrequest('..cid..', "nested")'))
- elseif method == "nested_done" then
+ if method == 'notification' then
+ eq('done!', eval('rpcrequest(' .. cid .. ', "nested")'))
+ elseif method == 'nested_done' then
ok(false, 'never sent', 'sent')
end
end
@@ -182,11 +182,17 @@ describe('server -> client', function()
describe('recursive (child) nvim client', function()
before_each(function()
- command("let vim = rpcstart('"..nvim_prog.."', ['-u', 'NONE', '-i', 'NONE', '--cmd', 'set noswapfile', '--embed', '--headless'])")
+ command(
+ "let vim = rpcstart('"
+ .. nvim_prog
+ .. "', ['-u', 'NONE', '-i', 'NONE', '--cmd', 'set noswapfile', '--embed', '--headless'])"
+ )
neq(0, eval('vim'))
end)
- after_each(function() command('call rpcstop(vim)') end)
+ after_each(function()
+ command('call rpcstop(vim)')
+ end)
it('can send/receive notifications and make requests', function()
nvim('command', "call rpcnotify(vim, 'vim_set_current_line', 'SOME TEXT')")
@@ -198,25 +204,27 @@ describe('server -> client', function()
end)
it('can communicate buffers, tabpages, and windows', function()
- eq({1}, eval("rpcrequest(vim, 'nvim_list_tabpages')"))
+ eq({ 1 }, eval("rpcrequest(vim, 'nvim_list_tabpages')"))
-- Window IDs start at 1000 (LOWEST_WIN_ID in window.h)
- eq({1000}, eval("rpcrequest(vim, 'nvim_list_wins')"))
+ eq({ 1000 }, eval("rpcrequest(vim, 'nvim_list_wins')"))
local buf = eval("rpcrequest(vim, 'nvim_list_bufs')")[1]
eq(1, buf)
- eval("rpcnotify(vim, 'buffer_set_line', "..buf..", 0, 'SOME TEXT')")
- nvim('command', "call rpcrequest(vim, 'vim_eval', '0')") -- wait
+ eval("rpcnotify(vim, 'buffer_set_line', " .. buf .. ", 0, 'SOME TEXT')")
+ nvim('command', "call rpcrequest(vim, 'vim_eval', '0')") -- wait
- eq('SOME TEXT', eval("rpcrequest(vim, 'buffer_get_line', "..buf..", 0)"))
+ eq('SOME TEXT', eval("rpcrequest(vim, 'buffer_get_line', " .. buf .. ', 0)'))
-- Call get_lines(buf, range [0,0], strict_indexing)
- eq({'SOME TEXT'}, eval("rpcrequest(vim, 'buffer_get_lines', "..buf..", 0, 1, 1)"))
+ eq({ 'SOME TEXT' }, eval("rpcrequest(vim, 'buffer_get_lines', " .. buf .. ', 0, 1, 1)'))
end)
it('returns an error if the request failed', function()
- eq("Vim:Error invoking 'does-not-exist' on channel 3:\nInvalid method: does-not-exist",
- pcall_err(eval, "rpcrequest(vim, 'does-not-exist')"))
+ eq(
+ "Vim:Error invoking 'does-not-exist' on channel 3:\nInvalid method: does-not-exist",
+ pcall_err(eval, "rpcrequest(vim, 'does-not-exist')")
+ )
end)
end)
@@ -236,13 +244,14 @@ describe('server -> client', function()
\ 'rpc': v:true
\ }
]])
- meths.set_var("args", {
- nvim_prog, '-ll',
+ meths.set_var('args', {
+ nvim_prog,
+ '-ll',
'test/functional/api/rpc_fixture.lua',
package.path,
package.cpath,
})
- jobid = eval("jobstart(g:args, g:job_opts)")
+ jobid = eval('jobstart(g:args, g:job_opts)')
neq(0, jobid)
end)
@@ -250,7 +259,9 @@ describe('server -> client', function()
pcall(funcs.jobstop, jobid)
end)
- if helpers.skip(helpers.is_os('win')) then return end
+ if helpers.skip(helpers.is_os('win')) then
+ return
+ end
it('rpc and text stderr can be combined', function()
local status, rv = pcall(funcs.rpcrequest, jobid, 'poll')
@@ -258,18 +269,18 @@ describe('server -> client', function()
error(string.format('missing nvim Lua module? (%s)', rv))
end
eq('ok', rv)
- funcs.rpcnotify(jobid, "ping")
- eq({'notification', 'pong', {}}, next_msg())
- eq("done!",funcs.rpcrequest(jobid, "write_stderr", "fluff\n"))
- eq({'notification', 'stderr', {0, {'fluff', ''}}}, next_msg())
- pcall(funcs.rpcrequest, jobid, "exit")
- eq({'notification', 'stderr', {0, {''}}}, next_msg())
- eq({'notification', 'exit', {0, 0}}, next_msg())
+ funcs.rpcnotify(jobid, 'ping')
+ eq({ 'notification', 'pong', {} }, next_msg())
+ eq('done!', funcs.rpcrequest(jobid, 'write_stderr', 'fluff\n'))
+ eq({ 'notification', 'stderr', { 0, { 'fluff', '' } } }, next_msg())
+ pcall(funcs.rpcrequest, jobid, 'exit')
+ eq({ 'notification', 'stderr', { 0, { '' } } }, next_msg())
+ eq({ 'notification', 'exit', { 0, 0 } }, next_msg())
end)
end)
describe('connecting to another (peer) nvim', function()
- local nvim_argv = merge_args(helpers.nvim_argv, {'--headless'})
+ local nvim_argv = merge_args(helpers.nvim_argv, { '--headless' })
local function connect_test(server, mode, address)
local serverpid = funcs.getpid()
local client = spawn(nvim_argv, false, nil, true)
@@ -277,7 +288,7 @@ describe('server -> client', function()
local clientpid = funcs.getpid()
neq(serverpid, clientpid)
- local id = funcs.sockconnect(mode, address, {rpc=true})
+ local id = funcs.sockconnect(mode, address, { rpc = true })
ok(id > 0)
funcs.rpcrequest(id, 'nvim_set_current_line', 'hello')
@@ -303,7 +314,7 @@ describe('server -> client', function()
local server = spawn(nvim_argv)
set_session(server)
local address = funcs.serverlist()[1]
- local first = string.sub(address,1,1)
+ local first = string.sub(address, 1, 1)
ok(first == '/' or first == '\\')
connect_test(server, 'pipe', address)
end)
@@ -311,11 +322,11 @@ 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(funcs.serverstart, '127.0.0.1:')
if not status then
pending('no ipv4 stack')
end
- eq('127.0.0.1:', string.sub(address,1,10))
+ eq('127.0.0.1:', string.sub(address, 1, 10))
connect_test(server, 'tcp', address)
end)
@@ -326,15 +337,15 @@ describe('server -> client', function()
if not status then
pending('no ipv6 stack')
end
- eq('::1:', string.sub(address,1,4))
+ eq('::1:', string.sub(address, 1, 4))
connect_test(server, 'tcp', address)
end)
it('via hostname', function()
local server = spawn(nvim_argv)
set_session(server)
- local address = funcs.serverstart("localhost:")
- eq('localhost:', string.sub(address,1,10))
+ local address = funcs.serverstart('localhost:')
+ eq('localhost:', string.sub(address, 1, 10))
connect_test(server, 'tcp', address)
end)
@@ -345,7 +356,7 @@ describe('server -> client', function()
local client = spawn(nvim_argv, false, nil, true)
set_session(client)
- local id = funcs.sockconnect('pipe', address, {rpc=true})
+ local id = funcs.sockconnect('pipe', address, { rpc = true })
funcs.rpcrequest(id, 'nvim_ui_attach', 80, 24, {})
assert_alive()
@@ -357,15 +368,15 @@ describe('server -> client', function()
describe('connecting to its own pipe address', function()
it('does not deadlock', function()
local address = funcs.serverlist()[1]
- local first = string.sub(address,1,1)
+ local first = string.sub(address, 1, 1)
ok(first == '/' or first == '\\')
local serverpid = funcs.getpid()
- local id = funcs.sockconnect('pipe', address, {rpc=true})
+ local id = funcs.sockconnect('pipe', address, { rpc = true })
funcs.rpcrequest(id, 'nvim_set_current_line', 'hello')
eq('hello', meths.get_current_line())
- eq(serverpid, funcs.rpcrequest(id, "nvim_eval", "getpid()"))
+ eq(serverpid, funcs.rpcrequest(id, 'nvim_eval', 'getpid()'))
eq(id, funcs.rpcrequest(id, 'nvim_get_api_info')[1])
end)
diff --git a/test/functional/api/tabpage_spec.lua b/test/functional/api/tabpage_spec.lua
index 20b3163d95..d6fc041e83 100644
--- a/test/functional/api/tabpage_spec.lua
+++ b/test/functional/api/tabpage_spec.lua
@@ -1,7 +1,6 @@
local helpers = require('test.functional.helpers')(after_each)
local clear, nvim, tabpage, curtab, eq, ok =
- helpers.clear, helpers.nvim, helpers.tabpage, helpers.curtab, helpers.eq,
- helpers.ok
+ helpers.clear, helpers.nvim, helpers.tabpage, helpers.curtab, helpers.eq, helpers.ok
local curtabmeths = helpers.curtabmeths
local funcs = helpers.funcs
local request = helpers.request
@@ -18,8 +17,8 @@ describe('api/tabpage', function()
nvim('command', 'vsplit')
local tab1, tab2 = unpack(nvim('list_tabpages'))
local win1, win2, win3 = unpack(nvim('list_wins'))
- eq({win1}, tabpage('list_wins', tab1))
- eq({win2, win3}, tabpage('list_wins', tab2))
+ eq({ win1 }, tabpage('list_wins', tab1))
+ eq({ win2, win3 }, tabpage('list_wins', tab2))
eq(win2, tabpage('get_win', tab2))
nvim('set_current_win', win3)
eq(win3, tabpage('get_win', tab2))
@@ -32,9 +31,9 @@ describe('api/tabpage', function()
describe('{get,set,del}_var', function()
it('works', function()
- curtab('set_var', 'lua', {1, 2, {['3'] = 1}})
- eq({1, 2, {['3'] = 1}}, curtab('get_var', 'lua'))
- eq({1, 2, {['3'] = 1}}, nvim('eval', 't:lua'))
+ curtab('set_var', 'lua', { 1, 2, { ['3'] = 1 } })
+ eq({ 1, 2, { ['3'] = 1 } }, curtab('get_var', 'lua'))
+ eq({ 1, 2, { ['3'] = 1 } }, nvim('eval', 't:lua'))
eq(1, funcs.exists('t:lua'))
curtabmeths.del_var('lua')
eq(0, funcs.exists('t:lua'))
@@ -46,16 +45,16 @@ describe('api/tabpage', function()
end)
it('tabpage_set_var returns the old value', function()
- local val1 = {1, 2, {['3'] = 1}}
- local val2 = {4, 7}
+ local val1 = { 1, 2, { ['3'] = 1 } }
+ local val2 = { 4, 7 }
eq(NIL, request('tabpage_set_var', 0, 'lua', val1))
eq(val1, request('tabpage_set_var', 0, 'lua', val2))
end)
it('tabpage_del_var returns the old value', function()
- local val1 = {1, 2, {['3'] = 1}}
- local val2 = {4, 7}
- eq(NIL, request('tabpage_set_var', 0, 'lua', val1))
+ local val1 = { 1, 2, { ['3'] = 1 } }
+ local val2 = { 4, 7 }
+ eq(NIL, request('tabpage_set_var', 0, 'lua', val1))
eq(val1, request('tabpage_set_var', 0, 'lua', val2))
eq(val2, request('tabpage_del_var', 0, 'lua'))
end)
diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua
index 6efb6726fe..dafbbe550f 100644
--- a/test/functional/api/ui_spec.lua
+++ b/test/functional/api/ui_spec.lua
@@ -23,42 +23,56 @@ describe('nvim_ui_attach()', function()
end)
it('validation', function()
- eq('No such UI option: foo',
- pcall_err(meths.ui_attach, 80, 24, { foo={'foo'} }))
+ eq('No such UI option: foo', pcall_err(meths.ui_attach, 80, 24, { foo = { 'foo' } }))
- eq("Invalid 'ext_linegrid': expected Boolean, got Array",
- pcall_err(meths.ui_attach, 80, 24, { ext_linegrid={} }))
- eq("Invalid 'override': expected Boolean, got Array",
- pcall_err(meths.ui_attach, 80, 24, { override={} }))
- eq("Invalid 'rgb': expected Boolean, got Array",
- pcall_err(meths.ui_attach, 80, 24, { rgb={} }))
- eq("Invalid 'term_name': expected String, got Boolean",
- pcall_err(meths.ui_attach, 80, 24, { term_name=true }))
- eq("Invalid 'term_colors': expected Integer, got Boolean",
- pcall_err(meths.ui_attach, 80, 24, { term_colors=true }))
- eq("Invalid 'stdin_fd': expected Integer, got String",
- pcall_err(meths.ui_attach, 80, 24, { stdin_fd='foo' }))
- eq("Invalid 'stdin_tty': expected Boolean, got String",
- pcall_err(meths.ui_attach, 80, 24, { stdin_tty='foo' }))
- eq("Invalid 'stdout_tty': expected Boolean, got String",
- pcall_err(meths.ui_attach, 80, 24, { stdout_tty='foo' }))
+ eq(
+ "Invalid 'ext_linegrid': expected Boolean, got Array",
+ pcall_err(meths.ui_attach, 80, 24, { ext_linegrid = {} })
+ )
+ eq(
+ "Invalid 'override': expected Boolean, got Array",
+ pcall_err(meths.ui_attach, 80, 24, { override = {} })
+ )
+ eq(
+ "Invalid 'rgb': expected Boolean, got Array",
+ pcall_err(meths.ui_attach, 80, 24, { rgb = {} })
+ )
+ eq(
+ "Invalid 'term_name': expected String, got Boolean",
+ pcall_err(meths.ui_attach, 80, 24, { term_name = true })
+ )
+ eq(
+ "Invalid 'term_colors': expected Integer, got Boolean",
+ pcall_err(meths.ui_attach, 80, 24, { term_colors = true })
+ )
+ eq(
+ "Invalid 'stdin_fd': expected Integer, got String",
+ pcall_err(meths.ui_attach, 80, 24, { stdin_fd = 'foo' })
+ )
+ eq(
+ "Invalid 'stdin_tty': expected Boolean, got String",
+ pcall_err(meths.ui_attach, 80, 24, { stdin_tty = 'foo' })
+ )
+ eq(
+ "Invalid 'stdout_tty': expected Boolean, got String",
+ pcall_err(meths.ui_attach, 80, 24, { stdout_tty = 'foo' })
+ )
- eq('UI not attached to channel: 1',
- pcall_err(request, 'nvim_ui_try_resize', 40, 10))
- eq('UI not attached to channel: 1',
- pcall_err(request, 'nvim_ui_set_option', 'rgb', true))
- eq('UI not attached to channel: 1',
- pcall_err(request, 'nvim_ui_detach'))
+ eq('UI not attached to channel: 1', pcall_err(request, 'nvim_ui_try_resize', 40, 10))
+ eq('UI not attached to channel: 1', pcall_err(request, 'nvim_ui_set_option', 'rgb', true))
+ eq('UI not attached to channel: 1', pcall_err(request, 'nvim_ui_detach'))
local screen = Screen.new()
- screen:attach({rgb=false})
- eq('UI already attached to channel: 1',
- pcall_err(request, 'nvim_ui_attach', 40, 10, { rgb=false }))
+ screen:attach({ rgb = false })
+ eq(
+ 'UI already attached to channel: 1',
+ pcall_err(request, 'nvim_ui_attach', 40, 10, { rgb = false })
+ )
end)
end)
it('autocmds UIEnter/UILeave', function()
- clear{args_rm={'--headless'}}
+ clear { args_rm = { '--headless' } }
exec([[
let g:evs = []
autocmd UIEnter * call add(g:evs, "UIEnter") | let g:uienter_ev = deepcopy(v:event)
@@ -67,9 +81,9 @@ it('autocmds UIEnter/UILeave', function()
]])
local screen = Screen.new()
screen:attach()
- eq({chan=1}, eval('g:uienter_ev'))
+ eq({ chan = 1 }, eval('g:uienter_ev'))
screen:detach()
- eq({chan=1}, eval('g:uileave_ev'))
+ eq({ chan = 1 }, eval('g:uileave_ev'))
eq({
'VimEnter',
'UIEnter',
@@ -89,21 +103,27 @@ it('autocmds VimSuspend/VimResume #22041', function()
eq(false, screen.suspended)
feed('<C-Z>')
- screen:expect(function() eq(true, screen.suspended) end)
+ screen:expect(function()
+ eq(true, screen.suspended)
+ end)
eq({ 's' }, eval('g:ev'))
screen.suspended = false
feed('<Ignore>')
eq({ 's', 'r' }, eval('g:ev'))
command('suspend')
- screen:expect(function() eq(true, screen.suspended) end)
+ screen:expect(function()
+ eq(true, screen.suspended)
+ end)
eq({ 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
meths.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)
+ screen:expect(function()
+ eq(true, screen.suspended)
+ end)
meths.ui_set_focus(false)
eq({ 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
@@ -111,7 +131,9 @@ it('autocmds VimSuspend/VimResume #22041', function()
eq({ 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev'))
command('suspend | suspend | suspend')
- screen:expect(function() eq(true, screen.suspended) end)
+ screen:expect(function()
+ eq(true, screen.suspended)
+ end)
screen:detach()
eq({ 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev'))
screen.suspended = false
diff --git a/test/functional/api/version_spec.lua b/test/functional/api/version_spec.lua
index 6d466b0cc1..76cdb9cbca 100644
--- a/test/functional/api/version_spec.lua
+++ b/test/functional/api/version_spec.lua
@@ -19,41 +19,40 @@ end
describe("api_info()['version']", function()
before_each(clear)
- it("returns API level", function()
+ it('returns API level', function()
local version = call('api_info')['version']
local current = version['api_level']
- local compat = version['api_compatible']
- eq("number", type(current))
- eq("number", type(compat))
+ local compat = version['api_compatible']
+ eq('number', type(current))
+ eq('number', type(compat))
assert(current >= compat)
end)
- it("returns Nvim version", function()
+ it('returns Nvim version', function()
local version = call('api_info')['version']
- local major = version['major']
- local minor = version['minor']
- local patch = version['patch']
+ local major = version['major']
+ local minor = version['minor']
+ local patch = version['patch']
local prerelease = version['prerelease']
- local build = version['build']
- eq("number", type(major))
- 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))
+ local build = version['build']
+ eq('number', type(major))
+ 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))
assert(build == nil or type(build) == 'string')
end)
end)
-
-describe("api metadata", function()
+describe('api metadata', function()
before_each(clear)
local function name_table(entries)
local by_name = {}
- for _,e in ipairs(entries) do
+ for _, e in ipairs(entries) do
by_name[e.name] = e
end
return by_name
@@ -63,10 +62,10 @@ describe("api metadata", function()
local function filter_function_metadata(f)
f.deprecated_since = nil
for idx, _ in ipairs(f.parameters) do
- f.parameters[idx][2] = '' -- Remove parameter name.
+ f.parameters[idx][2] = '' -- Remove parameter name.
end
- if string.sub(f.name, 1, 4) ~= "nvim" then
+ if string.sub(f.name, 1, 4) ~= 'nvim' then
f.method = nil
end
return f
@@ -76,7 +75,7 @@ describe("api metadata", function()
-- check types of existing params are the same
-- adding parameters is ok, but removing params is not (gives nil error)
eq(old_e.since, new_e.since, old_e.name)
- for i,p in ipairs(old_e.parameters) do
+ for i, p in ipairs(old_e.parameters) do
eq(new_e.parameters[i][1], p[1], old_e.name)
end
end
@@ -95,25 +94,27 @@ describe("api metadata", function()
local api, compat, stable, api_level
local old_api = {}
setup(function()
- clear() -- Ensure a session before requesting api_info.
+ clear() -- Ensure a session before requesting api_info.
api = meths.get_api_info()[2]
- compat = api.version.api_compatible
+ compat = api.version.api_compatible
api_level = api.version.api_level
if api.version.api_prerelease then
- stable = api_level-1
+ stable = api_level - 1
else
stable = api_level
end
for level = compat, stable do
- local path = ('test/functional/fixtures/api_level_'..
- tostring(level)..'.mpack')
+ local path = ('test/functional/fixtures/api_level_' .. tostring(level) .. '.mpack')
old_api[level] = read_mpack_file(path)
if old_api[level] == nil then
- local errstr = "missing metadata fixture for stable level "..level..". "
+ local errstr = 'missing metadata fixture for stable level ' .. level .. '. '
if level == api_level and not api.version.api_prerelease then
- errstr = (errstr.."If NVIM_API_CURRENT was bumped, "..
- "don't forget to set NVIM_API_PRERELEASE to true.")
+ errstr = (
+ errstr
+ .. 'If NVIM_API_CURRENT was bumped, '
+ .. "don't forget to set NVIM_API_PRERELEASE to true."
+ )
end
error(errstr)
end
@@ -124,60 +125,76 @@ describe("api metadata", function()
end
end)
- it("functions are compatible with old metadata or have new level", function()
+ it('functions are compatible with old metadata or have new level', function()
local funcs_new = name_table(api.functions)
local funcs_compat = {}
for level = compat, stable do
- for _,f in ipairs(old_api[level].functions) do
+ for _, f in ipairs(old_api[level].functions) do
if funcs_new[f.name] == nil then
if f.since >= compat then
- error('function '..f.name..' was removed but exists in level '..
- f.since..' which nvim should be compatible with')
+ error(
+ 'function '
+ .. f.name
+ .. ' was removed but exists in level '
+ .. f.since
+ .. ' which nvim should be compatible with'
+ )
end
else
- eq(filter_function_metadata(f),
- filter_function_metadata(funcs_new[f.name]))
+ eq(filter_function_metadata(f), filter_function_metadata(funcs_new[f.name]))
end
end
funcs_compat[level] = name_table(old_api[level].functions)
end
- for _,f in ipairs(api.functions) do
+ for _, f in ipairs(api.functions) do
if f.since <= stable then
local f_old = funcs_compat[f.since][f.name]
if f_old == nil then
- if string.sub(f.name, 1, 4) == "nvim" then
- local errstr = ("function "..f.name.." has too low since value. "..
- "For new functions set it to "..(stable+1)..".")
+ if string.sub(f.name, 1, 4) == 'nvim' then
+ local errstr = (
+ 'function '
+ .. f.name
+ .. ' has too low since value. '
+ .. 'For new functions set it to '
+ .. (stable + 1)
+ .. '.'
+ )
if not api.version.api_prerelease then
- errstr = (errstr.." Also bump NVIM_API_CURRENT and set "..
- "NVIM_API_PRERELEASE to true in CMakeLists.txt.")
+ errstr = (
+ errstr
+ .. ' Also bump NVIM_API_CURRENT and set '
+ .. 'NVIM_API_PRERELEASE to true in CMakeLists.txt.'
+ )
end
error(errstr)
else
- error("function name '"..f.name.."' doesn't begin with 'nvim_'")
+ error("function name '" .. f.name .. "' doesn't begin with 'nvim_'")
end
end
elseif f.since > api_level then
if api.version.api_prerelease then
- error("New function "..f.name.." should use since value "..
- api_level)
+ error('New function ' .. f.name .. ' should use since value ' .. api_level)
else
- error("function "..f.name.." has since value > api_level. "..
- "Bump NVIM_API_CURRENT and set "..
- "NVIM_API_PRERELEASE to true in CMakeLists.txt.")
+ error(
+ 'function '
+ .. f.name
+ .. ' has since value > api_level. '
+ .. 'Bump NVIM_API_CURRENT and set '
+ .. 'NVIM_API_PRERELEASE to true in CMakeLists.txt.'
+ )
end
end
end
end)
- it("UI events are compatible with old metadata or have new level", function()
+ 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_compat = {}
-- UI events were formalized in level 3
for level = 3, stable do
- for _,e in ipairs(old_api[level].ui_events) do
+ for _, e in ipairs(old_api[level].ui_events) do
local new_e = ui_events_new[e.name]
if new_e ~= nil then
check_ui_event_compatible(e, new_e)
@@ -186,32 +203,44 @@ 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.ui_events) do
if e.since <= stable then
local e_old = ui_events_compat[e.since][e.name]
if e_old == nil then
- local errstr = ("UI event "..e.name.." has too low since value. "..
- "For new events set it to "..(stable+1)..".")
+ local errstr = (
+ 'UI event '
+ .. e.name
+ .. ' has too low since value. '
+ .. 'For new events set it to '
+ .. (stable + 1)
+ .. '.'
+ )
if not api.version.api_prerelease then
- errstr = (errstr.." Also bump NVIM_API_CURRENT and set "..
- "NVIM_API_PRERELEASE to true in CMakeLists.txt.")
+ errstr = (
+ errstr
+ .. ' Also bump NVIM_API_CURRENT and set '
+ .. 'NVIM_API_PRERELEASE to true in CMakeLists.txt.'
+ )
end
error(errstr)
end
elseif e.since > api_level then
if api.version.api_prerelease then
- error("New UI event "..e.name.." should use since value "..
- api_level)
+ error('New UI event ' .. e.name .. ' should use since value ' .. api_level)
else
- error("UI event "..e.name.." has since value > api_level. "..
- "Bump NVIM_API_CURRENT and set "..
- "NVIM_API_PRERELEASE to true in CMakeLists.txt.")
+ error(
+ 'UI event '
+ .. e.name
+ .. ' has since value > api_level. '
+ .. 'Bump NVIM_API_CURRENT and set '
+ .. 'NVIM_API_PRERELEASE to true in CMakeLists.txt.'
+ )
end
end
end
end)
- it("ui_options are preserved from older levels", function()
+ it('ui_options are preserved from older levels', function()
local available_options = {}
for _, option in ipairs(api.ui_options) do
available_options[option] = true
@@ -220,7 +249,7 @@ describe("api metadata", function()
for level = 4, stable do
for _, option in ipairs(old_api[level].ui_options) do
if not available_options[option] then
- error("UI option "..option.." from stable metadata is missing")
+ error('UI option ' .. option .. ' from stable metadata is missing')
end
end
end
diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua
index f44326d0eb..7e92dd6bf3 100644
--- a/test/functional/api/window_spec.lua
+++ b/test/functional/api/window_spec.lua
@@ -1,9 +1,18 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
-local clear, nvim, curbuf, curbuf_contents, window, curwin, eq, neq,
- ok, feed, insert, eval, tabpage = helpers.clear, helpers.nvim, helpers.curbuf,
- helpers.curbuf_contents, helpers.window, helpers.curwin, helpers.eq,
- helpers.neq, helpers.ok, helpers.feed, helpers.insert, helpers.eval,
+local clear, nvim, curbuf, curbuf_contents, window, curwin, eq, neq, ok, feed, insert, eval, tabpage =
+ helpers.clear,
+ helpers.nvim,
+ helpers.curbuf,
+ helpers.curbuf_contents,
+ helpers.window,
+ helpers.curwin,
+ helpers.eq,
+ helpers.neq,
+ helpers.ok,
+ helpers.feed,
+ helpers.insert,
+ helpers.eval,
helpers.tabpage
local poke_eventloop = helpers.poke_eventloop
local curwinmeths = helpers.curwinmeths
@@ -25,8 +34,7 @@ describe('API/win', function()
nvim('command', 'new')
nvim('set_current_win', nvim('list_wins')[2])
eq(curbuf(), window('get_buf', nvim('list_wins')[2]))
- neq(window('get_buf', nvim('list_wins')[1]),
- window('get_buf', nvim('list_wins')[2]))
+ neq(window('get_buf', nvim('list_wins')[1]), window('get_buf', nvim('list_wins')[2]))
end)
end)
@@ -48,15 +56,25 @@ describe('API/win', function()
local new_buf = meths.create_buf(true, true)
local old_win = meths.get_current_win()
local new_win = meths.open_win(new_buf, false, {
- relative='editor', row=10, col=10, width=50, height=10,
+ relative = 'editor',
+ row = 10,
+ col = 10,
+ width = 50,
+ height = 10,
})
feed('q:')
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.win_set_buf, 0, new_buf))
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.win_set_buf, old_win, new_buf))
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.win_set_buf, new_win, 0))
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.win_set_buf, 0, new_buf)
+ )
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.win_set_buf, old_win, new_buf)
+ )
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.win_set_buf, new_win, 0)
+ )
local next_buf = meths.create_buf(true, true)
meths.win_set_buf(new_win, next_buf)
@@ -66,63 +84,70 @@ describe('API/win', function()
describe('{get,set}_cursor', function()
it('works', function()
- eq({1, 0}, curwin('get_cursor'))
+ eq({ 1, 0 }, curwin('get_cursor'))
nvim('command', 'normal ityping\027o some text')
eq('typing\n some text', curbuf_contents())
- eq({2, 10}, curwin('get_cursor'))
- curwin('set_cursor', {2, 6})
+ eq({ 2, 10 }, curwin('get_cursor'))
+ curwin('set_cursor', { 2, 6 })
nvim('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.win_set_cursor, 1, {"b\na"}))
+ eq('Invalid window id: 1', pcall_err(meths.win_set_cursor, 1, { 'b\na' }))
end)
it('updates the screen, and also when the window is unfocused', function()
local screen = Screen.new(30, 9)
screen:set_default_attr_ids({
- [1] = {bold = true, foreground = Screen.colors.Blue},
- [2] = {bold = true, reverse = true};
- [3] = {reverse = true};
+ [1] = { bold = true, foreground = Screen.colors.Blue },
+ [2] = { bold = true, reverse = true },
+ [3] = { reverse = true },
})
screen:attach()
- insert("prologue")
+ insert('prologue')
feed('100o<esc>')
- insert("epilogue")
+ insert('epilogue')
local win = curwin()
feed('gg')
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
^prologue |
|*8
- ]]}
+ ]],
+ }
-- cursor position is at beginning
- eq({1, 0}, window('get_cursor', win))
+ eq({ 1, 0 }, window('get_cursor', win))
-- move cursor to end
- window('set_cursor', win, {101, 0})
- screen:expect{grid=[[
+ window('set_cursor', win, { 101, 0 })
+ screen:expect {
+ grid = [[
|*7
^epilogue |
|
- ]]}
+ ]],
+ }
-- move cursor to the beginning again
- window('set_cursor', win, {1, 0})
- screen:expect{grid=[[
+ window('set_cursor', win, { 1, 0 })
+ screen:expect {
+ grid = [[
^prologue |
|*8
- ]]}
+ ]],
+ }
-- move focus to new window
- nvim('command',"new")
+ nvim('command', 'new')
neq(win, curwin())
-- sanity check, cursor position is kept
- eq({1, 0}, window('get_cursor', win))
- screen:expect{grid=[[
+ eq({ 1, 0 }, window('get_cursor', win))
+ screen:expect {
+ grid = [[
^ |
{1:~ }|*2
{2:[No Name] }|
@@ -130,11 +155,13 @@ describe('API/win', function()
|*2
{3:[No Name] [+] }|
|
- ]]}
+ ]],
+ }
-- move cursor to end
- window('set_cursor', win, {101, 0})
- screen:expect{grid=[[
+ window('set_cursor', win, { 101, 0 })
+ screen:expect {
+ grid = [[
^ |
{1:~ }|*2
{2:[No Name] }|
@@ -142,11 +169,13 @@ describe('API/win', function()
epilogue |
{3:[No Name] [+] }|
|
- ]]}
+ ]],
+ }
-- move cursor to the beginning again
- window('set_cursor', win, {1, 0})
- screen:expect{grid=[[
+ window('set_cursor', win, { 1, 0 })
+ screen:expect {
+ grid = [[
^ |
{1:~ }|*2
{2:[No Name] }|
@@ -154,42 +183,43 @@ describe('API/win', function()
|*2
{3:[No Name] [+] }|
|
- ]]}
+ ]],
+ }
-- curwin didn't change back
neq(win, curwin())
end)
it('remembers what column it wants to be in', function()
- insert("first line")
+ insert('first line')
feed('o<esc>')
- insert("second line")
+ insert('second line')
feed('gg')
poke_eventloop() -- let nvim process the 'gg' command
-- cursor position is at beginning
local win = curwin()
- eq({1, 0}, window('get_cursor', win))
+ eq({ 1, 0 }, window('get_cursor', win))
-- move cursor to column 5
- window('set_cursor', win, {1, 5})
+ window('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}, window('get_cursor', win))
+ eq({ 2, 5 }, window('get_cursor', win))
end)
it('updates cursorline and statusline ruler in non-current window', function()
local screen = Screen.new(60, 8)
screen:set_default_attr_ids({
- [1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText
- [2] = {background = Screen.colors.Grey90}, -- CursorLine
- [3] = {bold = true, reverse = true}, -- StatusLine
- [4] = {reverse = true}, -- StatusLineNC
+ [1] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
+ [2] = { background = Screen.colors.Grey90 }, -- CursorLine
+ [3] = { bold = true, reverse = true }, -- StatusLine
+ [4] = { reverse = true }, -- StatusLineNC
})
screen:attach()
command('set ruler')
@@ -210,7 +240,7 @@ describe('API/win', function()
{3:[No Name] [+] 4,3 All }{4:[No Name] [+] 4,3 All}|
|
]])
- window('set_cursor', oldwin, {1, 0})
+ window('set_cursor', oldwin, { 1, 0 })
screen:expect([[
aaa │{2:aaa }|
bbb │bbb |
@@ -225,10 +255,10 @@ describe('API/win', function()
it('updates cursorcolumn in non-current window', function()
local screen = Screen.new(60, 8)
screen:set_default_attr_ids({
- [1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText
- [2] = {background = Screen.colors.Grey90}, -- CursorColumn
- [3] = {bold = true, reverse = true}, -- StatusLine
- [4] = {reverse = true}, -- StatusLineNC
+ [1] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
+ [2] = { background = Screen.colors.Grey90 }, -- CursorColumn
+ [3] = { bold = true, reverse = true }, -- StatusLine
+ [4] = { reverse = true }, -- StatusLineNC
})
screen:attach()
command('set cursorcolumn')
@@ -248,7 +278,7 @@ describe('API/win', function()
{3:[No Name] [+] }{4:[No Name] [+] }|
|
]])
- window('set_cursor', oldwin, {2, 0})
+ window('set_cursor', oldwin, { 2, 0 })
screen:expect([[
aa{2:a} │{2:a}aa |
bb{2:b} │bbb |
@@ -264,12 +294,13 @@ describe('API/win', function()
describe('{get,set}_height', function()
it('works', function()
nvim('command', 'vsplit')
- eq(window('get_height', nvim('list_wins')[2]),
- window('get_height', nvim('list_wins')[1]))
+ eq(window('get_height', nvim('list_wins')[2]), window('get_height', nvim('list_wins')[1]))
nvim('set_current_win', nvim('list_wins')[2])
nvim('command', 'split')
- eq(window('get_height', nvim('list_wins')[2]),
- math.floor(window('get_height', nvim('list_wins')[1]) / 2))
+ eq(
+ window('get_height', nvim('list_wins')[2]),
+ math.floor(window('get_height', nvim('list_wins')[1]) / 2)
+ )
window('set_height', nvim('list_wins')[2], 2)
eq(2, window('get_height', nvim('list_wins')[2]))
end)
@@ -310,12 +341,13 @@ describe('API/win', function()
describe('{get,set}_width', function()
it('works', function()
nvim('command', 'split')
- eq(window('get_width', nvim('list_wins')[2]),
- window('get_width', nvim('list_wins')[1]))
+ eq(window('get_width', nvim('list_wins')[2]), window('get_width', nvim('list_wins')[1]))
nvim('set_current_win', nvim('list_wins')[2])
nvim('command', 'vsplit')
- eq(window('get_width', nvim('list_wins')[2]),
- math.floor(window('get_width', nvim('list_wins')[1]) / 2))
+ eq(
+ window('get_width', nvim('list_wins')[2]),
+ math.floor(window('get_width', nvim('list_wins')[1]) / 2)
+ )
window('set_width', nvim('list_wins')[2], 2)
eq(2, window('get_width', nvim('list_wins')[2]))
end)
@@ -339,9 +371,9 @@ describe('API/win', function()
describe('{get,set,del}_var', function()
it('works', function()
- curwin('set_var', 'lua', {1, 2, {['3'] = 1}})
- eq({1, 2, {['3'] = 1}}, curwin('get_var', 'lua'))
- eq({1, 2, {['3'] = 1}}, nvim('eval', 'w:lua'))
+ curwin('set_var', 'lua', { 1, 2, { ['3'] = 1 } })
+ eq({ 1, 2, { ['3'] = 1 } }, curwin('get_var', 'lua'))
+ eq({ 1, 2, { ['3'] = 1 } }, nvim('eval', 'w:lua'))
eq(1, funcs.exists('w:lua'))
curwinmeths.del_var('lua')
eq(0, funcs.exists('w:lua'))
@@ -353,16 +385,16 @@ describe('API/win', function()
end)
it('window_set_var returns the old value', function()
- local val1 = {1, 2, {['3'] = 1}}
- local val2 = {4, 7}
+ local val1 = { 1, 2, { ['3'] = 1 } }
+ local val2 = { 4, 7 }
eq(NIL, request('window_set_var', 0, 'lua', val1))
eq(val1, request('window_set_var', 0, 'lua', val2))
end)
it('window_del_var returns the old value', function()
- local val1 = {1, 2, {['3'] = 1}}
- local val2 = {4, 7}
- eq(NIL, request('window_set_var', 0, 'lua', val1))
+ local val1 = { 1, 2, { ['3'] = 1 } }
+ local val2 = { 4, 7 }
+ eq(NIL, request('window_set_var', 0, 'lua', val1))
eq(val1, request('window_set_var', 0, 'lua', val2))
eq(val2, request('window_del_var', 0, 'lua'))
end)
@@ -372,18 +404,18 @@ describe('API/win', function()
it('works', function()
nvim('set_option_value', 'colorcolumn', '4,3', {})
eq('4,3', nvim('get_option_value', 'colorcolumn', {}))
- command("set modified hidden")
- command("enew") -- edit new buffer, window option is preserved
+ command('set modified hidden')
+ command('enew') -- edit new buffer, window option is preserved
eq('4,3', nvim('get_option_value', 'colorcolumn', {}))
-- global-local option
- nvim('set_option_value', 'statusline', 'window-status', {win=0})
- eq('window-status', nvim('get_option_value', 'statusline', {win=0}))
- eq('', nvim('get_option_value', 'statusline', {scope='global'}))
- command("set modified")
- command("enew") -- global-local: not preserved in new buffer
+ nvim('set_option_value', 'statusline', 'window-status', { win = 0 })
+ eq('window-status', nvim('get_option_value', 'statusline', { win = 0 }))
+ eq('', 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('', nvim('get_option_value', 'statusline', {win = 0}))
+ eq('', nvim('get_option_value', 'statusline', { win = 0 }))
eq('', eval('&l:statusline'))
end)
@@ -391,16 +423,16 @@ describe('API/win', function()
nvim('command', 'tabnew')
local tab1 = unpack(nvim('list_tabpages'))
local win1 = unpack(tabpage('list_wins', tab1))
- nvim('set_option_value', 'statusline', 'window-status', {win=win1.id})
+ nvim('set_option_value', 'statusline', 'window-status', { win = win1.id })
nvim('command', 'split')
nvim('command', 'wincmd J')
nvim('command', 'wincmd j')
- eq('window-status', nvim('get_option_value', 'statusline', {win = win1.id}))
+ eq('window-status', nvim('get_option_value', 'statusline', { win = win1.id }))
assert_alive()
end)
it('returns values for unset local options', function()
- eq(-1, nvim('get_option_value', 'scrolloff', {win=0, scope='local'}))
+ eq(-1, nvim('get_option_value', 'scrolloff', { win = 0, scope = 'local' }))
end)
end)
@@ -410,13 +442,11 @@ describe('API/win', function()
local width = window('get_width', nvim('list_wins')[1])
nvim('command', 'split')
nvim('command', 'vsplit')
- eq({0, 0}, window('get_position', nvim('list_wins')[1]))
+ eq({ 0, 0 }, window('get_position', nvim('list_wins')[1]))
local vsplit_pos = math.floor(width / 2)
local split_pos = math.floor(height / 2)
- local win2row, win2col =
- unpack(window('get_position', nvim('list_wins')[2]))
- local win3row, win3col =
- unpack(window('get_position', nvim('list_wins')[3]))
+ local win2row, win2col = unpack(window('get_position', nvim('list_wins')[2]))
+ local win3row, win3col = unpack(window('get_position', nvim('list_wins')[3]))
eq(0, win2row)
eq(0, win3col)
ok(vsplit_pos - 1 <= win2col and win2col <= vsplit_pos + 1)
@@ -428,12 +458,9 @@ describe('API/win', function()
it('works', function()
nvim('command', 'tabnew')
nvim('command', 'vsplit')
- eq(window('get_tabpage',
- nvim('list_wins')[1]), nvim('list_tabpages')[1])
- eq(window('get_tabpage',
- nvim('list_wins')[2]), nvim('list_tabpages')[2])
- eq(window('get_tabpage',
- nvim('list_wins')[3]), nvim('list_tabpages')[2])
+ eq(window('get_tabpage', nvim('list_wins')[1]), nvim('list_tabpages')[1])
+ eq(window('get_tabpage', nvim('list_wins')[2]), nvim('list_tabpages')[2])
+ eq(window('get_tabpage', nvim('list_wins')[3]), nvim('list_tabpages')[2])
end)
end)
@@ -477,16 +504,16 @@ describe('API/win', function()
local oldwin = meths.get_current_win()
command('split')
local newwin = meths.get_current_win()
- meths.win_close(newwin,false)
- eq({oldwin}, meths.list_wins())
+ meths.win_close(newwin, false)
+ eq({ oldwin }, meths.list_wins())
end)
it('can close noncurrent window', function()
local oldwin = meths.get_current_win()
command('split')
local newwin = meths.get_current_win()
- meths.win_close(oldwin,false)
- eq({newwin}, meths.list_wins())
+ meths.win_close(oldwin, false)
+ eq({ newwin }, meths.list_wins())
end)
it("handles changed buffer when 'hidden' is unset", function()
@@ -495,9 +522,11 @@ describe('API/win', function()
insert('text')
command('new')
local newwin = meths.get_current_win()
- eq("Vim:E37: No write since last change (add ! to override)",
- pcall_err(meths.win_close, oldwin,false))
- eq({newwin,oldwin}, meths.list_wins())
+ eq(
+ 'Vim:E37: No write since last change (add ! to override)',
+ pcall_err(meths.win_close, oldwin, false)
+ )
+ eq({ newwin, oldwin }, meths.list_wins())
end)
it('handles changed buffer with force', function()
@@ -505,8 +534,8 @@ describe('API/win', function()
insert('text')
command('new')
local newwin = meths.get_current_win()
- meths.win_close(oldwin,true)
- eq({newwin}, meths.list_wins())
+ meths.win_close(oldwin, true)
+ eq({ newwin }, meths.list_wins())
end)
it('in cmdline-window #9767', function()
@@ -514,15 +543,21 @@ describe('API/win', function()
eq(2, #meths.list_wins())
local oldwin = meths.get_current_win()
local otherwin = meths.open_win(0, false, {
- relative='editor', row=10, col=10, width=10, height=10,
+ relative = 'editor',
+ row = 10,
+ col = 10,
+ width = 10,
+ height = 10,
})
-- Open cmdline-window.
feed('q:')
eq(4, #meths.list_wins())
eq(':', funcs.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.win_close, oldwin, true))
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.win_close, oldwin, true)
+ )
-- Closing other windows is fine.
meths.win_close(otherwin, true)
eq(false, meths.win_is_valid(otherwin))
@@ -538,7 +573,11 @@ describe('API/win', function()
local prevwin = curwin().id
eq(2, eval('tabpagenr()'))
local win = meths.open_win(0, true, {
- relative='editor', row=10, col=10, width=50, height=10
+ relative = 'editor',
+ row = 10,
+ col = 10,
+ width = 50,
+ height = 10,
})
local tab = eval('tabpagenr()')
command('tabprevious')
@@ -556,37 +595,45 @@ describe('API/win', function()
command('split')
local newwin = meths.get_current_win()
meths.win_hide(newwin)
- eq({oldwin}, meths.list_wins())
+ eq({ oldwin }, meths.list_wins())
end)
it('can hide noncurrent window', function()
local oldwin = meths.get_current_win()
command('split')
local newwin = meths.get_current_win()
meths.win_hide(oldwin)
- eq({newwin}, meths.list_wins())
+ eq({ newwin }, meths.list_wins())
end)
it('does not close the buffer', function()
local oldwin = meths.get_current_win()
local oldbuf = meths.get_current_buf()
local buf = meths.create_buf(true, false)
local newwin = meths.open_win(buf, true, {
- relative='win', row=3, col=3, width=12, height=3
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
})
meths.win_hide(newwin)
- eq({oldwin}, meths.list_wins())
- eq({oldbuf, buf}, meths.list_bufs())
+ eq({ oldwin }, meths.list_wins())
+ eq({ oldbuf, buf }, meths.list_bufs())
end)
it('deletes the buffer when bufhidden=wipe', function()
local oldwin = meths.get_current_win()
local oldbuf = meths.get_current_buf()
local buf = meths.create_buf(true, false).id
local newwin = meths.open_win(buf, true, {
- relative='win', row=3, col=3, width=12, height=3
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
})
- meths.set_option_value('bufhidden', 'wipe', {buf=buf})
+ meths.set_option_value('bufhidden', 'wipe', { buf = buf })
meths.win_hide(newwin)
- eq({oldwin}, meths.list_wins())
- eq({oldbuf}, meths.list_bufs())
+ eq({ oldwin }, meths.list_wins())
+ eq({ oldbuf }, meths.list_bufs())
end)
it('in the cmdwin', function()
feed('q:')
@@ -596,12 +643,18 @@ describe('API/win', function()
local old_win = meths.get_current_win()
local other_win = meths.open_win(0, false, {
- relative='win', row=3, col=3, width=12, height=3
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
})
feed('q:')
-- Cannot close the previous window.
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.win_hide, old_win))
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.win_hide, old_win)
+ )
-- Can close other windows.
meths.win_hide(other_win)
eq(false, meths.win_is_valid(other_win))
@@ -617,48 +670,66 @@ describe('API/win', function()
ccc
ddd
eee]])
- eq("Invalid window id: 23",
- pcall_err(meths.win_text_height, 23, {}))
- eq("Line index out of bounds",
- pcall_err(curwinmeths.text_height, { start_row = 5 }))
- eq("Line index out of bounds",
- pcall_err(curwinmeths.text_height, { start_row = -6 }))
- eq("Line index out of bounds",
- pcall_err(curwinmeths.text_height, { end_row = 5 }))
- eq("Line index out of bounds",
- pcall_err(curwinmeths.text_height, { end_row = -6 }))
- eq("'start_row' is higher than 'end_row'",
- pcall_err(curwinmeths.text_height, { start_row = 3, end_row = 1 }))
- eq("'start_vcol' specified without 'start_row'",
- pcall_err(curwinmeths.text_height, { end_row = 2, start_vcol = 0 }))
- eq("'end_vcol' specified without 'end_row'",
- pcall_err(curwinmeths.text_height, { start_row = 2, end_vcol = 0 }))
- eq("Invalid 'start_vcol': out of range",
- pcall_err(curwinmeths.text_height, { start_row = 2, start_vcol = -1 }))
- eq("Invalid 'start_vcol': out of range",
- pcall_err(curwinmeths.text_height, { start_row = 2, start_vcol = X + 1 }))
- eq("Invalid 'end_vcol': out of range",
- pcall_err(curwinmeths.text_height, { end_row = 2, end_vcol = -1 }))
- eq("Invalid 'end_vcol': out of range",
- pcall_err(curwinmeths.text_height, { end_row = 2, end_vcol = X + 1 }))
- eq("'start_vcol' is higher than 'end_vcol'",
- pcall_err(curwinmeths.text_height, { start_row = 2, end_row = 2, start_vcol = 10, end_vcol = 5 }))
+ eq('Invalid window id: 23', pcall_err(meths.win_text_height, 23, {}))
+ eq('Line index out of bounds', pcall_err(curwinmeths.text_height, { start_row = 5 }))
+ eq('Line index out of bounds', pcall_err(curwinmeths.text_height, { start_row = -6 }))
+ eq('Line index out of bounds', pcall_err(curwinmeths.text_height, { end_row = 5 }))
+ eq('Line index out of bounds', pcall_err(curwinmeths.text_height, { end_row = -6 }))
+ eq(
+ "'start_row' is higher than 'end_row'",
+ pcall_err(curwinmeths.text_height, { start_row = 3, end_row = 1 })
+ )
+ eq(
+ "'start_vcol' specified without 'start_row'",
+ pcall_err(curwinmeths.text_height, { end_row = 2, start_vcol = 0 })
+ )
+ eq(
+ "'end_vcol' specified without 'end_row'",
+ pcall_err(curwinmeths.text_height, { start_row = 2, end_vcol = 0 })
+ )
+ eq(
+ "Invalid 'start_vcol': out of range",
+ pcall_err(curwinmeths.text_height, { start_row = 2, start_vcol = -1 })
+ )
+ eq(
+ "Invalid 'start_vcol': out of range",
+ pcall_err(curwinmeths.text_height, { start_row = 2, start_vcol = X + 1 })
+ )
+ eq(
+ "Invalid 'end_vcol': out of range",
+ pcall_err(curwinmeths.text_height, { end_row = 2, end_vcol = -1 })
+ )
+ eq(
+ "Invalid 'end_vcol': out of range",
+ pcall_err(curwinmeths.text_height, { end_row = 2, end_vcol = X + 1 })
+ )
+ eq(
+ "'start_vcol' is higher than 'end_vcol'",
+ pcall_err(
+ curwinmeths.text_height,
+ { start_row = 2, end_row = 2, start_vcol = 10, end_vcol = 5 }
+ )
+ )
end)
it('with two diff windows', function()
local X = meths.get_vvar('maxcol')
local screen = Screen.new(45, 22)
screen:set_default_attr_ids({
- [0] = {foreground = Screen.colors.Blue1, bold = true};
- [1] = {foreground = Screen.colors.Blue4, background = Screen.colors.Grey};
- [2] = {foreground = Screen.colors.Brown};
- [3] = {foreground = Screen.colors.Blue1, background = Screen.colors.LightCyan1, bold = true};
- [4] = {background = Screen.colors.LightBlue};
- [5] = {foreground = Screen.colors.Blue4, background = Screen.colors.LightGrey};
- [6] = {background = Screen.colors.Plum1};
- [7] = {background = Screen.colors.Red, bold = true};
- [8] = {reverse = true};
- [9] = {bold = true, reverse = true};
+ [0] = { foreground = Screen.colors.Blue1, bold = true },
+ [1] = { foreground = Screen.colors.Blue4, background = Screen.colors.Grey },
+ [2] = { foreground = Screen.colors.Brown },
+ [3] = {
+ foreground = Screen.colors.Blue1,
+ background = Screen.colors.LightCyan1,
+ bold = true,
+ },
+ [4] = { background = Screen.colors.LightBlue },
+ [5] = { foreground = Screen.colors.Blue4, background = Screen.colors.LightGrey },
+ [6] = { background = Screen.colors.Plum1 },
+ [7] = { background = Screen.colors.Red, bold = true },
+ [8] = { reverse = true },
+ [9] = { bold = true, reverse = true },
})
screen:attach()
exec([[
@@ -670,7 +741,8 @@ describe('API/win', function()
windo diffthis
]])
feed('24gg')
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
{1: }{2: }{3:----------------}│{1: }{2: 1 }{4:00000001! }|
{1: }{2: }{3:----------------}│{1: }{2: 2 }{4:00000002!! }|
{1: }{2: 1 }00000003!!! │{1: }{2: 3 }00000003!!! |
@@ -693,13 +765,16 @@ describe('API/win', function()
{1: }{2: 41 }{4:00000050!!!!!!!!}│{1: }{2: }{3:----------------}|
{8:[No Name] [+] }{9:[No Name] [+] }|
|
- ]]}
+ ]],
+ }
screen:try_resize(45, 3)
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
{1: }{2: 19 }00000028!!!!!!!!│{1: }{2: 24 }^00000028!!!!!!!!|
{8:[No Name] [+] }{9:[No Name] [+] }|
|
- ]]}
+ ]],
+ }
eq({ all = 20, fill = 5 }, meths.win_text_height(1000, {}))
eq({ all = 20, fill = 5 }, meths.win_text_height(1001, {}))
eq({ all = 20, fill = 5 }, meths.win_text_height(1000, { start_row = 0 }))
@@ -724,27 +799,51 @@ describe('API/win', function()
eq({ all = 7, fill = 3 }, meths.win_text_height(1001, { start_row = 16, end_row = 19 }))
eq({ all = 6, fill = 5 }, meths.win_text_height(1000, { start_row = -1 }))
eq({ all = 5, fill = 5 }, meths.win_text_height(1000, { start_row = -1, start_vcol = X }))
- eq({ all = 0, fill = 0 }, meths.win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1 }))
- eq({ all = 0, fill = 0 }, meths.win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1, end_vcol = X }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(1000, { start_row = -1, start_vcol = 0, end_row = -1, end_vcol = X }))
+ eq(
+ { all = 0, fill = 0 },
+ meths.win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1 })
+ )
+ eq(
+ { all = 0, fill = 0 },
+ meths.win_text_height(1000, { start_row = -1, start_vcol = X, end_row = -1, end_vcol = X })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(1000, { start_row = -1, start_vcol = 0, end_row = -1, end_vcol = X })
+ )
eq({ all = 3, fill = 2 }, meths.win_text_height(1001, { end_row = 0 }))
eq({ all = 2, fill = 2 }, meths.win_text_height(1001, { end_row = 0, end_vcol = 0 }))
- eq({ all = 2, fill = 2 }, meths.win_text_height(1001, { start_row = 0, end_row = 0, end_vcol = 0 }))
- eq({ all = 0, fill = 0 }, meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = 0 }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = X }))
+ eq(
+ { all = 2, fill = 2 },
+ meths.win_text_height(1001, { start_row = 0, end_row = 0, end_vcol = 0 })
+ )
+ eq(
+ { all = 0, fill = 0 },
+ meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = 0 })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 0, end_vcol = X })
+ )
eq({ all = 11, fill = 5 }, meths.win_text_height(1001, { end_row = 18 }))
- eq({ all = 9, fill = 3 }, meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18 }))
+ eq(
+ { all = 9, fill = 3 },
+ meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18 })
+ )
eq({ all = 10, fill = 5 }, meths.win_text_height(1001, { end_row = 18, end_vcol = 0 }))
- eq({ all = 8, fill = 3 }, meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18, end_vcol = 0 }))
+ eq(
+ { all = 8, fill = 3 },
+ meths.win_text_height(1001, { start_row = 0, start_vcol = 0, end_row = 18, end_vcol = 0 })
+ )
end)
it('with wrapped lines', function()
local X = meths.get_vvar('maxcol')
local screen = Screen.new(45, 22)
screen:set_default_attr_ids({
- [0] = {foreground = Screen.colors.Blue1, bold = true};
- [1] = {foreground = Screen.colors.Brown};
- [2] = {background = Screen.colors.Yellow};
+ [0] = { foreground = Screen.colors.Blue1, bold = true },
+ [1] = { foreground = Screen.colors.Brown },
+ [2] = { background = Screen.colors.Yellow },
})
screen:attach()
exec([[
@@ -752,9 +851,22 @@ describe('API/win', function()
call setline(1, repeat([repeat('foobar-', 36)], 3))
]])
local ns = meths.create_namespace('')
- meths.buf_set_extmark(0, ns, 1, 100, { virt_text = {{('?'):rep(15), 'Search'}}, virt_text_pos = 'inline' })
- meths.buf_set_extmark(0, ns, 2, 200, { virt_text = {{('!'):rep(75), 'Search'}}, virt_text_pos = 'inline' })
- screen:expect{grid=[[
+ meths.buf_set_extmark(
+ 0,
+ ns,
+ 1,
+ 100,
+ { virt_text = { { ('?'):rep(15), 'Search' } }, virt_text_pos = 'inline' }
+ )
+ meths.buf_set_extmark(
+ 0,
+ ns,
+ 2,
+ 200,
+ { virt_text = { { ('!'):rep(75), 'Search' } }, virt_text_pos = 'inline' }
+ )
+ screen:expect {
+ grid = [[
{1: 1 }^foobar-foobar-foobar-foobar-foobar-foobar|
-foobar-foobar-foobar-foobar-foobar-foobar-fo|
obar-foobar-foobar-foobar-foobar-foobar-fooba|
@@ -777,48 +889,123 @@ describe('API/win', function()
{2:!!!!!!!!!}ar-foobar-foobar-foobar-foobar-fooba|
r-foobar-foobar- |
|
- ]]}
+ ]],
+ }
screen:try_resize(45, 2)
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
{1: 1 }^foobar-foobar-foobar-foobar-foobar-foobar|
|
- ]]}
+ ]],
+ }
eq({ all = 21, fill = 0 }, meths.win_text_height(0, {}))
eq({ all = 6, fill = 0 }, meths.win_text_height(0, { start_row = 0, end_row = 0 }))
eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, end_row = 1 }))
eq({ all = 8, fill = 0 }, meths.win_text_height(0, { start_row = 2, end_row = 2 }))
- eq({ all = 0, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 0 }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 41 }))
- eq({ all = 2, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 42 }))
- eq({ all = 2, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 86 }))
- eq({ all = 3, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 87 }))
- eq({ all = 6, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 266 }))
- eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 267 }))
- eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 311 }))
- eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 312 }))
- eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = X }))
- eq({ all = 7, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 40, end_row = 1, end_vcol = X }))
- eq({ all = 6, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 41, end_row = 1, end_vcol = X }))
- eq({ all = 6, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 85, end_row = 1, end_vcol = X }))
- eq({ all = 5, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = X }))
- eq({ all = 2, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 265, end_row = 1, end_vcol = X }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 266, end_row = 1, end_vcol = X }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 310, end_row = 1, end_vcol = X }))
- eq({ all = 0, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 311, end_row = 1, end_vcol = X }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = 131 }))
- eq({ all = 1, fill = 0 }, meths.win_text_height(0, { start_row = 1, start_vcol = 221, end_row = 1, end_vcol = 266 }))
+ eq(
+ { all = 0, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 0 })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 41 })
+ )
+ eq(
+ { all = 2, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 42 })
+ )
+ eq(
+ { all = 2, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 86 })
+ )
+ eq(
+ { all = 3, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 87 })
+ )
+ eq(
+ { all = 6, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 266 })
+ )
+ eq(
+ { all = 7, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 267 })
+ )
+ eq(
+ { all = 7, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 311 })
+ )
+ eq(
+ { all = 7, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = 312 })
+ )
+ eq(
+ { all = 7, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 0, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 7, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 40, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 6, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 41, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 6, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 85, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 5, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 2, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 265, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 266, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 310, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 0, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 311, end_row = 1, end_vcol = X })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 86, end_row = 1, end_vcol = 131 })
+ )
+ eq(
+ { all = 1, fill = 0 },
+ meths.win_text_height(0, { start_row = 1, start_vcol = 221, end_row = 1, end_vcol = 266 })
+ )
eq({ all = 18, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 131 }))
eq({ all = 19, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 130 }))
eq({ all = 20, fill = 0 }, meths.win_text_height(0, { end_row = 2, end_vcol = 311 }))
eq({ all = 21, fill = 0 }, meths.win_text_height(0, { end_row = 2, end_vcol = 312 }))
- eq({ all = 17, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 131, end_row = 2, end_vcol = 311 }))
- eq({ all = 19, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 130, end_row = 2, end_vcol = 312 }))
+ eq(
+ { all = 17, fill = 0 },
+ meths.win_text_height(0, { start_row = 0, start_vcol = 131, end_row = 2, end_vcol = 311 })
+ )
+ eq(
+ { all = 19, fill = 0 },
+ meths.win_text_height(0, { start_row = 0, start_vcol = 130, end_row = 2, end_vcol = 312 })
+ )
eq({ all = 16, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 221 }))
eq({ all = 17, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 220 }))
eq({ all = 14, fill = 0 }, meths.win_text_height(0, { end_row = 2, end_vcol = 41 }))
eq({ all = 15, fill = 0 }, meths.win_text_height(0, { end_row = 2, end_vcol = 42 }))
- eq({ all = 9, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 221, end_row = 2, end_vcol = 41 }))
- eq({ all = 11, fill = 0 }, meths.win_text_height(0, { start_row = 0, start_vcol = 220, end_row = 2, end_vcol = 42 }))
+ eq(
+ { all = 9, fill = 0 },
+ meths.win_text_height(0, { start_row = 0, start_vcol = 221, end_row = 2, end_vcol = 41 })
+ )
+ eq(
+ { all = 11, fill = 0 },
+ meths.win_text_height(0, { start_row = 0, start_vcol = 220, end_row = 2, end_vcol = 42 })
+ )
end)
end)
@@ -826,11 +1013,20 @@ describe('API/win', function()
it('noautocmd option works', function()
command('autocmd BufEnter,BufLeave,BufWinEnter * let g:fired = 1')
meths.open_win(meths.create_buf(true, true), true, {
- relative='win', row=3, col=3, width=12, height=3, noautocmd=true
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
+ noautocmd = true,
})
eq(0, funcs.exists('g:fired'))
meths.open_win(meths.create_buf(true, true), true, {
- relative='win', row=3, col=3, width=12, height=3
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
})
eq(1, funcs.exists('g:fired'))
end)
@@ -838,25 +1034,51 @@ describe('API/win', function()
it('disallowed in cmdwin if enter=true or buf=curbuf', function()
local new_buf = meths.create_buf(true, true)
feed('q:')
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.open_win, new_buf, true, {
- relative='editor', row=5, col=5, width=5, height=5,
- }))
- eq('E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
- pcall_err(meths.open_win, 0, false, {
- relative='editor', row=5, col=5, width=5, height=5,
- }))
-
- eq(new_buf, meths.win_get_buf(meths.open_win(new_buf, false, {
- relative='editor', row=5, col=5, width=5, height=5,
- })))
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.open_win, new_buf, true, {
+ relative = 'editor',
+ row = 5,
+ col = 5,
+ width = 5,
+ height = 5,
+ })
+ )
+ eq(
+ 'E11: Invalid in command-line window; <CR> executes, CTRL-C quits',
+ pcall_err(meths.open_win, 0, false, {
+ relative = 'editor',
+ row = 5,
+ col = 5,
+ width = 5,
+ height = 5,
+ })
+ )
+
+ eq(
+ new_buf,
+ meths.win_get_buf(meths.open_win(new_buf, false, {
+ relative = 'editor',
+ row = 5,
+ col = 5,
+ width = 5,
+ height = 5,
+ }))
+ )
end)
it('aborts if buffer is invalid', function()
local wins_before = meths.list_wins()
- eq('Invalid buffer id: 1337', pcall_err(meths.open_win, 1337, false, {
- relative='editor', row=5, col=5, width=5, height=5,
- }))
+ eq(
+ 'Invalid buffer id: 1337',
+ pcall_err(meths.open_win, 1337, false, {
+ relative = 'editor',
+ row = 5,
+ col = 5,
+ width = 5,
+ height = 5,
+ })
+ )
eq(wins_before, meths.list_wins())
end)
end)
@@ -865,7 +1087,11 @@ describe('API/win', function()
it('includes border', function()
local b = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' }
local win = meths.open_win(0, true, {
- relative='win', row=3, col=3, width=12, height=3,
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
border = b,
})
@@ -875,17 +1101,21 @@ describe('API/win', function()
it('includes border with highlight group', function()
local b = {
- {'a', 'Normal'},
- {'b', 'Special'},
- {'c', 'String'},
- {'d', 'Comment'},
- {'e', 'Visual'},
- {'f', 'Error'},
- {'g', 'Constant'},
- {'h', 'PreProc'},
+ { 'a', 'Normal' },
+ { 'b', 'Special' },
+ { 'c', 'String' },
+ { 'd', 'Comment' },
+ { 'e', 'Visual' },
+ { 'f', 'Error' },
+ { 'g', 'Constant' },
+ { 'h', 'PreProc' },
}
local win = meths.open_win(0, true, {
- relative='win', row=3, col=3, width=12, height=3,
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
border = b,
})
@@ -894,11 +1124,17 @@ describe('API/win', function()
end)
it('includes title and footer', function()
- local title = { {'A', {'StatusLine', 'TabLine'}}, {'B'}, {'C', 'WinBar'} }
- local footer = { {'A', 'WinBar'}, {'B'}, {'C', {'StatusLine', 'TabLine'}} }
+ local title = { { 'A', { 'StatusLine', 'TabLine' } }, { 'B' }, { 'C', 'WinBar' } }
+ local footer = { { 'A', 'WinBar' }, { 'B' }, { 'C', { 'StatusLine', 'TabLine' } } }
local win = meths.open_win(0, true, {
- relative='win', row=3, col=3, width=12, height=3,
- border = 'single', title = title, footer = footer,
+ relative = 'win',
+ row = 3,
+ col = 3,
+ width = 12,
+ height = 3,
+ border = 'single',
+ title = title,
+ footer = footer,
})
local cfg = meths.win_get_config(win)
@@ -908,35 +1144,39 @@ describe('API/win', function()
end)
describe('set_config', function()
- it('no crash with invalid title', function ()
+ it('no crash with invalid title', function()
local win = meths.open_win(0, true, {
width = 10,
height = 10,
- relative = "editor",
+ relative = 'editor',
row = 10,
col = 10,
- title = { { "test" } },
- border = "single",
+ title = { { 'test' } },
+ border = 'single',
})
- eq("title/footer cannot be an empty array",
- pcall_err(meths.win_set_config, win, {title = {}}))
- command("redraw!")
+ eq(
+ 'title/footer cannot be an empty array',
+ pcall_err(meths.win_set_config, win, { title = {} })
+ )
+ command('redraw!')
assert_alive()
end)
- it('no crash with invalid footer', function ()
+ it('no crash with invalid footer', function()
local win = meths.open_win(0, true, {
width = 10,
height = 10,
- relative = "editor",
+ relative = 'editor',
row = 10,
col = 10,
- footer = { { "test" } },
- border = "single",
+ footer = { { 'test' } },
+ border = 'single',
})
- eq("title/footer cannot be an empty array",
- pcall_err(meths.win_set_config, win, {footer = {}}))
- command("redraw!")
+ eq(
+ 'title/footer cannot be an empty array',
+ pcall_err(meths.win_set_config, win, { footer = {} })
+ )
+ command('redraw!')
assert_alive()
end)
end)