summaryrefslogtreecommitdiff
path: root/src/undo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/undo.c')
-rw-r--r--src/undo.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/undo.c b/src/undo.c
index efbd4ccf4..a2861d536 100644
--- 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 */