mirror of
https://github.com/neovim/neovim.git
synced 2025-09-23 11:38:31 +00:00
fix(api): make nvim_set_hl(ns=0, ...) redraw screen properly
fixes #18160
This commit is contained in:
@@ -303,8 +303,6 @@ int hl_get_ui_attr(int ns_id, int idx, int final_id, bool optional)
|
|||||||
if (pum_drawn()) {
|
if (pum_drawn()) {
|
||||||
must_redraw_pum = true;
|
must_redraw_pum = true;
|
||||||
}
|
}
|
||||||
} else if (idx == HLF_MSG && ns_id == -1) {
|
|
||||||
msg_grid.blending = attrs.hl_blend > -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optional && !available) {
|
if (optional && !available) {
|
||||||
|
@@ -698,7 +698,7 @@ void set_hl_group(int id, HlAttrs attrs, Dict(highlight) *dict, int link_id)
|
|||||||
g->sg_deflink_sctx = current_sctx;
|
g->sg_deflink_sctx = current_sctx;
|
||||||
g->sg_deflink_sctx.sc_lnum += SOURCING_LNUM;
|
g->sg_deflink_sctx.sc_lnum += SOURCING_LNUM;
|
||||||
}
|
}
|
||||||
return;
|
goto update;
|
||||||
}
|
}
|
||||||
|
|
||||||
g->sg_cleared = false;
|
g->sg_cleared = false;
|
||||||
@@ -753,6 +753,12 @@ void set_hl_group(int id, HlAttrs attrs, Dict(highlight) *dict, int link_id)
|
|||||||
ui_mode_info_set();
|
ui_mode_info_set();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update:
|
||||||
|
if (!updating_screen) {
|
||||||
|
redraw_all_later(NOT_VALID);
|
||||||
|
}
|
||||||
|
need_highlight_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle ":highlight" command
|
/// Handle ":highlight" command
|
||||||
@@ -1942,6 +1948,8 @@ void highlight_changed(void)
|
|||||||
if (highlight_attr[hlf] != highlight_attr_last[hlf]) {
|
if (highlight_attr[hlf] != highlight_attr_last[hlf]) {
|
||||||
if (hlf == HLF_MSG) {
|
if (hlf == HLF_MSG) {
|
||||||
clear_cmdline = true;
|
clear_cmdline = true;
|
||||||
|
HlAttrs attrs = syn_attr2entry(highlight_attr[hlf]);
|
||||||
|
msg_grid.blending = attrs.hl_blend > -1;
|
||||||
}
|
}
|
||||||
ui_call_hl_group_set(cstr_as_string((char *)hlf_names[hlf]),
|
ui_call_hl_group_set(cstr_as_string((char *)hlf_names[hlf]),
|
||||||
highlight_attr[hlf]);
|
highlight_attr[hlf]);
|
||||||
|
@@ -2335,6 +2335,7 @@ describe('highlight namespaces', function()
|
|||||||
[5] = {background = Screen.colors.Magenta4, foreground = Screen.colors.Crimson};
|
[5] = {background = Screen.colors.Magenta4, foreground = Screen.colors.Crimson};
|
||||||
[6] = {bold = true, reverse = true};
|
[6] = {bold = true, reverse = true};
|
||||||
[7] = {reverse = true};
|
[7] = {reverse = true};
|
||||||
|
[8] = {foreground = Screen.colors.Gray20};
|
||||||
}
|
}
|
||||||
|
|
||||||
ns1 = meths.create_namespace 'grungy'
|
ns1 = meths.create_namespace 'grungy'
|
||||||
@@ -2425,4 +2426,33 @@ describe('highlight namespaces', function()
|
|||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('redraws correctly when ns=0', function()
|
||||||
|
screen:expect{grid=[[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
|
||||||
|
meths.set_hl(0, 'EndOfBuffer', {fg='#333333'})
|
||||||
|
screen:expect{grid=[[
|
||||||
|
^ |
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
{8:~ }|
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user