diff options
| author | Riccardo Mazzarini <me@noib3.dev> | 2026-02-21 00:35:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-20 18:35:55 -0500 |
| commit | cb8c9186e6ff563e23ca8faac5e3148fbdf68d10 (patch) | |
| tree | 7a877dfa8af6883a8b9db8ecd4569434671f054d /runtime/lua/vim/_meta/vimfn.lua | |
| parent | 57c6b61cf2d10af46eb56e439db9f7c071426865 (diff) | |
| download | rneovim-cb8c9186e6ff563e23ca8faac5e3148fbdf68d10.tar.gz rneovim-cb8c9186e6ff563e23ca8faac5e3148fbdf68d10.tar.bz2 rneovim-cb8c9186e6ff563e23ca8faac5e3148fbdf68d10.zip | |
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.
Diffstat (limited to 'runtime/lua/vim/_meta/vimfn.lua')
| -rw-r--r-- | runtime/lua/vim/_meta/vimfn.lua | 4 |
1 files changed, 4 insertions, 0 deletions
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. --- |