mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.0.0157 (#7362)
Problem: No command line completion for ":syntax spell" and ":syntax sync".
Solution: Implement the completion. (Dominique Pelle)
2d02839050
This commit is contained in:
parent
a4019bc9f6
commit
9ad7529f70
@ -5567,8 +5567,10 @@ bool syntax_present(win_T *win)
|
|||||||
|
|
||||||
|
|
||||||
static enum {
|
static enum {
|
||||||
EXP_SUBCMD, /* expand ":syn" sub-commands */
|
EXP_SUBCMD, // expand ":syn" sub-commands
|
||||||
EXP_CASE /* expand ":syn case" arguments */
|
EXP_CASE, // expand ":syn case" arguments
|
||||||
|
EXP_SPELL, // expand ":syn spell" arguments
|
||||||
|
EXP_SYNC // expand ":syn sync" arguments
|
||||||
} expand_what;
|
} expand_what;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -5612,6 +5614,10 @@ void set_context_in_syntax_cmd(expand_T *xp, const char *arg)
|
|||||||
xp->xp_context = EXPAND_NOTHING;
|
xp->xp_context = EXPAND_NOTHING;
|
||||||
} else if (STRNICMP(arg, "case", p - arg) == 0) {
|
} else if (STRNICMP(arg, "case", p - arg) == 0) {
|
||||||
expand_what = EXP_CASE;
|
expand_what = EXP_CASE;
|
||||||
|
} else if (STRNICMP(arg, "spell", p - arg) == 0) {
|
||||||
|
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, "keyword", p - arg) == 0
|
||||||
|| STRNICMP(arg, "region", p - arg) == 0
|
|| STRNICMP(arg, "region", p - arg) == 0
|
||||||
|| STRNICMP(arg, "match", p - arg) == 0
|
|| STRNICMP(arg, "match", p - arg) == 0
|
||||||
@ -5624,17 +5630,33 @@ void set_context_in_syntax_cmd(expand_T *xp, const char *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *(case_args[]) = {"match", "ignore", NULL};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function given to ExpandGeneric() to obtain the list syntax names for
|
* Function given to ExpandGeneric() to obtain the list syntax names for
|
||||||
* expansion.
|
* expansion.
|
||||||
*/
|
*/
|
||||||
char_u *get_syntax_name(expand_T *xp, int idx)
|
char_u *get_syntax_name(expand_T *xp, int idx)
|
||||||
{
|
{
|
||||||
if (expand_what == EXP_SUBCMD)
|
switch (expand_what) {
|
||||||
return (char_u *)subcommands[idx].name;
|
case EXP_SUBCMD:
|
||||||
return (char_u *)case_args[idx];
|
return (char_u *)subcommands[idx].name;
|
||||||
|
case EXP_CASE: {
|
||||||
|
static char *case_args[] = { "match", "ignore", NULL };
|
||||||
|
return (char_u *)case_args[idx];
|
||||||
|
}
|
||||||
|
case EXP_SPELL: {
|
||||||
|
static char *spell_args[] =
|
||||||
|
{ "toplevel", "notoplevel", "default", NULL };
|
||||||
|
return (char_u *)spell_args[idx];
|
||||||
|
}
|
||||||
|
case EXP_SYNC: {
|
||||||
|
static char *sync_args[] =
|
||||||
|
{ "ccomment", "clear", "fromstart",
|
||||||
|
"linebreaks=", "linecont", "lines=", "match",
|
||||||
|
"maxlines=", "minlines=", "region", NULL };
|
||||||
|
return (char_u *)sync_args[idx];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,3 +76,11 @@ func Test_syntax_after_reload()
|
|||||||
call assert_true(exists('g:gotit'))
|
call assert_true(exists('g:gotit'))
|
||||||
call delete('Xsomefile')
|
call delete('Xsomefile')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_syntax_completion()
|
||||||
|
call feedkeys(":syn spell \<C-A>\<C-B>\"\<CR>", 'tx')
|
||||||
|
call assert_equal('"syn spell default notoplevel toplevel', @:)
|
||||||
|
|
||||||
|
call feedkeys(":syn sync \<C-A>\<C-B>\"\<CR>", 'tx')
|
||||||
|
call assert_equal('"syn sync ccomment clear fromstart linebreaks= linecont lines= match maxlines= minlines= region', @:)
|
||||||
|
endfunc
|
||||||
|
@ -946,7 +946,7 @@ static const int included_patches[] = {
|
|||||||
// 160,
|
// 160,
|
||||||
159,
|
159,
|
||||||
158,
|
158,
|
||||||
// 157,
|
157,
|
||||||
156,
|
156,
|
||||||
// 155,
|
// 155,
|
||||||
// 154,
|
// 154,
|
||||||
|
Loading…
Reference in New Issue
Block a user