]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0713: Newline causes E749 in Ex mode v9.1.0713
authorzeertzjq <zeertzjq@outlook.com>
Tue, 3 Sep 2024 20:58:30 +0000 (22:58 +0200)
committerChristian Brabandt <cb@256bit.org>
Tue, 3 Sep 2024 20:58:30 +0000 (22:58 +0200)
Problem:  Newline causes E749 in Ex mode (after 9.1.0573).
Solution: Don't execute empty command followed by a newline.

closes: #15614

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/ex_docmd.c
src/testdir/test_ex_mode.vim
src/version.c

index 2a59301548268f7769cba77e8e037540da251da4..0e69d5c384048e8cebe50089f0765299920a7fe3 100644 (file)
@@ -2916,6 +2916,11 @@ parse_command_modifiers(
            }
            return FAIL;
        }
+       if (eap->nextcmd == NULL && *eap->cmd == '\n')
+       {
+           eap->nextcmd = eap->cmd + 1;
+           return FAIL;
+       }
        if (*eap->cmd == NUL)
        {
            if (!skip_only)
index aa949355f41fcddbbc3e62406da21f65304b7b72..19d0bece60cbc112cc9f4810c046e441f6ae6bfd 100644 (file)
@@ -387,4 +387,20 @@ func Test_global_insert_newline()
   bwipe!
 endfunc
 
+" An empty command followed by a newline shouldn't cause E749 in Ex mode.
+func Test_ex_empty_command_newline()
+  let g:var = 0
+  call feedkeys("gQexecute \"\\nlet g:var = 1\"\r", 'xt')
+  call assert_equal(1, g:var)
+  call feedkeys("gQexecute \"  \\nlet g:var = 2\"\r", 'xt')
+  call assert_equal(2, g:var)
+  call feedkeys("gQexecute \"\\t \\nlet g:var = 3\"\r", 'xt')
+  call assert_equal(3, g:var)
+  call feedkeys("gQexecute \"\\\"?!\\nlet g:var = 4\"\r", 'xt')
+  call assert_equal(4, g:var)
+  call feedkeys("gQexecute \"  \\\"?!\\nlet g:var = 5\"\r", 'xt')
+  call assert_equal(5, g:var)
+  unlet g:var
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 1ba85a9c66dc2450db8f28d47e0012274f65b967..f53da011701bc4511b5b17e73765ddad4262fdcf 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    713,
 /**/
     712,
 /**/