summaryrefslogtreecommitdiffstats
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 310934ed71..4a71989ddb 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3222,7 +3222,7 @@ find_ex_command(
*p == '('
|| (p == eap->cmd
? (
- // "{..." is an dict expression.
+ // "{..." is a dict expression or block start.
*eap->cmd == '{'
// "'string'->func()" is an expression.
|| *eap->cmd == '\''
@@ -3234,6 +3234,12 @@ find_ex_command(
// "varname->func()" is an expression.
: (*p == '-' && p[1] == '>')))
{
+ if (*eap->cmd == '{' && ends_excmd(*skipwhite(eap->cmd + 1)))
+ {
+ // "{" by itself is the start of a block.
+ eap->cmdidx = CMD_block;
+ return eap->cmd + 1;
+ }
eap->cmdidx = CMD_eval;
return eap->cmd;
}
@@ -3355,7 +3361,7 @@ find_ex_command(
}
// check for non-alpha command
- if (p == eap->cmd && vim_strchr((char_u *)"@*!=><&~#", *p) != NULL)
+ if (p == eap->cmd && vim_strchr((char_u *)"@*!=><&~#}", *p) != NULL)
++p;
len = (int)(p - eap->cmd);
if (*eap->cmd == 'd' && (p[-1] == 'l' || p[-1] == 'p'))