diff --git a/src/undo.c b/src/undo.c
index cb51c99..88c0305 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -998,7 +998,12 @@
 	if (file_name == NULL)
 	{
 	    if (p_verbose > 0)
-		smsg((char_u *)_("Cannot write undo file in any directory in 'undodir'"));
+	    {
+		verbose_enter();
+		smsg((char_u *)
+		   _("Cannot write undo file in any directory in 'undodir'"));
+		verbose_leave();
+	    }
 	    return;
 	}
     }
@@ -1040,8 +1045,15 @@
 	    if (fd < 0)
 	    {
 		if (name != NULL || p_verbose > 0)
-		    smsg((char_u *)_("Will not overwrite with undo file, cannot read: %s"),
+		{
+		    if (name == NULL)
+			verbose_enter();
+		    smsg((char_u *)
+		      _("Will not overwrite with undo file, cannot read: %s"),
 								   file_name);
+		    if (name == NULL)
+			verbose_leave();
+		}
 		goto theend;
 	    }
 	    else
@@ -1055,8 +1067,14 @@
 		      || memcmp(buf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0)
 		{
 		    if (name != NULL || p_verbose > 0)
+		    {
+			if (name == NULL)
+			    verbose_enter();
 			smsg((char_u *)_("Will not overwrite, this is not an undo file: %s"),
 								   file_name);
+			if (name == NULL)
+			    verbose_leave();
+		    }
 		    goto theend;
 		}
 	    }
@@ -1064,6 +1082,15 @@
 	mch_remove(file_name);
     }
 
+    /* If there is no undo information at all, quit here after deleting any
+     * existing undo file. */
+    if (buf->b_u_numhead == 0)
+    {
+	if (p_verbose > 0)
+	    verb_msg((char_u *)_("Skipping undo file write, noting to undo"));
+	goto theend;
+    }
+
     fd = mch_open((char *)file_name,
 			    O_CREAT|O_EXTRA|O_WRONLY|O_EXCL|O_NOFOLLOW, perm);
     if (fd < 0)
@@ -1073,10 +1100,14 @@
     }
     (void)mch_setperm(file_name, perm);
     if (p_verbose > 0)
+    {
+	verbose_enter();
 	smsg((char_u *)_("Writing undo file: %s"), file_name);
+	verbose_leave();
+    }
 
 #ifdef U_DEBUG
-    /* Check if there already is a problem before writing. */
+    /* Check there is no problem in undo info before writing. */
     u_check(FALSE);
 #endif
 
@@ -1290,7 +1321,11 @@
         file_name = name;
 
     if (p_verbose > 0)
+    {
+	verbose_enter();
 	smsg((char_u *)_("Reading undo file: %s"), file_name);
+	verbose_leave();
+    }
     fp = mch_fopen((char *)file_name, "r");
     if (fp == NULL)
     {
@@ -1326,9 +1361,11 @@
     {
         if (p_verbose > 0 || name != NULL)
         {
-            verbose_enter();
+	    if (name == NULL)
+		verbose_enter();
             give_warning((char_u *)_("File contents changed, cannot use undo info"), TRUE);
-            verbose_leave();
+	    if (name == NULL)
+		verbose_leave();
         }
         goto error;
     }
