Mercurial > vim
changeset 25521:2063b858cad9 v8.2.3297
patch 8.2.3297: cannot use all commands inside a {} block
Commit: https://github.com/vim/vim/commit/63b9173693015b135aad8e3657bef5e7f776787e
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Aug 5 20:40:03 2021 +0200
patch 8.2.3297: cannot use all commands inside a {} block
Problem: Cannot use all commands inside a {} block after :command and
:autocmd.
Solution: Do consider \n to separate commands. (closes #8620)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 05 Aug 2021 20:45:04 +0200 |
parents | 619be3af2a4e |
children | 3555268fbaf5 |
files | runtime/doc/map.txt src/errors.h src/eval.c src/evalvars.c src/ex_cmds.c src/ex_docmd.c src/ex_eval.c src/proto/ex_docmd.pro src/proto/ex_eval.pro src/syntax.c src/testdir/test_autocmd.vim src/testdir/test_usercommands.vim src/userfunc.c src/version.c src/vim9compile.c src/vim9script.c |
diffstat | 16 files changed, 82 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1580,8 +1580,11 @@ Example: > echo 'hello' g:calledMyCommand = true } -No nesting is supported, inline functions cannot be used. Using `:normal` -directly does not work, you can use it indirectly with `:execute`. +< *E1231* +There must be white space before the "{". No nesting is supported, inline +functions cannot be used. Commands where a "|" may appear in the argument, +such as commands with an expression argument, cannot be followed by a "|" and +another command. The replacement text {repl} for a user defined command is scanned for special escape sequences, using <...> notation. Escape sequences are replaced with
--- a/src/errors.h +++ b/src/errors.h @@ -643,4 +643,6 @@ EXTERN char e_list_dict_or_blob_required EXTERN char e_expected_dictionary_for_using_key_str_but_got_str[] INIT(= N_("E1229: Expected dictionary for using key \"%s\", but got %s")); EXTERN char e_encryption_sodium_mlock_failed[] - INIT(= N_("E1230: encryption: sodium_mlock() failed")); + INIT(= N_("E1230: Encryption: sodium_mlock() failed")); +EXTERN char e_cannot_use_bar_to_separate_commands_here_str[] + INIT(= N_("E1231: Cannot use a bar to separate commands here: %s"));
--- a/src/eval.c +++ b/src/eval.c @@ -2314,7 +2314,7 @@ eval0( } if (eap != NULL) - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); return ret; } @@ -6173,7 +6173,7 @@ ex_echo(exarg_T *eap) clear_tv(&rettv); arg = skipwhite(arg); } - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); clear_evalarg(&evalarg, eap); if (eap->skip) @@ -6317,7 +6317,7 @@ ex_execute(exarg_T *eap) if (eap->skip) --emsg_skip; - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); } /*
--- a/src/evalvars.c +++ b/src/evalvars.c @@ -812,7 +812,7 @@ ex_let(exarg_T *eap) list_func_vars(&first); list_vim_vars(&first); } - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); } else if (expr[0] == '=' && expr[1] == '<' && expr[2] == '<') { @@ -1629,7 +1629,7 @@ ex_unletlock( arg = skipwhite(name_end); } while (!ends_excmd2(name_end, arg)); - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); } static int
--- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -450,7 +450,7 @@ ex_sort(exarg_T *eap) unique = TRUE; else if (*p == '"') // comment start break; - else if (check_nextcmd(p) != NULL) + else if (eap->nextcmd == NULL && check_nextcmd(p) != NULL) { eap->nextcmd = check_nextcmd(p); break; @@ -3930,7 +3930,7 @@ ex_substitute(exarg_T *eap) cmd = skipwhite(cmd); if (*cmd && *cmd != '"') // if not end-of-line or comment { - eap->nextcmd = check_nextcmd(cmd); + set_nextcmd(eap, cmd); if (eap->nextcmd == NULL) { semsg(_(e_trailing_arg), cmd);
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2314,22 +2314,24 @@ do_one_cmd( ea.do_ecmd_cmd = getargcmd(&ea.arg); /* - * Check for '|' to separate commands and '"' or '#' to start comments. - * Don't do this for ":read !cmd" and ":write !cmd". + * For commands that do not use '|' inside their argument: Check for '|' to + * separate commands and '"' or '#' to start comments. + * + * Otherwise: Check for <newline> to end a shell command. + * Also do this for ":read !cmd", ":write !cmd" and ":global". + * Also do this inside a { - } block after :command and :autocmd. + * Any others? */ if ((ea.argt & EX_TRLBAR) && !ea.usefilter) + { separate_nextcmd(&ea); - - /* - * Check for <newline> to end a shell command. - * Also do this for ":read !cmd", ":write !cmd" and ":global". - * Any others? - */ + } else if (ea.cmdidx == CMD_bang || ea.cmdidx == CMD_terminal || ea.cmdidx == CMD_global || ea.cmdidx == CMD_vglobal - || ea.usefilter) + || ea.usefilter + || inside_block(&ea)) { for (p = ea.arg; *p; ++p) { @@ -5410,6 +5412,21 @@ check_nextcmd(char_u *p) } /* + * If "eap->nextcmd" is not set, check for a next command at "p". + */ + void +set_nextcmd(exarg_T *eap, char_u *arg) +{ + char_u *p = check_nextcmd(arg); + + if (eap->nextcmd == NULL) + eap->nextcmd = p; + else if (p != NULL) + // cannot use "| command" inside a {} block + semsg(_(e_cannot_use_bar_to_separate_commands_here_str), arg); +} + +/* * - if there are more files to edit * - and this is the last window * - and forceit not used @@ -7546,7 +7563,7 @@ ex_wincmd(exarg_T *eap) else p = eap->arg + 1; - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); p = skipwhite(p); if (*p != NUL && *p != ( #ifdef FEAT_EVAL @@ -8580,7 +8597,7 @@ ex_findpat(exarg_T *eap) if (!ends_excmd2(eap->arg, p)) eap->errmsg = ex_errmsg(e_trailing_arg, p); else - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); } } if (!eap->skip)
--- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -1461,6 +1461,18 @@ ex_endblock(exarg_T *eap) leave_block(cstack); } + int +inside_block(exarg_T *eap) +{ + cstack_T *cstack = eap->cstack; + int i; + + for (i = 0; i <= cstack->cs_idx; ++i) + if (cstack->cs_flags[cstack->cs_idx] & CSF_BLOCK) + return TRUE; + return FALSE; +} + /* * ":throw expr" */
--- a/src/proto/ex_docmd.pro +++ b/src/proto/ex_docmd.pro @@ -33,6 +33,7 @@ int ends_excmd(int c); int ends_excmd2(char_u *cmd_start, char_u *cmd); char_u *find_nextcmd(char_u *p); char_u *check_nextcmd(char_u *p); +void set_nextcmd(exarg_T *eap, char_u *p); char_u *get_command_name(expand_T *xp, int idx); void not_exiting(void); int before_quit_autocmds(win_T *wp, int quit_all, int forceit);
--- a/src/proto/ex_eval.pro +++ b/src/proto/ex_eval.pro @@ -22,6 +22,7 @@ void ex_break(exarg_T *eap); void ex_endwhile(exarg_T *eap); void ex_block(exarg_T *eap); void ex_endblock(exarg_T *eap); +int inside_block(exarg_T *eap); void ex_throw(exarg_T *eap); void do_throw(cstack_T *cstack); void ex_try(exarg_T *eap);
--- a/src/syntax.c +++ b/src/syntax.c @@ -3789,7 +3789,7 @@ syn_cmd_enable(exarg_T *eap, int syncing static void syn_cmd_reset(exarg_T *eap, int syncing UNUSED) { - eap->nextcmd = check_nextcmd(eap->arg); + set_nextcmd(eap, eap->arg); if (!eap->skip) { set_internal_string_var((char_u *)"syntax_cmd", (char_u *)"reset"); @@ -3821,7 +3821,7 @@ syn_cmd_onoff(exarg_T *eap, char *name) { char_u buf[100]; - eap->nextcmd = check_nextcmd(eap->arg); + set_nextcmd(eap, eap->arg); if (!eap->skip) { STRCPY(buf, "so "); @@ -3928,7 +3928,7 @@ syn_cmd_list( arg = skipwhite(arg_end); } } - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); } static void @@ -4921,7 +4921,7 @@ error: } if (rest != NULL) - eap->nextcmd = check_nextcmd(rest); + set_nextcmd(eap, rest); else semsg(_(e_invarg2), arg); @@ -4978,7 +4978,7 @@ syn_cmd_match( /* * Check for trailing command and illegal trailing arguments. */ - eap->nextcmd = check_nextcmd(rest); + set_nextcmd(eap, rest); if (!ends_excmd2(eap->cmd, rest) || eap->skip) rest = NULL; else if (ga_grow(&curwin->w_s->b_syn_patterns, 1) != FAIL @@ -5218,7 +5218,7 @@ syn_cmd_region( * Check for trailing garbage or command. * If OK, add the item. */ - eap->nextcmd = check_nextcmd(rest); + set_nextcmd(eap, rest); if (!ends_excmd(*rest) || eap->skip) rest = NULL; else if (ga_grow(&(curwin->w_s->b_syn_patterns), pat_count) != FAIL @@ -5896,7 +5896,7 @@ syn_cmd_sync(exarg_T *eap, int syncing U semsg(_("E404: Illegal arguments: %s"), arg_start); else if (!finished) { - eap->nextcmd = check_nextcmd(arg_start); + set_nextcmd(eap, arg_start); redraw_curbuf_later(SOME_VALID); syn_stack_free_all(curwin->w_s); // Need to recompute all syntax. }
index 4a7dd60f6d8be52764a635a738a022c59a6036f5..b2e4952be089ea34c1baacd1b0b721a226741bf3 GIT binary patch literal 84304 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 F`+ve+LrVYv
--- a/src/testdir/test_usercommands.vim +++ b/src/testdir/test_usercommands.vim @@ -645,6 +645,14 @@ func Test_usercmd_with_block() echo 'hello' END call CheckScriptFailure(lines, 'E1026:') + + let lines =<< trim END + command BarCommand { + echo 'hello' | echo 'there' + } + BarCommand + END + call CheckScriptFailure(lines, 'E1231:') endfunc " vim: shiftwidth=2 sts=2 expandtab
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -3842,7 +3842,7 @@ define_function(exarg_T *eap, char_u *na { if (!eap->skip) list_functions(NULL); - eap->nextcmd = check_nextcmd(eap->arg); + set_nextcmd(eap, eap->arg); return NULL; } @@ -3869,7 +3869,7 @@ define_function(exarg_T *eap, char_u *na } if (*p == '/') ++p; - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); return NULL; } @@ -3947,7 +3947,7 @@ define_function(exarg_T *eap, char_u *na semsg(_(e_trailing_arg), p); goto ret_free; } - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); if (eap->nextcmd != NULL) *p = NUL; if (!eap->skip && !got_int) @@ -4655,7 +4655,7 @@ ex_delfunction(exarg_T *eap) semsg(_(e_trailing_arg), p); return; } - eap->nextcmd = check_nextcmd(p); + set_nextcmd(eap, p); if (eap->nextcmd != NULL) *p = NUL; @@ -4844,7 +4844,7 @@ ex_return(exarg_T *eap) if (returning) eap->nextcmd = NULL; else if (eap->nextcmd == NULL) // no argument - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); if (eap->skip) --emsg_skip; @@ -5004,7 +5004,7 @@ ex_call(exarg_T *eap) } } else - eap->nextcmd = check_nextcmd(arg); + set_nextcmd(eap, arg); } end:
--- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3297, +/**/ 3296, /**/ 3295,
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -5691,7 +5691,7 @@ compile_nested_function(exarg_T *eap, cc name_end = skip_regexp(name_start + 1, '/', TRUE); if (*name_end == '/') ++name_end; - eap->nextcmd = check_nextcmd(name_end); + set_nextcmd(eap, name_end); } if (name_end == name_start || *skipwhite(name_end) != '(') {