Problem: Expression register set by not executed put command.
Solution: Do not set the register if the command is skipped. (closes #8909)
// 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);
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 3475,
/**/
3474,
/**/