diff options
author | glepnir <glephunter@gmail.com> | 2023-10-03 19:26:11 +0800 |
---|---|---|
committer | glepnir <glephunter@gmail.com> | 2023-10-04 18:42:13 +0800 |
commit | d4872377fef7eeb794ea06321f62281af0cde8e3 (patch) | |
tree | 7a77403105da2ffe139ea1cbf02e4a1a2abbfbf2 | |
parent | 9b3045103f7d56e5ccd0574dcb93e953b72d5f50 (diff) | |
download | rneovim-d4872377fef7eeb794ea06321f62281af0cde8e3.tar.gz rneovim-d4872377fef7eeb794ea06321f62281af0cde8e3.tar.bz2 rneovim-d4872377fef7eeb794ea06321f62281af0cde8e3.zip |
fix(highlight): attr set all when normal attr changed
-rw-r--r-- | src/nvim/highlight_group.c | 8 | ||||
-rw-r--r-- | test/functional/ui/highlight_spec.lua | 19 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c index 080dc79e0e..09a28989e4 100644 --- a/src/nvim/highlight_group.c +++ b/src/nvim/highlight_group.c @@ -866,9 +866,17 @@ void set_hl_group(int id, HlAttrs attrs, Dict(highlight) *dict, int link_id) if (strcmp(g->sg_name_u, "NORMAL") == 0) { cterm_normal_fg_color = g->sg_cterm_fg; cterm_normal_bg_color = g->sg_cterm_bg; + bool did_changed = false; + if (normal_bg != g->sg_rgb_bg || normal_fg != g->sg_rgb_fg || normal_sp != g->sg_rgb_sp) { + did_changed = true; + } normal_fg = g->sg_rgb_fg; normal_bg = g->sg_rgb_bg; normal_sp = g->sg_rgb_sp; + + if (did_changed) { + highlight_attr_set_all(); + } ui_default_colors_set(); } else { // a cursor style uses this syn_id, make sure its attribute is updated. diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua index 931e1f9985..7776e024b0 100644 --- a/test/functional/ui/highlight_spec.lua +++ b/test/functional/ui/highlight_spec.lua @@ -2523,6 +2523,8 @@ describe('highlight namespaces', function() [6] = {bold = true, reverse = true}; [7] = {reverse = true}; [8] = {foreground = Screen.colors.Gray20}; + [9] = {foreground = Screen.colors.Blue}; + [10] = {bold = true, foreground = Screen.colors.SeaGreen}; } ns1 = meths.create_namespace 'grungy' @@ -2655,4 +2657,21 @@ describe('highlight namespaces', function() "Normal:Visual", },res) end) + + it('Normal in set_hl #25474', function() + meths.set_hl(0, 'Normal', {bg='#333333'}) + command('highlight Ignore') + screen:expect{grid=[[ + | + {1:~ }| + {1:~ }| + {6: }| + | + Ignore {8:xxx} {9:ctermf}| + {9:g=}15 {9:guifg=}| + bg | + {10:Press ENTER or type comma}| + {10:nd to continue}^ | + ]]} + end) end) |