diff src/edit.c @ 5120:6e611380b4cf v7.3.1303

updated for version 7.3.1303 Problem: Undo is synced whenever CTRL-R = is called, breaking some plugins. Solution: Only break undo when calling setline() or append().
author Bram Moolenaar <bram@vim.org>
date Thu, 04 Jul 2013 20:25:41 +0200
parents 08d4c11cdaed
children 460d5be9395e
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -8135,9 +8135,9 @@ ins_reg()
 # ifdef USE_IM_CONTROL
 	int	im_on = im_get_status();
 # endif
-	/* Sync undo, so the effect of e.g., setline() can be undone. */
-	u_sync(TRUE);
-	ins_need_undo = TRUE;
+	/* Sync undo when evaluating the expression calls setline() or
+	 * append(), so that it can be undone separately. */
+	u_sync_once = 2;
 
 	regname = get_expr_register();
 # ifdef USE_IM_CONTROL
@@ -8178,6 +8178,9 @@ ins_reg()
 #ifdef FEAT_EVAL
     }
     --no_u_sync;
+    if (u_sync_once == 1)
+	ins_need_undo = TRUE;
+    u_sync_once = 0;
 #endif
 #ifdef FEAT_CMDL_INFO
     clear_showcmd();