Mercurial > vim
diff src/vim9compile.c @ 21901:1ebcce655dd3 v8.2.1500
patch 8.2.1500: Vim9: error when using address without a command
Commit: https://github.com/vim/vim/commit/5d72ce69c8783fd8f1a0355c00806c5084010eec
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Aug 20 23:04:06 2020 +0200
patch 8.2.1500: Vim9: error when using address without a command
Problem: Vim9: error when using address without a command.
Solution: Execute the range itself. (closes https://github.com/vim/vim/issues/6747)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 20 Aug 2020 23:15:03 +0200 |
parents | f19ac9b8b011 |
children | 1fc2ffadf412 |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6661,10 +6661,22 @@ compile_def_function(ufunc_T *ufunc, int if (*cmd != '\'' || starts_with_colon) { ea.cmd = skip_range(ea.cmd, NULL); - if (ea.cmd > cmd && !starts_with_colon) + if (ea.cmd > cmd) { - emsg(_(e_colon_required_before_a_range)); - goto erret; + if (!starts_with_colon) + { + emsg(_(e_colon_required_before_a_range)); + goto erret; + } + if (ends_excmd2(line, ea.cmd)) + { + // A range without a command: jump to the line. + // TODO: compile to a more efficient command, possibly + // calling parse_cmd_address(). + ea.cmdidx = CMD_SIZE; + line = compile_exec(line, &ea, &cctx); + goto nextline; + } } } p = find_ex_command(&ea, NULL, starts_with_colon ? NULL @@ -6845,6 +6857,7 @@ compile_def_function(ufunc_T *ufunc, int line = compile_exec(line, &ea, &cctx); break; } +nextline: if (line == NULL) goto erret; line = skipwhite(line);