]> granicus.if.org Git - vim/commitdiff
patch 8.0.0157: no completion for :syntax spell and :syntax sync v8.0.0157
authorBram Moolenaar <Bram@vim.org>
Sun, 8 Jan 2017 17:28:22 +0000 (18:28 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 8 Jan 2017 17:28:22 +0000 (18:28 +0100)
Problem:    No command line completion for ":syntax spell" and ":syntax sync".
Solution:   Implement the completion. (Dominique Pelle)

src/syntax.c
src/testdir/test_syntax.vim
src/version.c

index 80546bb02d612b0eb65229c08fe0995c9a353423..bc5c9b74ff9605b437ed7e3e74ea1184560038b9 100644 (file)
@@ -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 */
index 7cb67e6771bde3a8bc28ea9910b7808c7fe86e39..23ef1549e708b61f47e71256bd78d0e22803b9c9 100644 (file)
@@ -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 ', @:)
 
index 350b4ad0486912aeccd1e0aa7873db917240096d..824a29275f037a5a6aa8e0893649aef4c2c30a9f 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    157,
 /**/
     156,
 /**/