aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2023-10-03 19:26:11 +0800
committerglepnir <glephunter@gmail.com>2023-10-04 18:42:13 +0800
commitd4872377fef7eeb794ea06321f62281af0cde8e3 (patch)
tree7a77403105da2ffe139ea1cbf02e4a1a2abbfbf2
parent9b3045103f7d56e5ccd0574dcb93e953b72d5f50 (diff)
downloadrneovim-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.c8
-rw-r--r--test/functional/ui/highlight_spec.lua19
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)