diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 617de6f06d..2c55e67bc3 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2382,9 +2382,12 @@ do_one_cmd( // for '=' register: accept the rest of the line as an expression if (ea.arg[-1] == '=' && ea.arg[0] != NUL) { - set_expr_line(vim_strsave(ea.arg), &ea); + if (!ea.skip) + { + set_expr_line(vim_strsave(ea.arg), &ea); + did_set_expr_line = TRUE; + } ea.arg += STRLEN(ea.arg); - did_set_expr_line = TRUE; } #endif ea.arg = skipwhite(ea.arg); diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim index b080575e40..c3a911f6cb 100644 --- a/src/testdir/test_excmd.vim +++ b/src/testdir/test_excmd.vim @@ -647,4 +647,12 @@ func Test_command_not_implemented_E319() endif endfunc +func Test_not_break_expression_register() + call setreg('=', '1+1') + if 0 + put =1 + endif + call assert_equal('1+1', getreg('=', 1)) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index e92719172f..e6a4b1ad5d 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3475, /**/ 3474, /**/