test: add tests for conceal cursor movement

This commit is contained in:
Björn Linse 2019-01-12 12:18:00 +01:00
parent 88963a18de
commit 9c75929e7b
2 changed files with 567 additions and 2 deletions

View File

@ -741,10 +741,11 @@ describe('ui/mouse/input', function()
screen:set_default_attr_ids({
[0] = {bold=true, foreground=Screen.colors.Blue},
c = { foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray },
sm = {bold = true},
})
feed('ggdG')
feed_command('set concealcursor=n')
feed_command('set concealcursor=ni')
feed_command('set nowrap')
feed_command('set shiftwidth=2 tabstop=4 list listchars=tab:>-')
feed_command('syntax match NonText "\\*" conceal')
@ -973,6 +974,76 @@ describe('ui/mouse/input', function()
]])
end) -- level 2 - non wrapped
it('(level 2) click on non-wrapped lines (insert mode)', function()
feed_command('let &conceallevel=2', 'echo')
feed('<esc>i<LeftMouse><20,0>')
screen:expect([[
Section{0:>>--->--->---}^t1 |
{0:>--->--->---} t2 t3 t4 |
{c:>} {0:>---}{c:X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
feed('<LeftMouse><14,1>')
screen:expect([[
Section{0:>>--->--->---}t1 |
{0:>--->--->---} ^t2 t3 t4 |
{c:>} {0:>---}{c:X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
feed('<LeftMouse><18,1>')
screen:expect([[
Section{0:>>--->--->---}t1 |
{0:>--->--->---} t2 t^3 t4 |
{c:>} {0:>---}{c:X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
feed('<LeftMouse><0,2>') -- Weirdness
screen:expect([[
Section{0:>>--->--->---}t1 |
{0:>--->--->---} t2 t3 t4 |
{c:^>} {0:>---}{c:X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
feed('<LeftMouse><8,2>')
screen:expect([[
Section{0:>>--->--->---}t1 |
{0:>--->--->---} t2 t3 t4 |
{c:>} ^{0:>---}{c:X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
feed('<LeftMouse><20,2>')
screen:expect([[
Section{0:>>--->--->---}t1 |
{0:>--->--->---} t2 t3 t4 |
{c:>} {0:>---}{c:^X} {0:>}|
|
{0:~ }|
{0:~ }|
{sm:-- INSERT --} |
]])
end) -- level 2 - non wrapped (insert mode)
it('(level 2) click on wrapped lines', function()
feed_command('let &conceallevel=2', 'let &wrap=1', 'echo')

View File

@ -12,7 +12,11 @@ describe('Screen', function()
screen:attach()
screen:set_default_attr_ids( {
[0] = {bold=true, foreground=Screen.colors.Blue},
[1] = {foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray}
[1] = {foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray},
[2] = {bold = true, reverse = true},
[3] = {reverse = true},
[4] = {bold = true},
[5] = {background = Screen.colors.Yellow},
} )
end)
@ -329,4 +333,494 @@ describe('Screen', function()
]])
end)
end) -- conceallevel
describe("cursor movement", function()
before_each(function()
command("syn keyword concealy barf conceal cchar=b")
command("set cole=2")
feed('5Ofoo barf bar barf eggs<esc>')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo barf bar barf egg^s |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
it('between windows', function()
command("split")
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo barf bar barf egg^s |
|
{2:[No Name] [+] }|
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{3:[No Name] [+] }|
|
]])
feed('<c-w>w')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{3:[No Name] [+] }|
foo {1:b} bar {1:b} eggs |
foo barf bar barf egg^s |
|
{2:[No Name] [+] }|
|
]])
end)
it('in insert mode', function()
feed('i')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo barf bar barf egg^s |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
feed('<up>')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo barf bar barf egg^s |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
end)
it('between modes cocu=iv', function()
command('set cocu=iv')
feed('gg')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
feed('i')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
feed('<esc>')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
feed('v')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- VISUAL --} |
]])
feed('<esc>')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
it('between modes cocu=n', function()
command('set cocu=n')
feed('gg')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
feed('i')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
feed('<esc>')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
feed('v')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
{4:-- VISUAL --} |
]])
feed('<esc>')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
it('and open line', function()
feed('o')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
^ |
|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
end)
it('and open line cocu=i', function()
command('set cocu=i')
feed('o')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
^ |
|
{0:~ }|
{0:~ }|
{4:-- INSERT --} |
]])
end)
describe('with incsearch', function()
before_each(function()
command('set incsearch hlsearch')
feed('2GA x<esc>3GA xy<esc>gg')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
it('cocu=', function()
feed('/')
screen:expect([[
foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
feed('x')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo barf bar barf eggs {3:x} |
foo {1:b} bar {1:b} eggs {5:x}y |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/x^ |
]])
feed('y')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo barf bar barf eggs {3:xy} |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/xy^ |
]])
feed('<c-w>')
screen:expect([[
foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
end)
it('cocu=c', function()
command('set cocu=c')
feed('/')
-- NB: we don't do this redraw. Probably best to still skip it,
-- to avoid annoying distraction from the cmdline
screen:expect([[
foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
feed('x')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs {3:x} |
foo {1:b} bar {1:b} eggs {5:x}y |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/x^ |
]])
feed('y')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs {3:xy} |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/xy^ |
]])
feed('<c-w>')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
feed('<esc>')
screen:expect([[
^foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
it('cocu=n', function()
command('set cocu=n')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
feed('/')
-- NB: we don't do this redraw. Probably best to still skip it,
-- to avoid annoying distraction from the cmdline
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
feed('x')
screen:expect([[
foo {1:b} bar {1:b} eggs |
foo barf bar barf eggs {3:x} |
foo {1:b} bar {1:b} eggs {5:x}y |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/x^ |
]])
feed('<c-w>')
screen:expect([[
foo barf bar barf eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
/^ |
]])
feed('<esc>')
screen:expect([[
^foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs x |
foo {1:b} bar {1:b} eggs xy |
foo {1:b} bar {1:b} eggs |
foo {1:b} bar {1:b} eggs |
|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
end)
end)
end)
end)