updated for version 7.3.1200
Problem: When calling setline() from Insert mode, using CTRL-R =, undo does
not work properly. (Israel Chauca)
Solution: Sync undo after evaluating the expression. (Christian Brabandt)
diff --git a/src/edit.c b/src/edit.c
index 4eab20e..413740f 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -8126,10 +8126,8 @@
--no_mapping;
#ifdef FEAT_EVAL
- /*
- * Don't call u_sync() while getting the expression,
- * evaluating it or giving an error message for it!
- */
+ /* Don't call u_sync() while typing the expression or giving an error
+ * message for it. Only call it explicitly. */
++no_u_sync;
if (regname == '=')
{
@@ -8142,6 +8140,9 @@
if (im_on)
im_set_active(TRUE);
# endif
+ if (regname == '=')
+ /* sync undo, so the effect of e.g., setline() can be undone */
+ u_sync(TRUE);
}
if (regname == NUL || !valid_yank_reg(regname, FALSE))
{