# HG changeset patch # User Bram Moolenaar # Date 1616249702 -3600 # Node ID 12378fbc99bc354dc160482c1bee47aee9f1c6fd # Parent 96522ca7aac2b40a5cb0df4bf5f08dd2d5000a3f patch 8.2.2629: Vim9: error for #{{ is not desired Commit: https://github.com/vim/vim/commit/a0399efa72380115a3eb650544dd64e459476bd2 Author: Bram Moolenaar 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) diff --git a/src/errors.h b/src/errors.h --- 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")); diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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 == '"'; diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- 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) diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/vim9script.c b/src/vim9script.c --- 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)