From 98e2da7d50b8f22edb20cdb744788ef0085d0cb6 Mon Sep 17 00:00:00 2001 From: Oliver Marriott Date: Fri, 17 Jun 2022 11:33:58 +1000 Subject: [PATCH] fix(hl): return cterm fg/bg even if they match Normal #18981 Fixes #18980 - 831fa45ad84e is related but this doesn't regress that - The `cterm_normal_fg_color != ae.cterm_fg_color` comparison is originally carried from patch to patch starting all the way back in 29bc6dfabde2 where it was avoiding setting a HL attr. But `hlattrs2dict()` now is just informational. --- src/nvim/highlight.c | 4 ++-- test/functional/api/highlight_spec.lua | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/nvim/highlight.c b/src/nvim/highlight.c index 3bcd72fc39..f6cb166d0f 100644 --- a/src/nvim/highlight.c +++ b/src/nvim/highlight.c @@ -792,11 +792,11 @@ Dictionary hlattrs2dict(HlAttrs ae, bool use_rgb) PUT(hl, "special", INTEGER_OBJ(ae.rgb_sp_color)); } } else { - if (cterm_normal_fg_color != ae.cterm_fg_color && ae.cterm_fg_color != 0) { + if (ae.cterm_fg_color != 0) { PUT(hl, "foreground", INTEGER_OBJ(ae.cterm_fg_color - 1)); } - if (cterm_normal_bg_color != ae.cterm_bg_color && ae.cterm_bg_color != 0) { + if (ae.cterm_bg_color != 0) { PUT(hl, "background", INTEGER_OBJ(ae.cterm_bg_color - 1)); } } diff --git a/test/functional/api/highlight_spec.lua b/test/functional/api/highlight_spec.lua index 785f72b3db..8235374f22 100644 --- a/test/functional/api/highlight_spec.lua +++ b/test/functional/api/highlight_spec.lua @@ -133,6 +133,13 @@ describe('API: highlight',function() eq({ underline = true, standout = true, }, meths.get_hl_by_name('cursorline', 0)); + -- Test cterm & Normal values. #18024 (tail) & #18980 + -- Ensure Normal, and groups that match Normal return their fg & bg cterm values + meths.set_hl(0, 'Normal', {ctermfg = 17, ctermbg = 213}) + meths.set_hl(0, 'NotNormal', {ctermfg = 17, ctermbg = 213}) + -- Note colors are "cterm" values, not rgb-as-ints + eq({foreground = 17, background = 213}, nvim("get_hl_by_name", 'Normal', false)) + eq({foreground = 17, background = 213}, nvim("get_hl_by_name", 'NotNormal', false)) end) it('nvim_get_hl_id_by_name', function()