From 36113e46b4a7e8c33aa1ed1c9cfa6591c952183d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 2 Nov 2020 21:08:47 +0100 Subject: patch 8.2.1943: Vim9: wrong error message when colon is missing Problem: Vim9: wrong error message when colon is missing. Solution: Check for a missing colon. (issue #7239) --- src/ex_docmd.c | 15 +++++++++++---- src/testdir/test_vim9_cmd.vim | 9 +++++++++ src/version.c | 2 ++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/ex_docmd.c b/src/ex_docmd.c index d2cc05f59a..290dcee26a 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1807,12 +1807,19 @@ do_one_cmd( if (ea.cmd == cmd + 1 && *cmd == '$') // should be "$VAR = val" --ea.cmd; - else if (ea.cmd > cmd) + p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL); + if (ea.cmdidx == CMD_SIZE) { - emsg(_(e_colon_required_before_a_range)); - goto doend; + char_u *ar = skip_range(ea.cmd, TRUE, NULL); + + // If a ':' before the range is missing, give a clearer error + // message. + if (ar > ea.cmd) + { + emsg(_(e_colon_required_before_a_range)); + goto doend; + } } - p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL); } else #endif diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index dc4dc76ba3..2ba779b766 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -460,6 +460,15 @@ def Test_command_modifier_other() # verbose enddef +def Test_range_after_command_modifier() + CheckScriptFailure(['vim9script', 'silent keepjump 1d _'], 'E1050:', 2) + new + setline(1, 'xxx') + CheckScriptSuccess(['vim9script', 'silent keepjump :1d _']) + assert_equal('', getline(1)) + bwipe! +enddef + def Test_eval_command() var from = 3 var to = 5 diff --git a/src/version.c b/src/version.c index 7591c83d7e..b1125670cc 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1943, /**/ 1942, /**/ -- cgit v1.2.3