changeset 24176:12378fbc99bc v8.2.2629

patch 8.2.2629: Vim9: error for #{{ is not desired Commit: https://github.com/vim/vim/commit/a0399efa72380115a3eb650544dd64e459476bd2 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 20 15:00:01 2021 +0100 patch 8.2.2629: Vim9: error for #{{ is not desired Problem: Vim9: error for #{{ is not desired. Solution: Adjust the checks. (closes https://github.com/vim/vim/issues/7990)
author Bram Moolenaar <Bram@vim.org>
date Sat, 20 Mar 2021 15:15:02 +0100
parents 96522ca7aac2
children db3a2032bfac
files src/errors.h src/ex_docmd.c src/testdir/test_vim9_expr.vim src/version.c src/vim9script.c
diffstat 5 files changed, 12 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/errors.h
+++ b/src/errors.h
@@ -376,4 +376,4 @@ EXTERN char e_argument_already_declared_
 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"));
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5234,7 +5234,8 @@ ends_excmd2(char_u *cmd_start UNUSED, ch
 	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 == '"';
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2155,6 +2155,10 @@ def Test_expr7_dict()
       # 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)
  
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2629,
+/**/
     2628,
 /**/
     2627,
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -120,7 +120,7 @@ not_in_vim9(exarg_T *eap)
     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 @@ vim9_bad_comment(char_u *p)
 }
 
 /*
- * 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)