mirror of
https://github.com/neovim/neovim.git
synced 2025-09-09 12:58:16 +00:00
window: Fix matchaddpos() and enhance error reporting
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
|
||||
local eq = helpers.eq
|
||||
local clear = helpers.clear
|
||||
local funcs = helpers.funcs
|
||||
local meths = helpers.meths
|
||||
local command = helpers.command
|
||||
local exc_exec = helpers.exc_exec
|
||||
|
||||
before_each(clear)
|
||||
|
||||
@@ -59,3 +62,95 @@ describe('matchadd()', function()
|
||||
}}, funcs.getmatches())
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('matchaddpos()', function()
|
||||
it('errors out on invalid input', function()
|
||||
command('hi clear PreProc')
|
||||
eq('Vim(let):E5030: Empty list at position 0',
|
||||
exc_exec('let val = matchaddpos("PreProc", [[]])'))
|
||||
eq('Vim(let):E5030: Empty list at position 1',
|
||||
exc_exec('let val = matchaddpos("PreProc", [1, v:_null_list])'))
|
||||
eq('Vim(let):E5031: List or number required at position 1',
|
||||
exc_exec('let val = matchaddpos("PreProc", [1, v:_null_dict])'))
|
||||
end)
|
||||
it('works with 0 lnum', function()
|
||||
command('hi clear PreProc')
|
||||
eq(4, funcs.matchaddpos('PreProc', {1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
funcs.matchdelete(4)
|
||||
eq(4, funcs.matchaddpos('PreProc', {{0}, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
funcs.matchdelete(4)
|
||||
eq(4, funcs.matchaddpos('PreProc', {0, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
end)
|
||||
it('works with negative numbers', function()
|
||||
command('hi clear PreProc')
|
||||
eq(4, funcs.matchaddpos('PreProc', {-10, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
funcs.matchdelete(4)
|
||||
eq(4, funcs.matchaddpos('PreProc', {{-10}, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
funcs.matchdelete(4)
|
||||
eq(4, funcs.matchaddpos('PreProc', {{2, -1}, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
funcs.matchdelete(4)
|
||||
eq(4, funcs.matchaddpos('PreProc', {{2, 0, -1}, 1}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
end)
|
||||
it('works with zero length', function()
|
||||
local screen = Screen.new(40, 5)
|
||||
screen:attach()
|
||||
funcs.setline(1, 'abcdef')
|
||||
command('hi PreProc guifg=Red')
|
||||
eq(4, funcs.matchaddpos('PreProc', {{1, 2, 0}}, 3, 4))
|
||||
eq({{
|
||||
group='PreProc',
|
||||
pos1 = {1, 2, 0},
|
||||
priority=3,
|
||||
id=4,
|
||||
}}, funcs.getmatches())
|
||||
screen:expect([[
|
||||
^a{1:b}cdef |
|
||||
{2:~ }|
|
||||
{2:~ }|
|
||||
{2:~ }|
|
||||
|
|
||||
]], {[1] = {foreground = Screen.colors.Red}, [2] = {bold = true, foreground = Screen.colors.Blue1}})
|
||||
end)
|
||||
end)
|
||||
|
Reference in New Issue
Block a user