Skip to content

Commit 2432b4a

Browse files
zeertzjqchrisbra
authored andcommitted
patch 9.1.0713: Newline causes E749 in Ex mode
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 <[email protected]> Signed-off-by: Christian Brabandt <[email protected]>
1 parent 3db32d2 commit 2432b4a

3 files changed

Lines changed: 23 additions & 0 deletions

File tree

src/ex_docmd.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2916,6 +2916,11 @@ parse_command_modifiers(
29162916
}
29172917
return FAIL;
29182918
}
2919+
if (eap->nextcmd == NULL && *eap->cmd == '\n')
2920+
{
2921+
eap->nextcmd = eap->cmd + 1;
2922+
return FAIL;
2923+
}
29192924
if (*eap->cmd == NUL)
29202925
{
29212926
if (!skip_only)

src/testdir/test_ex_mode.vim

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,4 +387,20 @@ func Test_global_insert_newline()
387387
bwipe!
388388
endfunc
389389

390+
" An empty command followed by a newline shouldn't cause E749 in Ex mode.
391+
func Test_ex_empty_command_newline()
392+
let g:var = 0
393+
call feedkeys("gQexecute \"\\nlet g:var = 1\"\r", 'xt')
394+
call assert_equal(1, g:var)
395+
call feedkeys("gQexecute \" \\nlet g:var = 2\"\r", 'xt')
396+
call assert_equal(2, g:var)
397+
call feedkeys("gQexecute \"\\t \\nlet g:var = 3\"\r", 'xt')
398+
call assert_equal(3, g:var)
399+
call feedkeys("gQexecute \"\\\"?!\\nlet g:var = 4\"\r", 'xt')
400+
call assert_equal(4, g:var)
401+
call feedkeys("gQexecute \" \\\"?!\\nlet g:var = 5\"\r", 'xt')
402+
call assert_equal(5, g:var)
403+
unlet g:var
404+
endfunc
405+
390406
" vim: shiftwidth=2 sts=2 expandtab

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,8 @@ static char *(features[]) =
704704

705705
static int included_patches[] =
706706
{ /* Add new patch number below this line */
707+
/**/
708+
713,
707709
/**/
708710
712,
709711
/**/

0 commit comments

Comments
 (0)