]> granicus.if.org Git - vim/commitdiff
patch 8.2.1943: Vim9: wrong error message when colon is missing v8.2.1943
authorBram Moolenaar <Bram@vim.org>
Mon, 2 Nov 2020 20:08:47 +0000 (21:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 2 Nov 2020 20:08:47 +0000 (21:08 +0100)
Problem:    Vim9: wrong error message when colon is missing.
Solution:   Check for a missing colon. (issue #7239)

src/ex_docmd.c
src/testdir/test_vim9_cmd.vim
src/version.c

index d2cc05f59a56aa99d2d14e3a2fc6c419d276573f..290dcee26a9e71026be66f041ab49ce23a21da54 100644 (file)
@@ -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
index dc4dc76ba3f9c9dcd7babe3b82db0da5bc2fd6fb..2ba779b7669b6ac113a909d7c7e2647a51d22070 100644 (file)
@@ -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
index 7591c83d7edc62f73d3f87270b279feee3e30f32..b1125670cc338eb589879f12cf7934fc5afd5904 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1943,
 /**/
     1942,
 /**/