fix(highlight): winhl receive wrong argument

This commit is contained in:
glepnir 2023-09-14 21:02:30 +08:00
parent a6e74c1f0a
commit ab92575753
2 changed files with 17 additions and 0 deletions

View File

@ -1915,6 +1915,9 @@ bool parse_winhl_opt(win_T *wp)
char *commap = xstrchrnul(hi, ','); char *commap = xstrchrnul(hi, ',');
size_t len = (size_t)(commap - hi); size_t len = (size_t)(commap - hi);
int hl_id = len ? syn_check_group(hi, len) : -1; int hl_id = len ? syn_check_group(hi, len) : -1;
if (hl_id == 0) {
return false;
}
int hl_id_link = nlen ? syn_check_group(p, nlen) : 0; int hl_id_link = nlen ? syn_check_group(p, nlen) : 0;
HlAttrs attrs = HLATTRS_INIT; HlAttrs attrs = HLATTRS_INIT;

View File

@ -8,6 +8,7 @@ local feed_command, eq = helpers.feed_command, helpers.eq
local curbufmeths = helpers.curbufmeths local curbufmeths = helpers.curbufmeths
local funcs = helpers.funcs local funcs = helpers.funcs
local meths = helpers.meths local meths = helpers.meths
local exec_lua = helpers.exec_lua
describe('colorscheme compatibility', function() describe('colorscheme compatibility', function()
before_each(function() before_each(function()
@ -2641,4 +2642,17 @@ describe('highlight namespaces', function()
| |
]]} ]]}
end) end)
it('winhl does not accept invalid value #24586', function()
local res = exec_lua([[
local curwin = vim.api.nvim_get_current_win()
vim.api.nvim_command("set winhl=Normal:Visual")
local _, msg = pcall(vim.api.nvim_command,"set winhl='Normal:Wrong'")
return { msg, vim.wo[curwin].winhl }
]])
eq({
"Vim(set):E5248: Invalid character in group name",
"Normal:Visual",
},res)
end)
end) end)