mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
feat(terminal): recognize underdouble and undercurl
This commit is contained in:
parent
63be765182
commit
4bb1d1df79
@ -759,6 +759,22 @@ static int get_rgb(VTermState *state, VTermColor color)
|
|||||||
return RGB_(color.rgb.red, color.rgb.green, color.rgb.blue);
|
return RGB_(color.rgb.red, color.rgb.green, color.rgb.blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_underline_hl_flag(VTermScreenCellAttrs attrs)
|
||||||
|
{
|
||||||
|
switch (attrs.underline) {
|
||||||
|
case VTERM_UNDERLINE_OFF:
|
||||||
|
return 0;
|
||||||
|
case VTERM_UNDERLINE_SINGLE:
|
||||||
|
return HL_UNDERLINE;
|
||||||
|
case VTERM_UNDERLINE_DOUBLE:
|
||||||
|
return HL_UNDERDOUBLE;
|
||||||
|
case VTERM_UNDERLINE_CURLY:
|
||||||
|
return HL_UNDERCURL;
|
||||||
|
default:
|
||||||
|
return HL_UNDERLINE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void terminal_get_line_attributes(Terminal *term, win_T *wp, int linenr, int *term_attrs)
|
void terminal_get_line_attributes(Terminal *term, win_T *wp, int linenr, int *term_attrs)
|
||||||
{
|
{
|
||||||
int height, width;
|
int height, width;
|
||||||
@ -795,7 +811,7 @@ void terminal_get_line_attributes(Terminal *term, win_T *wp, int linenr, int *te
|
|||||||
int hl_attrs = (cell.attrs.bold ? HL_BOLD : 0)
|
int hl_attrs = (cell.attrs.bold ? HL_BOLD : 0)
|
||||||
| (cell.attrs.italic ? HL_ITALIC : 0)
|
| (cell.attrs.italic ? HL_ITALIC : 0)
|
||||||
| (cell.attrs.reverse ? HL_INVERSE : 0)
|
| (cell.attrs.reverse ? HL_INVERSE : 0)
|
||||||
| (cell.attrs.underline ? HL_UNDERLINE : 0)
|
| get_underline_hl_flag(cell.attrs)
|
||||||
| (cell.attrs.strike ? HL_STRIKETHROUGH: 0)
|
| (cell.attrs.strike ? HL_STRIKETHROUGH: 0)
|
||||||
| ((fg_indexed && !fg_set) ? HL_FG_INDEXED : 0)
|
| ((fg_indexed && !fg_set) ? HL_FG_INDEXED : 0)
|
||||||
| ((bg_indexed && !bg_set) ? HL_BG_INDEXED : 0);
|
| ((bg_indexed && !bg_set) ? HL_BG_INDEXED : 0);
|
||||||
|
@ -31,6 +31,8 @@ local function set_bg(num) feed_termcode('[48;5;'..num..'m') end
|
|||||||
local function set_bold() feed_termcode('[1m') end
|
local function set_bold() feed_termcode('[1m') end
|
||||||
local function set_italic() feed_termcode('[3m') end
|
local function set_italic() feed_termcode('[3m') end
|
||||||
local function set_underline() feed_termcode('[4m') end
|
local function set_underline() feed_termcode('[4m') end
|
||||||
|
local function set_underdouble() feed_termcode('[4:2m') end
|
||||||
|
local function set_undercurl() feed_termcode('[4:3m') end
|
||||||
local function set_strikethrough() feed_termcode('[9m') end
|
local function set_strikethrough() feed_termcode('[9m') end
|
||||||
local function clear_attrs() feed_termcode('[0;10m') end
|
local function clear_attrs() feed_termcode('[0;10m') end
|
||||||
-- mouse
|
-- mouse
|
||||||
@ -116,6 +118,8 @@ return {
|
|||||||
set_bold = set_bold,
|
set_bold = set_bold,
|
||||||
set_italic = set_italic,
|
set_italic = set_italic,
|
||||||
set_underline = set_underline,
|
set_underline = set_underline,
|
||||||
|
set_underdouble = set_underdouble,
|
||||||
|
set_undercurl = set_undercurl,
|
||||||
set_strikethrough = set_strikethrough,
|
set_strikethrough = set_strikethrough,
|
||||||
clear_attrs = clear_attrs,
|
clear_attrs = clear_attrs,
|
||||||
enable_mouse = enable_mouse,
|
enable_mouse = enable_mouse,
|
||||||
|
@ -26,6 +26,8 @@ describe(':terminal highlight', function()
|
|||||||
[9] = {foreground = 130},
|
[9] = {foreground = 130},
|
||||||
[10] = {reverse = true},
|
[10] = {reverse = true},
|
||||||
[11] = {background = 11},
|
[11] = {background = 11},
|
||||||
|
[12] = {bold = true, underdouble = true},
|
||||||
|
[13] = {italic = true, undercurl = true},
|
||||||
})
|
})
|
||||||
screen:attach({rgb=false})
|
screen:attach({rgb=false})
|
||||||
command(("enew | call termopen(['%s'])"):format(testprg('tty-test')))
|
command(("enew | call termopen(['%s'])"):format(testprg('tty-test')))
|
||||||
@ -114,6 +116,14 @@ describe(':terminal highlight', function()
|
|||||||
thelpers.set_underline()
|
thelpers.set_underline()
|
||||||
thelpers.set_strikethrough()
|
thelpers.set_strikethrough()
|
||||||
end)
|
end)
|
||||||
|
descr('bold and underdouble', 12, function()
|
||||||
|
thelpers.set_bold()
|
||||||
|
thelpers.set_underdouble()
|
||||||
|
end)
|
||||||
|
descr('italics and undercurl', 13, function()
|
||||||
|
thelpers.set_italic()
|
||||||
|
thelpers.set_undercurl()
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it(':terminal highlight has lower precedence than editor #9964', function()
|
it(':terminal highlight has lower precedence than editor #9964', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user