neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 986bf7e78d09286e198b696630254eb097ad0875
parent 35570e4a11bef061777d741929f74fa66ba3f45a
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date:   Fri, 25 Aug 2023 10:53:39 +0300

feat(highlight): add `FloatFooter` highlight group

Problem: No clear separation of floating title and footer highlighting.

Solution: Add new `FloatFooter` highlight group.

Diffstat:
Mruntime/doc/api.txt | 3++-
Mruntime/doc/news.txt | 2+-
Mruntime/doc/syntax.txt | 2++
Mruntime/doc/vim_diff.txt | 1+
Mruntime/lua/vim/_meta/api.lua | 2+-
Msrc/nvim/api/win_config.c | 8+++++---
Msrc/nvim/highlight_group.c | 1+
7 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/runtime/doc/api.txt b/runtime/doc/api.txt @@ -479,6 +479,7 @@ to disable various visual features such as the 'number' column. Other highlight groups specific to floating windows: - |hl-FloatBorder| for window's border - |hl-FloatTitle| for window's title +- |hl-FloatFooter| for window's footer Currently, floating windows don't support some widgets like scrollbar. @@ -3146,7 +3147,7 @@ nvim_open_win({buffer}, {enter}, {*config}) *nvim_open_win()* Default is `"left"`. • footer: Footer (optional) in window border, string or list. List should consist of `[text, highlight]` tuples. - If string, the default highlight group is `FloatTitle`. + If string, the default highlight group is `FloatFooter`. • footer_pos: Footer position. Must be set with `footer` option. Value can be one of "left", "center", or "right". Default is `"left"`. diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt @@ -156,7 +156,7 @@ The following new APIs and features were added. support fully MessagePack-RPC compliant clients. • Floating windows can now show footer with new `footer` and `footer_pos` - config fields. + config fields. Uses |hl-FloatFooter| by default. ============================================================================== CHANGED FEATURES *news-changed* diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt @@ -5273,6 +5273,8 @@ NormalFloat Normal text in floating windows. FloatBorder Border of floating windows. *hl-FloatTitle* FloatTitle Title of floating windows. + *hl-FloatFooter* +FloatFooter Footer of floating windows. *hl-NormalNC* NormalNC Normal text in non-current windows. *hl-Pmenu* diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt @@ -258,6 +258,7 @@ Highlight groups: |hl-NormalFloat| highlights floating window |hl-FloatBorder| highlights border of a floating window |hl-FloatTitle| highlights title of a floating window + |hl-FloatFooter| highlights footer of a floating window |hl-NormalNC| highlights non-current windows |hl-MsgArea| highlights messages/cmdline area |hl-MsgSeparator| highlights separator for scrolled messages diff --git a/runtime/lua/vim/_meta/api.lua b/runtime/lua/vim/_meta/api.lua @@ -1559,7 +1559,7 @@ function vim.api.nvim_open_term(buffer, opts) end --- Default is `"left"`. --- • footer: Footer (optional) in window border, string or --- list. List should consist of `[text, highlight]` tuples. ---- If string, the default highlight group is `FloatTitle`. +--- If string, the default highlight group is `FloatFooter`. --- • footer_pos: Footer position. Must be set with `footer` --- option. Value can be one of "left", "center", or "right". --- Default is `"left"`. diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c @@ -153,7 +153,7 @@ /// Default is `"left"`. /// - footer: Footer (optional) in window border, string or list. /// List should consist of `[text, highlight]` tuples. -/// If string, the default highlight group is `FloatTitle`. +/// If string, the default highlight group is `FloatFooter`. /// - footer_pos: Footer position. Must be set with `footer` option. /// Value can be one of "left", "center", or "right". /// Default is `"left"`. @@ -428,16 +428,19 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type, bool *is_present; VirtText *chunks; int *width; + int default_hl_id; switch (bordertext_type) { case kBorderTextTitle: is_present = &fconfig->title; chunks = &fconfig->title_chunks; width = &fconfig->title_width; + default_hl_id = syn_check_group(S_LEN("FloatTitle")); break; case kBorderTextFooter: is_present = &fconfig->footer; chunks = &fconfig->footer_chunks; width = &fconfig->footer_width; + default_hl_id = syn_check_group(S_LEN("FloatFooter")); break; } @@ -446,9 +449,8 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type, *is_present = false; return; } - int hl_id = syn_check_group(S_LEN("FloatTitle")); kv_push(*chunks, ((VirtTextChunk){ .text = xstrdup(bordertext.data.string.data), - .hl_id = hl_id })); + .hl_id = default_hl_id })); *width = (int)mb_string2cells(bordertext.data.string.data); *is_present = true; return; diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c @@ -173,6 +173,7 @@ static const char *highlight_init_both[] = { "default link NormalFloat Pmenu", "default link FloatBorder WinSeparator", "default link FloatTitle Title", + "default link FloatFooter Title", "default FloatShadow blend=80 guibg=Black", "default FloatShadowThrough blend=100 guibg=Black", "RedrawDebugNormal cterm=reverse gui=reverse",