fix(highlight): correct hi command output

This commit is contained in:
glepnir 2023-09-16 19:08:40 +08:00
parent a6e74c1f0a
commit 5183651773
2 changed files with 20 additions and 3 deletions

View File

@ -824,7 +824,7 @@ void set_hl_group(int id, HlAttrs attrs, Dict(highlight) *dict, int link_id)
g->sg_link = 0;
}
g->sg_gui = attrs.rgb_ae_attr;
g->sg_gui = attrs.rgb_ae_attr &~HL_DEFAULT;
g->sg_rgb_fg = attrs.rgb_fg_color;
g->sg_rgb_bg = attrs.rgb_bg_color;
@ -851,7 +851,7 @@ void set_hl_group(int id, HlAttrs attrs, Dict(highlight) *dict, int link_id)
}
}
g->sg_cterm = attrs.cterm_ae_attr;
g->sg_cterm = attrs.cterm_ae_attr &~HL_DEFAULT;
g->sg_cterm_bg = attrs.cterm_bg_color;
g->sg_cterm_fg = attrs.cterm_fg_color;
g->sg_cterm_bold = g->sg_cterm & HL_BOLD;
@ -1441,7 +1441,7 @@ void restore_cterm_colors(void)
/// @param check_link if true also check for an existing link.
///
/// @return true if highlight group "idx" has any settings.
static int hl_has_settings(int idx, bool check_link)
static bool hl_has_settings(int idx, bool check_link)
{
return hl_table[idx].sg_cleared == 0
&& (hl_table[idx].sg_attr != 0

View File

@ -608,4 +608,21 @@ describe('API: get highlight', function()
meths.set_hl(0, 'Tried', { fg = "#00ff00", default = true })
eq({ fg = tonumber('00ff00', 16), default = true }, meths.get_hl(0, { name = 'Tried' }))
end)
it('should not output empty gui and cterm #23474', function()
meths.set_hl(0, 'Foo', {default = true})
meths.set_hl(0, 'Bar', { default = true, fg = '#ffffff' })
meths.set_hl(0, 'FooBar', { default = true, fg = '#ffffff', cterm = {bold = true} })
meths.set_hl(0, 'FooBarA', { default = true, fg = '#ffffff', cterm = {bold = true,italic = true}})
eq('Foo xxx cleared',
exec_capture('highlight Foo'))
eq({default = true}, meths.get_hl(0, {name = 'Foo'}))
eq('Bar xxx guifg=#ffffff',
exec_capture('highlight Bar'))
eq('FooBar xxx cterm=bold guifg=#ffffff',
exec_capture('highlight FooBar'))
eq('FooBarA xxx cterm=bold,italic guifg=#ffffff',
exec_capture('highlight FooBarA'))
end)
end)