Mercurial > vim
changeset 22790:44317eb799d7 v8.2.1943
patch 8.2.1943: Vim9: wrong error message when colon is missing
Commit: https://github.com/vim/vim/commit/36113e46b4a7e8c33aa1ed1c9cfa6591c952183d
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 02 Nov 2020 21:15:03 +0100 |
parents | be5c458c0168 |
children | 879583321480 |
files | src/ex_docmd.c src/testdir/test_vim9_cmd.vim src/version.c |
diffstat | 3 files changed, 23 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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