From cb8c9186e6ff563e23ca8faac5e3148fbdf68d10 Mon Sep 17 00:00:00 2001 From: Riccardo Mazzarini Date: Sat, 21 Feb 2026 00:35:55 +0100 Subject: feat(highlight): support more SGR attributes #37901 Problem: TUI does not support several standard SGR text attributes: - dim/faint (SGR 2) - blink (SGR 5) - conceal (SGR 8) - overline (SGR 53) This means that when a program running in the embedded terminal emits one of these escape codes, we drop it and don't surface it to the outer terminal. Solution: - Add support for those attributes. - Also add corresponding flags to `nvim_set_hl` opts, so users can set these attributes in highlight groups. - refactor(highlight): widen `HlAttrFlags` from `int16_t` to `int32_t` Widen the `rgb_ae_attr` and `cterm_ae_attr` fields in HlAttrs from int16_t to int32_t to make room for new highlight attribute flags, since there was only one spare bit left. - The C flag is named HL_CONCEALED to avoid colliding with the existing HL_CONCEAL in syntax.h (which is a syntax group flag, not an SGR attribute). - Also note that libvterm doesn't currently support the dim and overline attributes, so e.g. `printf '\e[2mThis should be dim\n'` and `printf '\e[53mThis should have an overline\n'` are still not rendered correctly when run from the embedded terminal. --- runtime/lua/vim/_meta/api.lua | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'runtime/lua/vim/_meta/api.lua') diff --git a/runtime/lua/vim/_meta/api.lua b/runtime/lua/vim/_meta/api.lua index 9e40aa01cc..13699c76d4 100644 --- a/runtime/lua/vim/_meta/api.lua +++ b/runtime/lua/vim/_meta/api.lua @@ -2208,6 +2208,11 @@ function vim.api.nvim_set_decoration_provider(ns_id, opts) end --- - sp: color name or "#RRGGBB" --- - blend: integer between 0 and 100 --- - bold: boolean +--- - altfont: boolean +--- - blink: boolean +--- - dim: boolean +--- - conceal: boolean +--- - overline: boolean --- - standout: boolean --- - underline: boolean --- - undercurl: boolean -- cgit