diff src/undo.c @ 825:6675076019ae v7.0d

updated for version 7.0d
author vimboss
date Mon, 10 Apr 2006 14:55:34 +0000
parents 9f345c48220b
children 8bebcabccc2c
line wrap: on
line diff
--- a/src/undo.c
+++ b/src/undo.c
@@ -551,7 +551,7 @@ u_undo(count)
      */
     if (curbuf->b_u_synced == FALSE)
     {
-	u_sync();
+	u_sync(TRUE);
 	count = 1;
     }
 
@@ -673,7 +673,7 @@ undo_time(step, sec, absolute)
 
     /* First make sure the current undoable change is synced. */
     if (curbuf->b_u_synced == FALSE)
-	u_sync();
+	u_sync(TRUE);
 
     u_newcount = 0;
     u_oldcount = 0;
@@ -1255,10 +1255,12 @@ u_undo_end(did_undo, absolute)
  * u_sync: stop adding to the current entry list
  */
     void
-u_sync()
+u_sync(force)
+    int	    force;	/* Also sync when no_u_sync is set. */
 {
-    if (curbuf->b_u_synced)
-	return;		    /* already synced */
+    /* Skip it when already synced or syncing is disabled. */
+    if (curbuf->b_u_synced || (!force && no_u_sync > 0))
+	return;
 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
     if (im_is_preediting())
 	return;		    /* XIM is busy, don't break an undo sequence */