# HG changeset patch # User Bram Moolenaar # Date 1604348103 -3600 # Node ID 44317eb799d7ca71c0c2ed335f0b2c887207342c # Parent be5c458c01687074f15730b7cc84abb324dfa0ad patch 8.2.1943: Vim9: wrong error message when colon is missing Commit: https://github.com/vim/vim/commit/36113e46b4a7e8c33aa1ed1c9cfa6591c952183d Author: Bram Moolenaar Date: Mon Nov 2 21:08:47 2020 +0100 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 https://github.com/vim/vim/issues/7239) diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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) - { - emsg(_(e_colon_required_before_a_range)); - goto doend; - } p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL); + if (ea.cmdidx == CMD_SIZE) + { + 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; + } + } } else #endif diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim --- 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 --- 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 */ /**/ + 1943, +/**/ 1942, /**/ 1941,