diff options
author | Andrey Bushev <hlam-box@yandex.ru> | 2022-09-24 22:54:30 -0700 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-09-26 11:53:20 +0800 |
commit | 4bb1d1df79bd1f125499e556d5d4e21ac2ff1e5a (patch) | |
tree | 89951f4a8fc73838548c2fd8af5f7a49f389dcda /src/nvim/terminal.c | |
parent | 63be7651829f8b77c4974d08ebe09f7775e41a8a (diff) | |
download | rneovim-4bb1d1df79bd1f125499e556d5d4e21ac2ff1e5a.tar.gz rneovim-4bb1d1df79bd1f125499e556d5d4e21ac2ff1e5a.tar.bz2 rneovim-4bb1d1df79bd1f125499e556d5d4e21ac2ff1e5a.zip |
feat(terminal): recognize underdouble and undercurl
Diffstat (limited to 'src/nvim/terminal.c')
-rw-r--r-- | src/nvim/terminal.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 326c868be8..8ec51438fb 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -759,6 +759,22 @@ static int get_rgb(VTermState *state, VTermColor color) 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) { 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) | (cell.attrs.italic ? HL_ITALIC : 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) | ((fg_indexed && !fg_set) ? HL_FG_INDEXED : 0) | ((bg_indexed && !bg_set) ? HL_BG_INDEXED : 0); |