terminal: add tests for palette color forwarding

This commit is contained in:
Björn Linse 2019-11-02 10:57:07 +01:00
parent 33cdff1b5c
commit f707a7ef68
5 changed files with 111 additions and 15 deletions

View File

@ -67,7 +67,7 @@ describe('Command-line option', function()
|
|
]], {
[1] = {foreground = 4210943},
[1] = {foreground = tonumber('0x4040ff'), fg_indexed=true},
[2] = {bold = true, reverse = true}
})
feed('i:cq<CR>')

View File

@ -121,13 +121,12 @@ it(':terminal highlight has lower precedence than editor #9964', function()
local screen = Screen.new(30, 4)
screen:set_default_attr_ids({
-- "Normal" highlight emitted by the child nvim process.
N_child = {foreground = tonumber('0x4040ff'), background = tonumber('0xffff40')},
-- "Search" highlight emitted by the child nvim process.
S_child = {background = tonumber('0xffff40'), italic = true, foreground = tonumber('0x4040ff')},
N_child = {foreground = tonumber('0x4040ff'), background = tonumber('0xffff40'), fg_indexed=true, bg_indexed=true},
-- "Search" highlight in the parent nvim process.
S = {background = Screen.colors.Green, italic = true, foreground = Screen.colors.Red},
-- "Question" highlight in the parent nvim process.
Q = {background = tonumber('0xffff40'), bold = true, foreground = Screen.colors.SeaGreen4},
-- note: bg is indexed as it comes from the (cterm) child, while fg isn't as it comes from (rgb) parent
Q = {background = tonumber('0xffff40'), bold = true, foreground = Screen.colors.SeaGreen4, bg_indexed=true},
})
screen:attach({rgb=true})
-- Child nvim process in :terminal (with cterm colors).
@ -160,6 +159,54 @@ it(':terminal highlight has lower precedence than editor #9964', function()
]])
end)
describe(':terminal highlight forwarding', function()
local screen
before_each(function()
clear()
screen = Screen.new(50, 7)
screen:set_rgb_cterm(true)
screen:set_default_attr_ids({
[1] = {{reverse = true}, {reverse = true}},
[2] = {{bold = true}, {bold = true}},
[3] = {{fg_indexed = true, foreground = tonumber('0xe0e000')}, {foreground = 3}},
[4] = {{foreground = tonumber('0xff8000')}, {}},
})
screen:attach()
command('enew | call termopen(["'..nvim_dir..'/tty-test"])')
feed('i')
screen:expect([[
tty ready |
{1: } |
|
|
|
|
{2:-- TERMINAL --} |
]])
end)
it('will handle cterm and rgb attributes', function()
if helpers.pending_win32(pending) then return end
thelpers.set_fg(3)
thelpers.feed_data('text')
thelpers.feed_termcode('[38:2:255:128:0m')
thelpers.feed_data('color')
thelpers.clear_attrs()
thelpers.feed_data('text')
screen:expect{grid=[[
tty ready |
{3:text}{4:color}text{1: } |
|
|
|
|
{2:-- TERMINAL --} |
]]}
end)
end)
describe(':terminal highlight with custom palette', function()
local screen
@ -167,7 +214,7 @@ describe(':terminal highlight with custom palette', function()
clear()
screen = Screen.new(50, 7)
screen:set_default_attr_ids({
[1] = {foreground = tonumber('0x123456')},
[1] = {foreground = tonumber('0x123456')}, -- no fg_indexed when overriden
[2] = {foreground = 12},
[3] = {bold = true, reverse = true},
[5] = {background = 11},

View File

@ -680,11 +680,11 @@ describe('TUI', function()
screen:set_option('rgb', true)
screen:set_default_attr_ids({
[1] = {reverse = true},
[2] = {foreground = tonumber('0x4040ff')},
[2] = {foreground = tonumber('0x4040ff'), fg_indexed=true},
[3] = {bold = true, reverse = true},
[4] = {bold = true},
[5] = {reverse = true, foreground = tonumber('0xe0e000')},
[6] = {foreground = tonumber('0xe0e000')},
[5] = {reverse = true, foreground = tonumber('0xe0e000'), fg_indexed=true},
[6] = {foreground = tonumber('0xe0e000'), fg_indexed=true},
[7] = {reverse = true, foreground = Screen.colors.SeaGreen4},
[8] = {foreground = Screen.colors.SeaGreen4},
[9] = {bold = true, foreground = Screen.colors.Blue1},
@ -728,6 +728,54 @@ describe('TUI', function()
]])
end)
it('forwards :term palette colors with termguicolors', function()
screen:set_rgb_cterm(true)
screen:set_default_attr_ids({
[1] = {{reverse = true}, {reverse = true}},
[2] = {{bold = true, reverse = true}, {bold = true, reverse = true}},
[3] = {{bold = true}, {bold = true}},
[4] = {{fg_indexed = true, foreground = tonumber('0xe0e000')}, {foreground = 3}},
[5] = {{foreground = tonumber('0xff8000')}, {}},
})
feed_data(':set statusline=^^^^^^^\n')
feed_data(':set termguicolors\n')
feed_data(':terminal '..nvim_dir..'/tty-test\n')
-- Depending on platform the above might or might not fit in the cmdline
-- so clear it for consistent behavior.
feed_data(':\027')
screen:expect{grid=[[
{1:t}ty ready |
|
|
|
{2:^^^^^^^ }|
|
{3:-- TERMINAL --} |
]]}
feed_data(':call chansend(&channel, "\\033[38;5;3mtext\\033[38:2:255:128:0mcolor\\033[0;10mtext")\n')
screen:expect{grid=[[
{1:t}ty ready |
{4:text}{5:color}text |
|
|
{2:^^^^^^^ }|
|
{3:-- TERMINAL --} |
]]}
feed_data(':set notermguicolors\n')
screen:expect{grid=[[
{1:t}ty ready |
{4:text}colortext |
|
|
{2:^^^^^^^ }|
:set notermguicolors |
{3:-- TERMINAL --} |
]]}
end)
it('is included in nvim_list_uis()', function()
feed_data(':echo map(nvim_list_uis(), {k,v -> sort(items(filter(v, {k,v -> k[:3] !=# "ext_" })))})\r')
screen:expect([=[

View File

@ -181,11 +181,11 @@ describe('ext_hlstate detailed highlights', function()
it("work with :terminal", function()
screen:set_default_attr_ids({
[1] = {{}, {{hi_name = "TermCursorNC", ui_name = "TermCursorNC", kind = "ui"}}},
[2] = {{foreground = 52479}, {{kind = "term"}}},
[3] = {{bold = true, foreground = 52479}, {{kind = "term"}}},
[4] = {{foreground = 52479}, {2, 1}},
[5] = {{foreground = 4259839}, {{kind = "term"}}},
[6] = {{foreground = 4259839}, {5, 1}},
[2] = {{foreground = tonumber('0x00ccff'), fg_indexed=true}, {{kind = "term"}}},
[3] = {{bold = true, foreground = tonumber('0x00ccff'), fg_indexed=true}, {{kind = "term"}}},
[4] = {{foreground = tonumber('0x00ccff'), fg_indexed=true}, {2, 1}},
[5] = {{foreground = tonumber('0x40ffff'), fg_indexed=true}, {{kind = "term"}}},
[6] = {{foreground = tonumber('0x40ffff'), fg_indexed=true}, {5, 1}},
[7] = {{}, {{hi_name = "MsgArea", ui_name = "MsgArea", kind = "ui"}}},
})
command('enew | call termopen(["'..nvim_dir..'/tty-test"])')

View File

@ -1515,7 +1515,8 @@ function Screen:_equal_attrs(a, b)
a.italic == b.italic and a.reverse == b.reverse and
a.foreground == b.foreground and a.background == b.background and
a.special == b.special and a.blend == b.blend and
a.strikethrough == b.strikethrough
a.strikethrough == b.strikethrough and
a.fg_indexed == b.fg_indexed and a.bg_indexed == b.bg_indexed
end
function Screen:_equal_info(a, b)