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/vimfn.lua | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'runtime/lua/vim/_meta/vimfn.lua') diff --git a/runtime/lua/vim/_meta/vimfn.lua b/runtime/lua/vim/_meta/vimfn.lua index 2b859fc8f9..2c95ae8c92 100644 --- a/runtime/lua/vim/_meta/vimfn.lua +++ b/runtime/lua/vim/_meta/vimfn.lua @@ -10078,6 +10078,10 @@ function vim.fn.synID(lnum, col, trans) end --- "strikethrough" "1" if struckthrough --- "altfont" "1" if alternative font --- "nocombine" "1" if nocombine +--- "dim" "1" if half-bright/dimmed +--- "blink" "1" if blinking +--- "conceal" "1" if concealed +--- "overline" "1" if overlined --- --- Returns an empty string on error. --- -- cgit