patch 8.2.2629: Vim9: error for #{{ is not desired

Problem:    Vim9: error for #{{ is not desired.
Solution:   Adjust the checks. (closes #7990)
diff --git a/src/errors.h b/src/errors.h
index ed55304..e5c9d8e 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -376,4 +376,4 @@
 EXTERN char e_import_as_name_not_supported_here[]
 	INIT(= N_("E1169: 'import * as {name}' not supported here"));
 EXTERN char e_cannot_use_hash_curly_to_start_comment[]
-	INIT(= N_("E1170: 'Cannot use #{ to start a comment"));
+	INIT(= N_("E1170: Cannot use #{ to start a comment"));
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 67bcc73..d82d2b8 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5234,7 +5234,8 @@
 	return TRUE;
 #ifdef FEAT_EVAL
     if (in_vim9script())
-	return c == '#' && cmd[1] != '{'
+	//  # starts a comment, #{ might be a mistake, #{{ can start a fold
+	return c == '#' && (cmd[1] != '{' || cmd[2] == '{')
 				 && (cmd == cmd_start || VIM_ISWHITE(cmd[-1]));
 #endif
     return c == '"';
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index de6eabd..afe5f7d 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2155,6 +2155,10 @@
       # automatic conversion from number to string
       var n = 123
       var dictnr = {[n]: 1}
+
+      # comment to start fold is OK
+      var x1: number #{{ fold
+      var x2 = 9 #{{ fold
   END
   CheckDefAndScriptSuccess(lines)
  
diff --git a/src/version.c b/src/version.c
index bcf8b6d..6ec87e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2629,
+/**/
     2628,
 /**/
     2627,
diff --git a/src/vim9script.c b/src/vim9script.c
index 9366e76..8806de3 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -120,7 +120,7 @@
     int
 vim9_bad_comment(char_u *p)
 {
-    if (p[0] == '#' && p[1] == '{')
+    if (p[0] == '#' && p[1] == '{' && p[2] != '{')
     {
 	emsg(_(e_cannot_use_hash_curly_to_start_comment));
 	return TRUE;
@@ -129,13 +129,13 @@
 }
 
 /*
- * Return TRUE if "p" points at a "#" not followed by '{'.
+ * Return TRUE if "p" points at a "#" not followed by one '{'.
  * Does not check for white space.
  */
     int
 vim9_comment_start(char_u *p)
 {
-    return p[0] == '#' && p[1] != '{';
+    return p[0] == '#' && (p[1] != '{' || p[2] == '{');
 }
 
 #if defined(FEAT_EVAL) || defined(PROTO)