changeset 23477:95db03521b01 v8.2.2281

patch 8.2.2281: Vim9: compiled "wincmd" cannot be followed by bar Commit: https://github.com/vim/vim/commit/a11919fa44fb43e947ef7871f31096a79429ec8a Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 2 19:44:56 2021 +0100 patch 8.2.2281: Vim9: compiled "wincmd" cannot be followed by bar Problem: Vim9: compiled "wincmd" cannot be followed by bar. Solution: Check for bar after "wincmd". (closes https://github.com/vim/vim/issues/7599)
author Bram Moolenaar <Bram@vim.org>
date Sat, 02 Jan 2021 20:00:03 +0100
parents b1591bf3ee33
children 5e697f307c06
files src/testdir/test_vim9_cmd.vim src/version.c src/vim9compile.c
diffstat 3 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -868,4 +868,14 @@ def Test_insert_complete()
   bwipe!
 enddef
 
+def Test_wincmd()
+  split
+  var id1 = win_getid()
+  if true
+    try | wincmd w | catch | endtry
+  endif
+  assert_notequal(id1, win_getid())
+  close
+enddef
+
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2281,
+/**/
     2280,
 /**/
     2279,
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7329,6 +7329,20 @@ compile_exec(char_u *line, exarg_T *eap,
 	    if (eap->nextcmd != NULL)
 		nextcmd = eap->nextcmd;
 	}
+	else if (eap->cmdidx == CMD_wincmd)
+	{
+	    p = eap->arg;
+	    if (*p != NUL)
+		++p;
+	    if (*p == 'g' || *p == Ctrl_G)
+		++p;
+	    p = skipwhite(p);
+	    if (*p == '|')
+	    {
+		*p = NUL;
+		nextcmd = p + 1;
+	    }
+	}
     }
 
     if (eap->cmdidx == CMD_syntax && STRNCMP(eap->arg, "include ", 8) == 0)