mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #11206 from bfredl/testattr
tests/refactor: make screen.ui use "linegrid" representation internally
This commit is contained in:
commit
ba082885d2
@ -15,10 +15,6 @@ describe("update_menu notification", function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
local function expect_sent(expected)
|
||||
screen:expect{condition=function()
|
||||
if screen.update_menu ~= expected then
|
||||
|
@ -963,9 +963,6 @@ describe("pty process teardown", function()
|
||||
|
|
||||
]])
|
||||
end)
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("does not prevent/delay exit. #4798 #4900", function()
|
||||
if helpers.pending_win32(pending) then return end
|
||||
|
@ -144,7 +144,6 @@ describe('eval-API', function()
|
||||
{5:~ }|
|
||||
|
|
||||
]])
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('cannot be called from sandbox', function()
|
||||
|
@ -121,10 +121,6 @@ describe('system()', function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
if iswin() then
|
||||
local function test_more()
|
||||
eq('root = true', eval([[get(split(system('"more" ".editorconfig"'), "\n"), 0, '')]]))
|
||||
|
@ -19,10 +19,6 @@ describe(":drop", function()
|
||||
command("set laststatus=2 shortmess-=F")
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("works like :e when called with only one window open", function()
|
||||
feed_command("drop tmp1.vim")
|
||||
screen:expect([[
|
||||
|
@ -13,10 +13,6 @@ describe(':highlight', function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('invalid color name', function()
|
||||
eq('Vim(highlight):E421: Color name or number not recognized: ctermfg=#181818',
|
||||
exc_exec("highlight normal ctermfg=#181818"))
|
||||
|
@ -14,9 +14,6 @@ describe('folding', function()
|
||||
screen = Screen.new(20, 8)
|
||||
screen:attach()
|
||||
end)
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('creation, opening, moving (to the end) and closing', function()
|
||||
insert([[
|
||||
|
@ -14,6 +14,10 @@ describe('063: Test for ":match", "matchadd()" and related functions', function(
|
||||
it('is working', function()
|
||||
local screen = Screen.new(40, 5)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold = true, foreground = Screen.colors.Blue},
|
||||
[1] = {background = Screen.colors.Red},
|
||||
})
|
||||
|
||||
-- Check that "matcharg()" returns the correct group and pattern if a match
|
||||
-- is defined.
|
||||
@ -126,22 +130,22 @@ describe('063: Test for ":match", "matchadd()" and related functions', function(
|
||||
command("call matchaddpos('MyGroup1', [[1, 5], [1, 8, 3]], 10, 3)")
|
||||
screen:expect([[
|
||||
abcd{1:e}fg{1:hij}klmnop^q |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
|
|
||||
]], {[1] = {background = Screen.colors.Red}}, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
]])
|
||||
|
||||
command("call clearmatches()")
|
||||
command("call setline(1, 'abcdΣabcdef')")
|
||||
command("call matchaddpos('MyGroup1', [[1, 4, 2], [1, 9, 2]])")
|
||||
screen:expect([[
|
||||
abc{1:dΣ}ab{1:cd}e^f |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
|
|
||||
]],{[1] = {background = Screen.colors.Red}}, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
||||
|
@ -17,7 +17,10 @@ describe('search cmdline', function()
|
||||
screen = Screen.new(20, 3)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
inc = {reverse = true}
|
||||
inc = {reverse = true},
|
||||
err = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
|
||||
more = { bold = true, foreground = Screen.colors.SeaGreen4 },
|
||||
tilde = { bold = true, foreground = Screen.colors.Blue1 },
|
||||
})
|
||||
end)
|
||||
|
||||
@ -404,15 +407,7 @@ describe('search cmdline', function()
|
||||
end)
|
||||
|
||||
it('keeps the view after deleting a char from the search', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(20, 6)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
inc = {reverse = true}
|
||||
})
|
||||
screen:set_default_attr_ignore({
|
||||
{bold=true, reverse=true}, {bold=true, foreground=Screen.colors.Blue1}
|
||||
})
|
||||
screen:try_resize(20, 6)
|
||||
tenlines()
|
||||
|
||||
feed('/foo')
|
||||
@ -448,14 +443,7 @@ describe('search cmdline', function()
|
||||
end)
|
||||
|
||||
it('restores original view after failed search', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(40, 3)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
inc = {reverse = true},
|
||||
err = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
|
||||
more = { bold = true, foreground = Screen.colors.SeaGreen4 },
|
||||
})
|
||||
screen:try_resize(40, 3)
|
||||
tenlines()
|
||||
feed('0')
|
||||
feed('/foo')
|
||||
@ -484,15 +472,7 @@ describe('search cmdline', function()
|
||||
|
||||
it("CTRL-G with 'incsearch' and ? goes in the right direction", function()
|
||||
-- oldtest: Test_search_cmdline4().
|
||||
screen:detach()
|
||||
screen = Screen.new(40, 4)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
inc = {reverse = true},
|
||||
err = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
|
||||
more = { bold = true, foreground = Screen.colors.SeaGreen4 },
|
||||
tilde = { bold = true, foreground = Screen.colors.Blue1 },
|
||||
})
|
||||
screen:try_resize(40, 4)
|
||||
command('enew!')
|
||||
funcs.setline(1, {' 1 the first', ' 2 the second', ' 3 the third'})
|
||||
command('set laststatus=0 shortmess+=s')
|
||||
|
@ -16,10 +16,6 @@ describe("'fillchars'", function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
local function shouldfail(val,errval)
|
||||
errval = errval or val
|
||||
eq('Vim(set):E474: Invalid argument: fillchars='..errval,
|
||||
@ -100,10 +96,6 @@ describe("'listchars'", function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('is local to window', function()
|
||||
feed('i<tab><tab><tab><esc>')
|
||||
command('set laststatus=0')
|
||||
|
@ -116,8 +116,6 @@ describe('health.vim', function()
|
||||
screen:set_default_attr_ids({
|
||||
Ok = { foreground = Screen.colors.Grey3, background = 6291200 },
|
||||
Error = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
|
||||
})
|
||||
screen:set_default_attr_ignore({
|
||||
Heading = { bold=true, foreground=Screen.colors.Magenta },
|
||||
Heading2 = { foreground = Screen.colors.SlateBlue },
|
||||
Bar = { foreground=Screen.colors.Purple },
|
||||
@ -126,18 +124,18 @@ describe('health.vim', function()
|
||||
command("checkhealth foo success1")
|
||||
command("1tabclose")
|
||||
command("set laststatus=0")
|
||||
screen:expect([[
|
||||
screen:expect{grid=[[
|
||||
^ |
|
||||
health#foo#check |
|
||||
========================================================================|
|
||||
- {Error:ERROR:} No healthcheck found for "foo" plugin. |
|
||||
{Heading:health#foo#check} |
|
||||
{Bar:========================================================================}|
|
||||
{Bullet: -} {Error:ERROR:} No healthcheck found for "foo" plugin. |
|
||||
|
|
||||
health#success1#check |
|
||||
========================================================================|
|
||||
## report 1 |
|
||||
- {Ok:OK:} everything is fine |
|
||||
{Heading:health#success1#check} |
|
||||
{Bar:========================================================================}|
|
||||
{Heading2:##}{Heading: report 1} |
|
||||
{Bullet: -} {Ok:OK:} everything is fine |
|
||||
|
|
||||
]])
|
||||
]]}
|
||||
end)
|
||||
|
||||
it("gracefully handles invalid healthcheck", function()
|
||||
|
@ -19,38 +19,32 @@ describe(':Man', function()
|
||||
u = { underline = true },
|
||||
bi = { bold = true, italic = true },
|
||||
biu = { bold = true, italic = true, underline = true },
|
||||
})
|
||||
screen:set_default_attr_ignore({
|
||||
{ foreground = Screen.colors.Blue }, -- control chars
|
||||
{ bold = true, foreground = Screen.colors.Blue } -- empty line '~'s
|
||||
c = { foreground = Screen.colors.Blue }, -- control chars
|
||||
eob = { bold = true, foreground = Screen.colors.Blue } -- empty line '~'s
|
||||
})
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('clears backspaces from text and adds highlights', function()
|
||||
rawfeed([[
|
||||
ithis i<C-v><C-h>is<C-v><C-h>s a<C-v><C-h>a test
|
||||
with _<C-v><C-h>o_<C-v><C-h>v_<C-v><C-h>e_<C-v><C-h>r_<C-v><C-h>s_<C-v><C-h>t_<C-v><C-h>r_<C-v><C-h>u_<C-v><C-h>c_<C-v><C-h>k text<ESC>]])
|
||||
|
||||
screen:expect([[
|
||||
this i^His^Hs a^Ha test |
|
||||
with _^Ho_^Hv_^He_^Hr_^Hs_^Ht_^Hr_^Hu_^Hc_^Hk tex^t |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]])
|
||||
screen:expect{grid=[[
|
||||
this i{c:^H}is{c:^H}s a{c:^H}a test |
|
||||
with _{c:^H}o_{c:^H}v_{c:^H}e_{c:^H}r_{c:^H}s_{c:^H}t_{c:^H}r_{c:^H}u_{c:^H}c_{c:^H}k tex^t |
|
||||
{eob:~ }|
|
||||
{eob:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
eval('man#init_pager()')
|
||||
|
||||
screen:expect([[
|
||||
^this {b:is} {b:a} test |
|
||||
with {u:overstruck} text |
|
||||
~ |
|
||||
~ |
|
||||
{eob:~ }|
|
||||
{eob:~ }|
|
||||
|
|
||||
]])
|
||||
end)
|
||||
@ -60,21 +54,21 @@ describe(':Man', function()
|
||||
ithis <C-v><ESC>[1mis <C-v><ESC>[3ma <C-v><ESC>[4mtest<C-v><ESC>[0m
|
||||
<C-v><ESC>[4mwith<C-v><ESC>[24m <C-v><ESC>[4mescaped<C-v><ESC>[24m <C-v><ESC>[4mtext<C-v><ESC>[24m<ESC>]])
|
||||
|
||||
screen:expect([=[
|
||||
this ^[[1mis ^[[3ma ^[[4mtest^[[0m |
|
||||
^[[4mwith^[[24m ^[[4mescaped^[[24m ^[[4mtext^[[24^m |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]=])
|
||||
screen:expect{grid=[=[
|
||||
this {c:^[}[1mis {c:^[}[3ma {c:^[}[4mtest{c:^[}[0m |
|
||||
{c:^[}[4mwith{c:^[}[24m {c:^[}[4mescaped{c:^[}[24m {c:^[}[4mtext{c:^[}[24^m |
|
||||
{eob:~ }|
|
||||
{eob:~ }|
|
||||
|
|
||||
]=]}
|
||||
|
||||
eval('man#init_pager()')
|
||||
|
||||
screen:expect([[
|
||||
^this {b:is }{bi:a }{biu:test} |
|
||||
{u:with} {u:escaped} {u:text} |
|
||||
~ |
|
||||
~ |
|
||||
{eob:~ }|
|
||||
{eob:~ }|
|
||||
|
|
||||
]])
|
||||
end)
|
||||
@ -88,8 +82,8 @@ describe(':Man', function()
|
||||
screen:expect([[
|
||||
^this {b:is} {b:あ} test |
|
||||
with {u:överstrũck} te{i:xt¶} |
|
||||
~ |
|
||||
~ |
|
||||
{eob:~ }|
|
||||
{eob:~ }|
|
||||
|
|
||||
]])
|
||||
end)
|
||||
@ -105,7 +99,7 @@ describe(':Man', function()
|
||||
{b:^_begins} |
|
||||
{b:mid_dle} |
|
||||
{u:mid_dle} |
|
||||
~ |
|
||||
{eob:~ }|
|
||||
|
|
||||
]])
|
||||
end)
|
||||
@ -121,7 +115,7 @@ describe(':Man', function()
|
||||
^· {b:·} |
|
||||
{b:·} |
|
||||
{b:·} double |
|
||||
~ |
|
||||
{eob:~ }|
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
@ -88,6 +88,11 @@ describe('clipboard', function()
|
||||
before_each(function()
|
||||
clear()
|
||||
screen = Screen.new(72, 4)
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold = true, foreground = Screen.colors.Blue},
|
||||
[1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||
[2] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||
})
|
||||
screen:attach()
|
||||
command("set display-=msgsep")
|
||||
end)
|
||||
@ -103,22 +108,22 @@ describe('clipboard', function()
|
||||
feed_command('redir @+> | :silent echo system("cat CONTRIBUTING.md") | redir END')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
|
||||
]], nil, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
]])
|
||||
end)
|
||||
|
||||
it('`:redir @+>|bogus_cmd|redir END` + invalid g:clipboard must not recurse #7184',
|
||||
function()
|
||||
command("let g:clipboard = 'bogus'")
|
||||
feed_command('redir @+> | bogus_cmd | redir END')
|
||||
screen:expect([[
|
||||
~ |
|
||||
screen:expect{grid=[[
|
||||
{0:~ }|
|
||||
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
|
||||
E492: Not an editor command: bogus_cmd | redir END |
|
||||
Press ENTER or type command to continue^ |
|
||||
]], nil, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
{1:E492: Not an editor command: bogus_cmd | redir END} |
|
||||
{2:Press ENTER or type command to continue}^ |
|
||||
]]}
|
||||
end)
|
||||
|
||||
it('invalid g:clipboard shows hint if :redir is not active', function()
|
||||
@ -131,10 +136,10 @@ describe('clipboard', function()
|
||||
feed_command('let @+="foo"')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
|
||||
]], nil, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
]])
|
||||
end)
|
||||
|
||||
it('valid g:clipboard', function()
|
||||
@ -266,13 +271,17 @@ describe('clipboard (with fake clipboard.vim)', function()
|
||||
function()
|
||||
local screen = Screen.new(72, 4)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold = true, foreground = Screen.colors.Blue},
|
||||
[1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||
})
|
||||
feed_command('redir @+> | bogus_cmd | redir END')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
E492: Not an editor command: bogus_cmd | redir END |
|
||||
]], nil, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{1:E492: Not an editor command: bogus_cmd | redir END} |
|
||||
]])
|
||||
end)
|
||||
|
||||
it('has independent "* and unnamed registers by default', function()
|
||||
@ -637,6 +646,9 @@ describe('clipboard (with fake clipboard.vim)', function()
|
||||
feed_command('set mouse=a')
|
||||
|
||||
local screen = Screen.new(30, 5)
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold = true, foreground = Screen.colors.Blue},
|
||||
})
|
||||
screen:attach()
|
||||
insert([[
|
||||
the source
|
||||
@ -646,10 +658,10 @@ describe('clipboard (with fake clipboard.vim)', function()
|
||||
screen:expect([[
|
||||
the ^source |
|
||||
a target |
|
||||
~ |
|
||||
~ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
|
|
||||
]], nil, {{bold = true, foreground = Screen.colors.Blue}})
|
||||
]])
|
||||
|
||||
feed('<MiddleMouse><0,1>')
|
||||
expect([[
|
||||
|
@ -208,18 +208,18 @@ describe(':terminal buffer', function()
|
||||
feed_command('terminal')
|
||||
feed('<c-\\><c-n>')
|
||||
feed_command('confirm bdelete')
|
||||
screen:expect{any='Close "term://', attr_ignore=true}
|
||||
screen:expect{any='Close "term://'}
|
||||
end)
|
||||
|
||||
it('with &confirm', function()
|
||||
feed_command('terminal')
|
||||
feed('<c-\\><c-n>')
|
||||
feed_command('bdelete')
|
||||
screen:expect{any='E89', attr_ignore=true}
|
||||
screen:expect{any='E89'}
|
||||
feed('<cr>')
|
||||
eq('terminal', eval('&buftype'))
|
||||
feed_command('set confirm | bdelete')
|
||||
screen:expect{any='Close "term://', attr_ignore=true}
|
||||
screen:expect{any='Close "term://'}
|
||||
feed('y')
|
||||
neq('terminal', eval('&buftype'))
|
||||
end)
|
||||
|
@ -52,7 +52,7 @@ local function screen_setup(extra_rows, command, cols, opts)
|
||||
[3] = {bold = true},
|
||||
[4] = {foreground = 12},
|
||||
[5] = {bold = true, reverse = true},
|
||||
[6] = {background = 11},
|
||||
-- 6 was a duplicate item
|
||||
[7] = {foreground = 130},
|
||||
[8] = {foreground = 15, background = 1}, -- error message
|
||||
[9] = {foreground = 4},
|
||||
|
@ -31,10 +31,6 @@ describe(':terminal mouse', function()
|
||||
]])
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
describe('when the terminal has focus', function()
|
||||
it('will exit focus on mouse-scroll', function()
|
||||
eq('t', eval('mode()'))
|
||||
|
@ -21,10 +21,6 @@ describe(':terminal scrollback', function()
|
||||
screen = thelpers.screen_setup(nil, nil, 30)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
describe('when the limit is exceeded', function()
|
||||
before_each(function()
|
||||
local lines = {}
|
||||
@ -406,8 +402,6 @@ describe("'scrollback' option", function()
|
||||
feed_data(nvim_dir..'/shell-test REP 31 line'..(iswin() and '\r' or '\n'))
|
||||
screen:expect{any='30: line '}
|
||||
retry(nil, nil, function() expect_lines(7) end)
|
||||
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('deletes lines (only) if necessary', function()
|
||||
@ -464,8 +458,6 @@ describe("'scrollback' option", function()
|
||||
-- Verify off-screen state
|
||||
eq((iswin() and '36: line' or '35: line'), eval("getline(line('w0') - 1)"))
|
||||
eq((iswin() and '27: line' or '26: line'), eval("getline(line('w0') - 10)"))
|
||||
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('defaults to 10000 in :terminal buffers', function()
|
||||
|
@ -45,10 +45,6 @@ describe('TUI', function()
|
||||
child_session = helpers.connect(child_server)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
-- Wait for mode in the child Nvim (avoid "typeahead race" #10826).
|
||||
local function wait_for_mode(mode)
|
||||
retry(nil, nil, function()
|
||||
|
@ -37,10 +37,6 @@ describe('Buffer highlighting', function()
|
||||
})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
local add_highlight = curbufmeths.add_highlight
|
||||
local clear_namespace = curbufmeths.clear_namespace
|
||||
|
||||
|
@ -25,10 +25,6 @@ local function test_cmdline(linegrid)
|
||||
screen = new_screen({rgb=true, ext_cmdline=true, ext_linegrid=linegrid})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('works', function()
|
||||
feed(':')
|
||||
screen:expect{grid=[[
|
||||
@ -804,10 +800,6 @@ describe('cmdline redraw', function()
|
||||
screen = new_screen({rgb=true})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('with timer', function()
|
||||
feed(':012345678901234567890123456789')
|
||||
screen:expect{grid=[[
|
||||
|
@ -13,10 +13,6 @@ describe('ui/cursor', function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("'guicursor' is published as a UI event", function()
|
||||
local expected_mode_info = {
|
||||
[1] = {
|
||||
|
@ -24,10 +24,6 @@ describe("folded lines", function()
|
||||
})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("work with more than one signcolumn", function()
|
||||
command("set signcolumn=yes:9")
|
||||
feed("i<cr><esc>")
|
||||
|
@ -35,7 +35,6 @@ describe('highlight: `:syntax manual`', function()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
os.remove('Xtest-functional-ui-highlight.tmp.vim')
|
||||
end)
|
||||
|
||||
@ -97,10 +96,6 @@ describe('highlight defaults', function()
|
||||
command("set display-=msgsep")
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('window status bar', function()
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold=true, foreground=Screen.colors.Blue},
|
||||
@ -346,17 +341,10 @@ describe('highlight defaults', function()
|
||||
end)
|
||||
|
||||
describe('highlight', function()
|
||||
local screen
|
||||
|
||||
before_each(function()
|
||||
clear()
|
||||
screen = Screen.new(25,10)
|
||||
screen:attach()
|
||||
end)
|
||||
before_each(clear)
|
||||
|
||||
it('visual', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(20,4)
|
||||
local screen = Screen.new(20,4)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
[1] = {background = Screen.colors.LightGrey},
|
||||
@ -389,8 +377,7 @@ describe('highlight', function()
|
||||
end)
|
||||
|
||||
it('cterm=standout gui=standout', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(20,5)
|
||||
local screen = Screen.new(20,5)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
[1] = {bold = true, foreground = Screen.colors.Blue1},
|
||||
@ -413,8 +400,7 @@ describe('highlight', function()
|
||||
end)
|
||||
|
||||
it('strikethrough', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(25,6)
|
||||
local screen = Screen.new(25,6)
|
||||
screen:attach()
|
||||
feed_command('syntax on')
|
||||
feed_command('syn keyword TmpKeyword foo')
|
||||
@ -439,8 +425,7 @@ describe('highlight', function()
|
||||
end)
|
||||
|
||||
it('nocombine', function()
|
||||
screen:detach()
|
||||
screen = Screen.new(25,6)
|
||||
local screen = Screen.new(25,6)
|
||||
screen:set_default_attr_ids{
|
||||
[1] = {foreground = Screen.colors.SlateBlue, underline = true},
|
||||
[2] = {bold = true, foreground = Screen.colors.Blue1},
|
||||
@ -487,6 +472,8 @@ describe('highlight', function()
|
||||
end)
|
||||
|
||||
it('guisp (special/undercurl)', function()
|
||||
local screen = Screen.new(25,10)
|
||||
screen:attach()
|
||||
feed_command('syntax on')
|
||||
feed_command('syn keyword TmpKeyword neovim')
|
||||
feed_command('syn keyword TmpKeyword1 special')
|
||||
@ -542,10 +529,6 @@ describe("'listchars' highlight", function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("'cursorline' and 'cursorcolumn'", function()
|
||||
screen:set_default_attr_ids({
|
||||
[0] = {bold=true, foreground=Screen.colors.Blue},
|
||||
|
@ -259,7 +259,7 @@ describe('ext_hlstate detailed highlights', function()
|
||||
|
||||
it("can use independent cterm and rgb colors", function()
|
||||
-- tell test module to save all attributes (doesn't change nvim options)
|
||||
screen:set_hlstate_cterm(true)
|
||||
screen:set_rgb_cterm(true)
|
||||
|
||||
screen:set_default_attr_ids({
|
||||
[1] = {{bold = true, foreground = Screen.colors.Blue1}, {foreground = 12}, {{hi_name = "NonText", ui_name = "EndOfBuffer", kind = "ui"}}},
|
||||
|
@ -556,7 +556,6 @@ describe(":substitute, 'inccommand' preserves undo", function()
|
||||
]])
|
||||
end
|
||||
end
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('with undolevels=2', function()
|
||||
@ -647,7 +646,6 @@ describe(":substitute, 'inccommand' preserves undo", function()
|
||||
Already ...t change |
|
||||
]])
|
||||
end
|
||||
screen:detach()
|
||||
end
|
||||
end)
|
||||
|
||||
@ -713,7 +711,6 @@ describe(":substitute, 'inccommand' preserves undo", function()
|
||||
Already ...t change |
|
||||
]])
|
||||
end
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
end)
|
||||
@ -726,10 +723,6 @@ describe(":substitute, inccommand=split", function()
|
||||
common_setup(screen, "split", default_text .. default_text)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("preserves 'modified' buffer flag", function()
|
||||
feed_command("set nomodified")
|
||||
feed(":%s/tw")
|
||||
@ -1241,10 +1234,6 @@ describe("inccommand=nosplit", function()
|
||||
common_setup(screen, "nosplit", default_text .. default_text)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
if screen then screen:detach() end
|
||||
end)
|
||||
|
||||
it("works with :smagic, :snomagic", function()
|
||||
feed_command("set hlsearch")
|
||||
insert("Line *.3.* here")
|
||||
@ -1719,10 +1708,6 @@ describe("'inccommand' split windows", function()
|
||||
common_setup(screen, "split", default_text)
|
||||
end
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('work after more splits', function()
|
||||
refresh()
|
||||
|
||||
|
@ -26,6 +26,8 @@ describe('ui/mouse/input', function()
|
||||
},
|
||||
[4] = {reverse = true},
|
||||
[5] = {bold = true, reverse = true},
|
||||
[6] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||
[7] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||
})
|
||||
command("set display-=msgsep")
|
||||
feed('itesting<cr>mouse<cr>support and selection<esc>')
|
||||
@ -38,10 +40,6 @@ describe('ui/mouse/input', function()
|
||||
]])
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('single left click moves cursor', function()
|
||||
feed('<LeftMouse><2,1>')
|
||||
screen:expect([[
|
||||
@ -620,12 +618,12 @@ describe('ui/mouse/input', function()
|
||||
meths.set_option('tags', './non-existent-tags-file')
|
||||
feed('<C-LeftMouse><0,0>')
|
||||
screen:expect([[
|
||||
E433: No tags file |
|
||||
E426: tag not found: test|
|
||||
ing |
|
||||
Press ENTER or type comma|
|
||||
nd to continue^ |
|
||||
]],nil,true)
|
||||
{6:E433: No tags file} |
|
||||
{6:E426: tag not found: test}|
|
||||
{6:ing} |
|
||||
{7:Press ENTER or type comma}|
|
||||
{7:nd to continue}^ |
|
||||
]])
|
||||
feed('<cr>')
|
||||
end)
|
||||
|
||||
|
@ -21,10 +21,6 @@ describe("multibyte rendering", function()
|
||||
})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("works with composed char at start of line", function()
|
||||
insert([[
|
||||
̊
|
||||
@ -131,10 +127,6 @@ describe('multibyte rendering: statusline', function()
|
||||
command('set laststatus=2')
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('last char shows (multibyte)', function()
|
||||
command('set statusline=你好')
|
||||
screen:expect([[
|
||||
|
@ -37,10 +37,6 @@ describe('ext_multigrid', function()
|
||||
})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('default initial screen', function()
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
|
@ -40,10 +40,6 @@ describe('ui receives option updates', function()
|
||||
return defaults
|
||||
end
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("for defaults", function()
|
||||
local expected = reset()
|
||||
screen:expect(function()
|
||||
|
@ -31,7 +31,6 @@ describe("shell command :!", function()
|
||||
|
||||
after_each(function()
|
||||
child_session.feed_data("\3") -- Ctrl-C
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it("displays output without LF/EOF. #4646 #4569 #3772", function()
|
||||
|
@ -66,7 +66,6 @@
|
||||
-- [1] = {reverse = true, bold = true},
|
||||
-- [2] = {reverse = true}
|
||||
-- })
|
||||
-- screen:set_default_attr_ignore( {{}, {bold=true, foreground=NonText}} )
|
||||
--
|
||||
-- To help write screen tests, see Screen:snapshot_util().
|
||||
-- To debug screen tests, see Screen:redraw_debug().
|
||||
@ -169,12 +168,11 @@ function Screen.new(width, height)
|
||||
ruler = {},
|
||||
hl_groups = {},
|
||||
_default_attr_ids = nil,
|
||||
_default_attr_ignore = nil,
|
||||
_mouse_enabled = true,
|
||||
_attrs = {},
|
||||
_hl_info = {},
|
||||
_hl_info = {[0]={}},
|
||||
_attr_table = {[0]={{},{}}},
|
||||
_clear_attrs = {},
|
||||
_clear_attrs = nil,
|
||||
_new_attrs = false,
|
||||
_width = width,
|
||||
_height = height,
|
||||
@ -202,12 +200,8 @@ function Screen:get_default_attr_ids()
|
||||
return deepcopy(self._default_attr_ids)
|
||||
end
|
||||
|
||||
function Screen:set_default_attr_ignore(attr_ignore)
|
||||
self._default_attr_ignore = attr_ignore
|
||||
end
|
||||
|
||||
function Screen:set_hlstate_cterm(val)
|
||||
self._hlstate_cterm = val
|
||||
function Screen:set_rgb_cterm(val)
|
||||
self._rgb_cterm = val
|
||||
end
|
||||
|
||||
function Screen:attach(options, session)
|
||||
@ -223,7 +217,7 @@ function Screen:attach(options, session)
|
||||
|
||||
self._session = session
|
||||
self._options = options
|
||||
self._clear_attrs = (options.ext_linegrid and {{},{}}) or {}
|
||||
self._clear_attrs = (not options.ext_linegrid) and {} or nil
|
||||
self:_handle_resize(self._width, self._height)
|
||||
self.uimeths.attach(self._width, self._height, options)
|
||||
if self._options.rgb == nil then
|
||||
@ -265,7 +259,7 @@ local ext_keys = {
|
||||
-- Asserts that the screen state eventually matches an expected state.
|
||||
--
|
||||
-- Can be called with positional args:
|
||||
-- screen:expect(grid, [attr_ids, attr_ignore])
|
||||
-- screen:expect(grid, [attr_ids])
|
||||
-- screen:expect(condition)
|
||||
-- or keyword args (supports more options):
|
||||
-- screen:expect{grid=[[...]], cmdline={...}, condition=function() ... end}
|
||||
@ -282,8 +276,6 @@ local ext_keys = {
|
||||
-- attributes in the final state are an error.
|
||||
-- Use screen:set_default_attr_ids() to define attributes for many
|
||||
-- expect() calls.
|
||||
-- attr_ignore: Ignored text attributes, or `true` to ignore all. By default
|
||||
-- nothing is ignored.
|
||||
-- condition: Function asserting some arbitrary condition. Return value is
|
||||
-- ignored, throw an error (use eq() or similar) to signal failure.
|
||||
-- any: Lua pattern string expected to match a screen line. NB: the
|
||||
@ -318,13 +310,13 @@ local ext_keys = {
|
||||
-- cmdline_block: Expected ext_cmdline block (for function definitions)
|
||||
-- wildmenu_items: Expected items for ext_wildmenu
|
||||
-- wildmenu_pos: Expected position for ext_wildmenu
|
||||
function Screen:expect(expected, attr_ids, attr_ignore, ...)
|
||||
function Screen:expect(expected, attr_ids, ...)
|
||||
local grid, condition = nil, nil
|
||||
local expected_rows = {}
|
||||
assert(next({...}) == nil, "invalid args to expect()")
|
||||
if type(expected) == "table" then
|
||||
assert(not (attr_ids ~= nil or attr_ignore ~= nil))
|
||||
local is_key = {grid=true, attr_ids=true, attr_ignore=true, condition=true,
|
||||
assert(not (attr_ids ~= nil))
|
||||
local is_key = {grid=true, attr_ids=true, condition=true,
|
||||
any=true, mode=true, unchanged=true, intermediate=true,
|
||||
reset=true, timeout=true, request_cb=true, hl_groups=true}
|
||||
for _, v in ipairs(ext_keys) do
|
||||
@ -337,14 +329,13 @@ function Screen:expect(expected, attr_ids, attr_ignore, ...)
|
||||
end
|
||||
grid = expected.grid
|
||||
attr_ids = expected.attr_ids
|
||||
attr_ignore = expected.attr_ignore
|
||||
condition = expected.condition
|
||||
assert(not (expected.any ~= nil and grid ~= nil))
|
||||
elseif type(expected) == "string" then
|
||||
grid = expected
|
||||
expected = {}
|
||||
elseif type(expected) == "function" then
|
||||
assert(not (attr_ids ~= nil or attr_ignore ~= nil))
|
||||
assert(not (attr_ids ~= nil))
|
||||
condition = expected
|
||||
expected = {}
|
||||
else
|
||||
@ -361,10 +352,9 @@ function Screen:expect(expected, attr_ids, attr_ignore, ...)
|
||||
end
|
||||
local attr_state = {
|
||||
ids = attr_ids or self._default_attr_ids,
|
||||
ignore = attr_ignore or self._default_attr_ignore,
|
||||
}
|
||||
if self._options.ext_hlstate then
|
||||
attr_state.id_to_index = self:hlstate_check_attrs(attr_state.ids or {})
|
||||
if self._options.ext_linegrid then
|
||||
attr_state.id_to_index = self:linegrid_check_attrs(attr_state.ids or {})
|
||||
end
|
||||
self._new_attrs = false
|
||||
self:_wait(function()
|
||||
@ -375,8 +365,8 @@ function Screen:expect(expected, attr_ids, attr_ignore, ...)
|
||||
end
|
||||
end
|
||||
|
||||
if self._options.ext_hlstate and self._new_attrs then
|
||||
attr_state.id_to_index = self:hlstate_check_attrs(attr_state.ids or {})
|
||||
if self._options.ext_linegrid and self._new_attrs then
|
||||
attr_state.id_to_index = self:linegrid_check_attrs(attr_state.ids or {})
|
||||
end
|
||||
|
||||
local actual_rows = self:render(not expected.any, attr_state)
|
||||
@ -898,19 +888,16 @@ function Screen:_handle_grid_line(grid, row, col, items)
|
||||
assert(self._options.ext_linegrid)
|
||||
local line = self._grids[grid].rows[row+1]
|
||||
local colpos = col+1
|
||||
local hl = self._clear_attrs
|
||||
local hl_id = 0
|
||||
for _,item in ipairs(items) do
|
||||
local text, hl_id_cell, count = unpack(item)
|
||||
if hl_id_cell ~= nil then
|
||||
hl_id = hl_id_cell
|
||||
hl = self._attr_table[hl_id]
|
||||
end
|
||||
for _ = 1, (count or 1) do
|
||||
local cell = line[colpos]
|
||||
cell.text = text
|
||||
cell.hl_id = hl_id
|
||||
cell.attrs = hl
|
||||
colpos = colpos+1
|
||||
end
|
||||
end
|
||||
@ -1070,6 +1057,7 @@ function Screen:_clear_row_section(grid, rownum, startcol, stopcol, invalid)
|
||||
for i = startcol, stopcol do
|
||||
row[i].text = (invalid and '<EFBFBD>' or ' ')
|
||||
row[i].attrs = self._clear_attrs
|
||||
row[i].hl_id = 0
|
||||
end
|
||||
end
|
||||
|
||||
@ -1100,11 +1088,7 @@ function Screen:_row_repr(gridnr, rownr, attr_state, cursor)
|
||||
end
|
||||
|
||||
if not did_window then
|
||||
local attrs = row[i].attrs
|
||||
if self._options.ext_linegrid then
|
||||
attrs = attrs[(self._options.rgb and 1) or 2]
|
||||
end
|
||||
local attr_id = self:_get_attr_id(attr_state, attrs, row[i].hl_id)
|
||||
local attr_id = self:_get_attr_id(attr_state, row[i].attrs, row[i].hl_id)
|
||||
if current_attr_id and attr_id ~= current_attr_id then
|
||||
-- close current attribute bracket
|
||||
table.insert(rv, '}')
|
||||
@ -1261,8 +1245,8 @@ function Screen:get_snapshot(attrs, ignore)
|
||||
attr_state.ids[i] = a
|
||||
end
|
||||
end
|
||||
if self._options.ext_hlstate then
|
||||
attr_state.id_to_index = self:hlstate_check_attrs(attr_state.ids)
|
||||
if self._options.ext_linegrid then
|
||||
attr_state.id_to_index = self:linegrid_check_attrs(attr_state.ids)
|
||||
end
|
||||
|
||||
local lines = self:render(true, attr_state, true)
|
||||
@ -1299,8 +1283,8 @@ function Screen:print_snapshot(attrs, ignore)
|
||||
local attrstrs = {}
|
||||
for i, a in pairs(attr_state.ids) do
|
||||
local dict
|
||||
if self._options.ext_hlstate then
|
||||
dict = self:_pprint_hlstate(a)
|
||||
if self._options.ext_linegrid then
|
||||
dict = self:_pprint_hlitem(a)
|
||||
else
|
||||
dict = "{"..self:_pprint_attrs(a).."}"
|
||||
end
|
||||
@ -1328,37 +1312,41 @@ function Screen:_insert_hl_id(attr_state, hl_id)
|
||||
return attr_state.id_to_index[hl_id]
|
||||
end
|
||||
local raw_info = self._hl_info[hl_id]
|
||||
local info = {}
|
||||
if #raw_info > 1 then
|
||||
for i, item in ipairs(raw_info) do
|
||||
info[i] = self:_insert_hl_id(attr_state, item.id)
|
||||
end
|
||||
else
|
||||
info[1] = {}
|
||||
for k, v in pairs(raw_info[1]) do
|
||||
if k ~= "id" then
|
||||
info[1][k] = v
|
||||
local info = nil
|
||||
if self._options.ext_hlstate then
|
||||
info = {}
|
||||
if #raw_info > 1 then
|
||||
for i, item in ipairs(raw_info) do
|
||||
info[i] = self:_insert_hl_id(attr_state, item.id)
|
||||
end
|
||||
else
|
||||
info[1] = {}
|
||||
for k, v in pairs(raw_info[1]) do
|
||||
if k ~= "id" then
|
||||
info[1][k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local entry = self._attr_table[hl_id]
|
||||
local attrval
|
||||
if self._hlstate_cterm then
|
||||
if self._rgb_cterm then
|
||||
attrval = {entry[1], entry[2], info} -- unpack() doesn't work
|
||||
else
|
||||
elseif self._options.ext_hlstate then
|
||||
attrval = {entry[1], info}
|
||||
else
|
||||
attrval = self._options.rgb and entry[1] or entry[2]
|
||||
end
|
||||
|
||||
|
||||
table.insert(attr_state.ids, attrval)
|
||||
attr_state.id_to_index[hl_id] = #attr_state.ids
|
||||
return #attr_state.ids
|
||||
end
|
||||
|
||||
function Screen:hlstate_check_attrs(attrs)
|
||||
function Screen:linegrid_check_attrs(attrs)
|
||||
local id_to_index = {}
|
||||
for i = 1,#self._attr_table do
|
||||
for i, def_attr in pairs(self._attr_table) do
|
||||
local iinfo = self._hl_info[i]
|
||||
local matchinfo = {}
|
||||
if #iinfo > 1 then
|
||||
@ -1370,13 +1358,16 @@ function Screen:hlstate_check_attrs(attrs)
|
||||
end
|
||||
for k,v in pairs(attrs) do
|
||||
local attr, info, attr_rgb, attr_cterm
|
||||
if self._hlstate_cterm then
|
||||
if self._rgb_cterm then
|
||||
attr_rgb, attr_cterm, info = unpack(v)
|
||||
attr = {attr_rgb, attr_cterm}
|
||||
else
|
||||
elseif self._options.ext_hlstate then
|
||||
attr, info = unpack(v)
|
||||
else
|
||||
attr = v
|
||||
info = {}
|
||||
end
|
||||
if self:_equal_attr_def(attr, self._attr_table[i]) then
|
||||
if self:_equal_attr_def(attr, def_attr) then
|
||||
if #info == #matchinfo then
|
||||
local match = false
|
||||
if #info == 1 then
|
||||
@ -1397,24 +1388,31 @@ function Screen:hlstate_check_attrs(attrs)
|
||||
end
|
||||
end
|
||||
end
|
||||
if self:_equal_attr_def(self._rgb_cterm and {{}, {}} or {}, def_attr) and #self._hl_info[i] == 0 then
|
||||
id_to_index[i] = ""
|
||||
end
|
||||
end
|
||||
return id_to_index
|
||||
end
|
||||
|
||||
|
||||
function Screen:_pprint_hlstate(item)
|
||||
function Screen:_pprint_hlitem(item)
|
||||
-- print(inspect(item))
|
||||
local attrdict = "{"..self:_pprint_attrs(item[1]).."}, "
|
||||
local multi = self._rgb_cterm or self._options.ext_hlstate
|
||||
local attrdict = "{"..self:_pprint_attrs(multi and item[1] or item).."}"
|
||||
local attrdict2, hlinfo
|
||||
if self._hlstate_cterm then
|
||||
attrdict2 = "{"..self:_pprint_attrs(item[2]).."}, "
|
||||
local descdict = ""
|
||||
if self._rgb_cterm then
|
||||
attrdict2 = ", {"..self:_pprint_attrs(item[2]).."}"
|
||||
hlinfo = item[3]
|
||||
else
|
||||
attrdict2 = ""
|
||||
hlinfo = item[2]
|
||||
end
|
||||
local descdict = "{"..self:_pprint_hlinfo(hlinfo).."}"
|
||||
return "{"..attrdict..attrdict2..descdict.."}"
|
||||
if self._options.ext_hlstate then
|
||||
descdict = ", {"..self:_pprint_hlinfo(hlinfo).."}"
|
||||
end
|
||||
return (multi and "{" or "")..attrdict..attrdict2..descdict..(multi and "}" or "")
|
||||
end
|
||||
|
||||
function Screen:_pprint_hlinfo(states)
|
||||
@ -1464,9 +1462,11 @@ function Screen:_get_attr_id(attr_state, attrs, hl_id)
|
||||
return
|
||||
end
|
||||
|
||||
if self._options.ext_hlstate then
|
||||
if self._options.ext_linegrid then
|
||||
local id = attr_state.id_to_index[hl_id]
|
||||
if id ~= nil or hl_id == 0 then
|
||||
if id == "" then -- sentinel for empty it
|
||||
return nil
|
||||
elseif id ~= nil then
|
||||
return id
|
||||
end
|
||||
if attr_state.mutable then
|
||||
@ -1476,9 +1476,7 @@ function Screen:_get_attr_id(attr_state, attrs, hl_id)
|
||||
end
|
||||
return "UNEXPECTED "..self:_pprint_attrs(self._attr_table[hl_id][1])
|
||||
else
|
||||
if self:_equal_attrs(attrs, {}) or
|
||||
attr_state.ignore == true or
|
||||
self:_attr_index(attr_state.ignore, attrs) ~= nil then
|
||||
if self:_equal_attrs(attrs, {}) then
|
||||
-- ignore this attrs
|
||||
return nil
|
||||
end
|
||||
@ -1497,10 +1495,12 @@ function Screen:_get_attr_id(attr_state, attrs, hl_id)
|
||||
end
|
||||
|
||||
function Screen:_equal_attr_def(a, b)
|
||||
if self._hlstate_cterm then
|
||||
if self._rgb_cterm then
|
||||
return self:_equal_attrs(a[1],b[1]) and self:_equal_attrs(a[2],b[2])
|
||||
else
|
||||
elseif self._options.rgb then
|
||||
return self:_equal_attrs(a,b[1])
|
||||
else
|
||||
return self:_equal_attrs(a,b[2])
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -26,10 +26,6 @@ describe('Signs', function()
|
||||
} )
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
describe(':sign place', function()
|
||||
it('allows signs with combining characters', function()
|
||||
feed('ia<cr>b<cr><esc>')
|
||||
|
@ -20,10 +20,6 @@ describe("'spell'", function()
|
||||
})
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('joins long lines #7937', function()
|
||||
feed_command('set spell')
|
||||
insert([[
|
||||
|
@ -22,10 +22,6 @@ describe('Screen', function()
|
||||
} )
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
describe("match and conceal", function()
|
||||
|
||||
before_each(function()
|
||||
|
@ -17,10 +17,6 @@ describe('ui/ext_tabline', function()
|
||||
end)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
it('publishes UI events', function()
|
||||
command("tabedit another-tab")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user