diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-03-20 15:00:01 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-03-20 15:00:01 +0100 |
commit | a0399efa72380115a3eb650544dd64e459476bd2 (patch) | |
tree | 812b06639a9fa26d44cfa89d78477c41049ee336 | |
parent | 5c7a299c1652b28977c30e3e3a5ab93c65e7f7ed (diff) | |
download | vim-git-a0399efa72380115a3eb650544dd64e459476bd2.tar.gz |
patch 8.2.2629: Vim9: error for #{{ is not desiredv8.2.2629
Problem: Vim9: error for #{{ is not desired.
Solution: Adjust the checks. (closes #7990)
-rw-r--r-- | src/errors.h | 2 | ||||
-rw-r--r-- | src/ex_docmd.c | 3 | ||||
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 4 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 6 |
5 files changed, 12 insertions, 5 deletions
diff --git a/src/errors.h b/src/errors.h index ed55304bc..e5c9d8e99 100644 --- a/src/errors.h +++ b/src/errors.h @@ -376,4 +376,4 @@ EXTERN char e_argument_already_declared_in_script_str[] 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 67bcc7370..d82d2b876 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -5234,7 +5234,8 @@ ends_excmd2(char_u *cmd_start UNUSED, char_u *cmd) 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 de6eabd1e..afe5f7dab 100644 --- 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 index bcf8b6d2b..6ec87e4ba 100644 --- 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 index 9366e7632..8806de313 100644 --- 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) |