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)
diff --git a/src/syntax.c b/src/syntax.c
index 93f5601..1fc2054 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6341,7 +6341,8 @@
     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 @@
 		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 @@
     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 @@
 		 "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;
 }
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index 93e56d7..7f1e5f0 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -201,6 +201,10 @@
 
   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()
diff --git a/src/version.c b/src/version.c
index 2eb817c..c3fbe5f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -708,6 +708,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    283,
+/**/
     282,
 /**/
     281,