mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 06:18:16 +00:00
Merge #4633: support "special" highlight (undercurl)
Closes #2040 Closes #3370
This commit is contained in:
@@ -25,7 +25,7 @@ describe('terminal window highlighting', function()
|
||||
[5] = {background = 11},
|
||||
[6] = {foreground = 130},
|
||||
[7] = {reverse = true},
|
||||
[8] = {background = 11}
|
||||
[8] = {background = 11},
|
||||
})
|
||||
screen:attach(false)
|
||||
execute('enew | call termopen(["'..nvim_dir..'/tty-test"]) | startinsert')
|
||||
@@ -121,7 +121,7 @@ describe('terminal window highlighting with custom palette', function()
|
||||
clear()
|
||||
screen = Screen.new(50, 7)
|
||||
screen:set_default_attr_ids({
|
||||
[1] = {foreground = 1193046}
|
||||
[1] = {foreground = 1193046, special = Screen.colors.Black}
|
||||
})
|
||||
screen:set_default_attr_ignore({
|
||||
[1] = {bold = true},
|
||||
@@ -130,7 +130,7 @@ describe('terminal window highlighting with custom palette', function()
|
||||
[5] = {background = 11},
|
||||
[6] = {foreground = 130},
|
||||
[7] = {reverse = true},
|
||||
[8] = {background = 11}
|
||||
[8] = {background = 11},
|
||||
})
|
||||
screen:attach(true)
|
||||
nvim('set_var', 'terminal_color_3', '#123456')
|
||||
|
@@ -1,7 +1,7 @@
|
||||
local helpers = require('test.functional.helpers')
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local os = require('os')
|
||||
local clear, feed = helpers.clear, helpers.feed
|
||||
local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert
|
||||
local execute, request, eq = helpers.execute, helpers.request, helpers.eq
|
||||
|
||||
|
||||
@@ -303,3 +303,61 @@ describe('Default highlight groups', function()
|
||||
]], {[1] = {foreground = Screen.colors.Red, background = Screen.colors.Green}})
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('guisp (special/undercurl)', function()
|
||||
local screen
|
||||
|
||||
before_each(function()
|
||||
clear()
|
||||
screen = Screen.new(25,10)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ignore({
|
||||
[1] = {bold = true, foreground = Screen.colors.Blue},
|
||||
[2] = {bold = true}
|
||||
})
|
||||
end)
|
||||
|
||||
it('can be set and is applied like foreground or background', function()
|
||||
execute('syntax on')
|
||||
execute('syn keyword TmpKeyword neovim')
|
||||
execute('syn keyword TmpKeyword1 special')
|
||||
execute('syn keyword TmpKeyword2 specialwithbg')
|
||||
execute('syn keyword TmpKeyword3 specialwithfg')
|
||||
execute('hi! Awesome guifg=red guibg=yellow guisp=red')
|
||||
execute('hi! Awesome1 guisp=red')
|
||||
execute('hi! Awesome2 guibg=yellow guisp=red')
|
||||
execute('hi! Awesome3 guifg=red guisp=red')
|
||||
execute('hi link TmpKeyword Awesome')
|
||||
execute('hi link TmpKeyword1 Awesome1')
|
||||
execute('hi link TmpKeyword2 Awesome2')
|
||||
execute('hi link TmpKeyword3 Awesome3')
|
||||
insert([[
|
||||
neovim
|
||||
awesome neovim
|
||||
wordcontainingneovim
|
||||
special
|
||||
specialwithbg
|
||||
specialwithfg
|
||||
]])
|
||||
feed('Go<tab>neovim tabbed')
|
||||
screen:expect([[
|
||||
{1:neovim} |
|
||||
awesome {1:neovim} |
|
||||
wordcontainingneovim |
|
||||
{2:special} |
|
||||
{3:specialwithbg} |
|
||||
{4:specialwithfg} |
|
||||
|
|
||||
{1:neovim} tabbed^ |
|
||||
~ |
|
||||
-- INSERT -- |
|
||||
]],{
|
||||
[1] = {background = Screen.colors.Yellow, foreground = Screen.colors.Red,
|
||||
special = Screen.colors.Red},
|
||||
[2] = {special = Screen.colors.Red},
|
||||
[3] = {special = Screen.colors.Red, background = Screen.colors.Yellow},
|
||||
[4] = {foreground = Screen.colors.Red, special = Screen.colors.Red},
|
||||
})
|
||||
|
||||
end)
|
||||
end)
|
||||
|
@@ -425,6 +425,10 @@ function Screen:_handle_update_bg(bg)
|
||||
self._bg = bg
|
||||
end
|
||||
|
||||
function Screen:_handle_update_sp(sp)
|
||||
self._sp = sp
|
||||
end
|
||||
|
||||
function Screen:_handle_suspend()
|
||||
self.suspended = true
|
||||
end
|
||||
@@ -573,7 +577,7 @@ function Screen:_pprint_attrs(attrs)
|
||||
local items = {}
|
||||
for f, v in pairs(attrs) do
|
||||
local desc = tostring(v)
|
||||
if f == "foreground" or f == "background" then
|
||||
if f == "foreground" or f == "background" or f == "special" then
|
||||
if Screen.colornames[v] ~= nil then
|
||||
desc = "Screen.colors."..Screen.colornames[v]
|
||||
end
|
||||
@@ -614,7 +618,8 @@ function Screen:_equal_attrs(a, b)
|
||||
a.underline == b.underline and a.undercurl == b.undercurl and
|
||||
a.italic == b.italic and a.reverse == b.reverse and
|
||||
a.foreground == b.foreground and
|
||||
a.background == b.background
|
||||
a.background == b.background and
|
||||
a.special == b.special
|
||||
end
|
||||
|
||||
function Screen:_attr_index(attrs, attr)
|
||||
|
Reference in New Issue
Block a user