diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-01-08 18:28:22 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-01-08 18:28:22 +0100 |
commit | 2d02839050a2557bf36dab37ccd9f92168a757d1 (patch) | |
tree | abc07fdc4481657a1a0739f6dcc006c3cca51df5 /src | |
parent | 453b576ee5d32e9b8e6876712748ae01f9be68dd (diff) | |
download | vim-git-2d02839050a2557bf36dab37ccd9f92168a757d1.tar.gz |
patch 8.0.0157: no completion for :syntax spell and :syntax syncv8.0.0157
Problem: No command line completion for ":syntax spell" and ":syntax sync".
Solution: Implement the completion. (Dominique Pelle)
Diffstat (limited to 'src')
-rw-r--r-- | src/syntax.c | 38 | ||||
-rw-r--r-- | src/testdir/test_syntax.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 40 insertions, 6 deletions
diff --git a/src/syntax.c b/src/syntax.c index 80546bb02..bc5c9b74f 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -6383,7 +6383,9 @@ syntax_present(win_T *win) static enum { 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; /* @@ -6434,6 +6436,10 @@ set_context_in_syntax_cmd(expand_T *xp, char_u *arg) xp->xp_context = EXPAND_NOTHING; else if (STRNICMP(arg, "case", p - arg) == 0) 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 || STRNICMP(arg, "region", p - arg) == 0 || STRNICMP(arg, "match", p - arg) == 0 @@ -6445,8 +6451,6 @@ set_context_in_syntax_cmd(expand_T *xp, char_u *arg) } } -static char *(case_args[]) = {"match", "ignore", NULL}; - /* * Function given to ExpandGeneric() to obtain the list syntax names for * expansion. @@ -6454,9 +6458,31 @@ static char *(case_args[]) = {"match", "ignore", NULL}; char_u * get_syntax_name(expand_T *xp UNUSED, int idx) { - if (expand_what == EXP_SUBCMD) - return (char_u *)subcommands[idx].name; - return (char_u *)case_args[idx]; + switch (expand_what) + { + case EXP_SUBCMD: + 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; } #endif /* FEAT_CMDL_COMPL */ diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim index 7cb67e677..23ef1549e 100644 --- a/src/testdir/test_syntax.vim +++ b/src/testdir/test_syntax.vim @@ -150,6 +150,12 @@ func Test_syntax_completion() call feedkeys(":syn case \<C-A>\<C-B>\"\<CR>", 'tx') call assert_equal('"syn case ignore match', @:) + 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', @:) + call feedkeys(":syn list \<C-A>\<C-B>\"\<CR>", 'tx') call assert_match('^"syn list Boolean Character ', @:) diff --git a/src/version.c b/src/version.c index 350b4ad04..824a29275 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 157, +/**/ 156, /**/ 155, |