summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-03-20 15:00:01 +0100
committerBram Moolenaar <Bram@vim.org>2021-03-20 15:00:01 +0100
commita0399efa72380115a3eb650544dd64e459476bd2 (patch)
tree812b06639a9fa26d44cfa89d78477c41049ee336
parent5c7a299c1652b28977c30e3e3a5ab93c65e7f7ed (diff)
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.h2
-rw-r--r--src/ex_docmd.c3
-rw-r--r--src/testdir/test_vim9_expr.vim4
-rw-r--r--src/version.c2
-rw-r--r--src/vim9script.c6
5 files changed, 12 insertions, 5 deletions
diff --git a/src/errors.h b/src/errors.h
index ed55304bc4..e5c9d8e992 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 67bcc7370e..d82d2b8769 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 de6eabd1ef..afe5f7dab0 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 bcf8b6d2b4..6ec87e4ba6 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 9366e7632a..8806de3137 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)