0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

patch 8.2.3743: ":sign" can add a highlight group without a name

Problem:    ":sign" can add a highlight group without a name.
Solution:   Give an error if the group name is missing. (closes #9280)
This commit is contained in:
Bram Moolenaar 2021-12-05 13:02:50 +00:00
parent f589fd3e10
commit 5e18ccc60b
4 changed files with 34 additions and 0 deletions

View File

@ -694,3 +694,5 @@ EXTERN char e_line_number_out_of_range[]
INIT(= N_("E1247: Line number out of range"));
EXTERN char e_closure_called_from_invalid_context[]
INIT(= N_("E1248: Closure called from invalid context"));
EXTERN char e_group_name_missing_for_str[]
INIT(= N_("E1249: Group name missing for %s"));

View File

@ -1295,6 +1295,17 @@ sign_jump(int sign_id, char_u *sign_group, buf_T *buf)
return lnum;
}
static int
check_empty_group(size_t len, char *name)
{
if (len == 0)
{
semsg(_(e_group_name_missing_for_str), name);
return FAIL;
}
return OK;
}
/*
* ":sign define {name} ..." command
*/
@ -1330,16 +1341,31 @@ sign_define_cmd(char_u *sign_name, char_u *cmdline)
else if (STRNCMP(arg, "linehl=", 7) == 0)
{
arg += 7;
if (check_empty_group(p - arg, "linehl") == FAIL)
{
failed = TRUE;
break;
}
linehl = vim_strnsave(arg, p - arg);
}
else if (STRNCMP(arg, "texthl=", 7) == 0)
{
arg += 7;
if (check_empty_group(p - arg, "texthl") == FAIL)
{
failed = TRUE;
break;
}
texthl = vim_strnsave(arg, p - arg);
}
else if (STRNCMP(arg, "culhl=", 6) == 0)
{
arg += 6;
if (check_empty_group(p - arg, "culhl") == FAIL)
{
failed = TRUE;
break;
}
culhl = vim_strnsave(arg, p - arg);
}
else

View File

@ -126,6 +126,10 @@ func Test_sign()
call assert_fails("sign define Sign4 text= linehl=Comment", 'E239:')
call assert_fails("sign define Sign4 text=\\ ab linehl=Comment", 'E239:')
call assert_fails("sign define Sign4 linehl=", 'E1249: Group name missing for linehl')
call assert_fails("sign define Sign4 culhl=", 'E1249: Group name missing for culhl')
call assert_fails("sign define Sign4 texthl=", 'E1249: Group name missing for texthl')
" define sign with whitespace
sign define Sign4 text=\ X linehl=Comment
sign undefine Sign4

View File

@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3743,
/**/
3742,
/**/