0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 9.0.0283: cannot complete "syn list @cluster"

Problem:    Cannot complete "syn list @cluster".
Solution:   Recognize and handle "list @". (Björn Linse, closes #10990)
This commit is contained in:
bfredl
2022-08-26 21:58:31 +01:00
committed by Bram Moolenaar
parent 0f61838636
commit af9a6002e0
3 changed files with 32 additions and 4 deletions

View File

@@ -6341,7 +6341,8 @@ static enum
EXP_SUBCMD, // expand ":syn" sub-commands
EXP_CASE, // expand ":syn case" arguments
EXP_SPELL, // expand ":syn spell" arguments
EXP_SYNC // expand ":syn sync" arguments
EXP_SYNC, // expand ":syn sync" arguments
EXP_CLUSTER // expand ":syn list @cluster" arguments
} expand_what;
/*
@@ -6396,10 +6397,17 @@ set_context_in_syntax_cmd(expand_T *xp, char_u *arg)
expand_what = EXP_SPELL;
else if (STRNICMP(arg, "sync", p - arg) == 0)
expand_what = EXP_SYNC;
else if ( STRNICMP(arg, "keyword", p - arg) == 0
else if (STRNICMP(arg, "list", p - arg) == 0)
{
p = skipwhite(p);
if (*p == '@')
expand_what = EXP_CLUSTER;
else
xp->xp_context = EXPAND_HIGHLIGHT;
}
else if (STRNICMP(arg, "keyword", p - arg) == 0
|| STRNICMP(arg, "region", p - arg) == 0
|| STRNICMP(arg, "match", p - arg) == 0
|| STRNICMP(arg, "list", p - arg) == 0)
|| STRNICMP(arg, "match", p - arg) == 0)
xp->xp_context = EXPAND_HIGHLIGHT;
else
xp->xp_context = EXPAND_NOTHING;
@@ -6414,6 +6422,9 @@ set_context_in_syntax_cmd(expand_T *xp, char_u *arg)
char_u *
get_syntax_name(expand_T *xp UNUSED, int idx)
{
#define CBUFFER_LEN 256
static char_u cbuffer[CBUFFER_LEN]; // TODO: better solution
switch (expand_what)
{
case EXP_SUBCMD:
@@ -6437,6 +6448,17 @@ get_syntax_name(expand_T *xp UNUSED, int idx)
"maxlines=", "minlines=", "region", NULL};
return (char_u *)sync_args[idx];
}
case EXP_CLUSTER:
{
if (idx < curwin->w_s->b_syn_clusters.ga_len)
{
vim_snprintf((char *)cbuffer, CBUFFER_LEN, "@%s",
SYN_CLSTR(curwin->w_s)[idx].scl_name);
return cbuffer;
}
else
return NULL;
}
}
return NULL;
}

View File

@@ -201,6 +201,10 @@ func Test_syntax_completion()
call feedkeys(":syn match \<C-A>\<C-B>\"\<CR>", 'tx')
call assert_match('^"syn match Boolean Character ', @:)
syn cluster Aax contains=Aap
call feedkeys(":syn list @A\<C-A>\<C-B>\"\<CR>", 'tx')
call assert_match('^"syn list @Aax', @:)
endfunc
func Test_echohl_completion()

View File

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