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) != '(')
     {
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -311,7 +311,7 @@ ex_import(exarg_T *eap)
     cmd_end = handle_import(eap->arg, NULL, current_sctx.sc_sid,
 							       &evalarg, NULL);
     if (cmd_end != NULL)
-	eap->nextcmd = check_nextcmd(cmd_end);
+	set_nextcmd(eap, cmd_end);
     clear_evalarg(&evalarg, eap);
 }