diff --git a/src/diff.c b/src/diff.c
index 149022a..69ba7a3 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -292,6 +292,16 @@
     linenr_T	lnum_deleted = line1;	/* lnum of remaining deletion */
     int		check_unchanged;
 
+    if (diff_internal())
+    {
+	// Will udpate diffs before redrawing.  Set _invalid to update the
+	// diffs themselves, set _update to also update folds properly just
+	// before redrawing.
+	tp->tp_diff_invalid = TRUE;
+	tp->tp_diff_update = TRUE;
+	return;
+    }
+
     if (line2 == MAXLNUM)
     {
 	/* mark_adjust(99, MAXLNUM, 9, 0): insert lines */
@@ -640,7 +650,7 @@
  */
     static void
 diff_redraw(
-    int		dofold)	    /* also recompute the folds */
+    int		dofold)	    // also recompute the folds
 {
     win_T	*wp;
     int		n;
@@ -863,7 +873,7 @@
  * Note that if the internal diff failed for one of the buffers, the external
  * diff will be used anyway.
  */
-    static int
+    int
 diff_internal(void)
 {
     return (diff_flags & DIFF_INTERNAL) != 0 && *p_dex == NUL;
@@ -887,9 +897,9 @@
 
 /*
  * Completely update the diffs for the buffers involved.
- * This uses the ordinary "diff" command.
- * The buffers are written to a file, also for unmodified buffers (the file
- * could have been produced by autocommands, e.g. the netrw plugin).
+ * When using the external "diff" command the buffers are written to a file,
+ * also for unmodified buffers (the file could have been produced by
+ * autocommands, e.g. the netrw plugin).
  */
     void
 ex_diffupdate(exarg_T *eap)	// "eap" can be NULL
diff --git a/src/main.c b/src/main.c
index bf9b842..8ee1650 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1200,6 +1200,15 @@
 	    }
 
 #if defined(FEAT_DIFF)
+	    // Updating diffs from changed() does not always work properly,
+	    // esp. updating folds.  Do an update just before redrawing if
+	    // needed.
+	    if (curtab->tp_diff_update || curtab->tp_diff_invalid)
+	    {
+		ex_diffupdate(NULL);
+		curtab->tp_diff_update = FALSE;
+	    }
+
 	    /* Scroll-binding for diff mode may have been postponed until
 	     * here.  Avoids doing it for every change. */
 	    if (diff_need_scrollbind)
diff --git a/src/misc1.c b/src/misc1.c
index f9055e6..28e44da 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3093,7 +3093,7 @@
     changed_lines_buf(curbuf, lnum, lnume, xtra);
 
 #ifdef FEAT_DIFF
-    if (xtra == 0 && curwin->w_p_diff)
+    if (xtra == 0 && curwin->w_p_diff && !diff_internal())
     {
 	/* When the number of lines doesn't change then mark_adjust() isn't
 	 * called and other diff buffers still need to be marked for
@@ -3173,6 +3173,11 @@
     /* mark the buffer as modified */
     changed();
 
+#ifdef FEAT_DIFF
+    if (curwin->w_p_diff && diff_internal())
+	curtab->tp_diff_update = TRUE;
+#endif
+
     /* set the '. mark */
     if (!cmdmod.keepjumps)
     {
diff --git a/src/proto/diff.pro b/src/proto/diff.pro
index f1afeec..d6ab221 100644
--- a/src/proto/diff.pro
+++ b/src/proto/diff.pro
@@ -4,6 +4,7 @@
 void diff_buf_add(buf_T *buf);
 void diff_invalidate(buf_T *buf);
 void diff_mark_adjust(linenr_T line1, linenr_T line2, long amount, long amount_after);
+int diff_internal(void);
 void ex_diffupdate(exarg_T *eap);
 void ex_diffpatch(exarg_T *eap);
 void ex_diffsplit(exarg_T *eap);
diff --git a/src/structs.h b/src/structs.h
index 3c2bf3f..7a74e8f 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2509,7 +2509,8 @@
 #ifdef FEAT_DIFF
     diff_T	    *tp_first_diff;
     buf_T	    *(tp_diffbuf[DB_COUNT]);
-    int		    tp_diff_invalid;	/* list of diffs is outdated */
+    int		    tp_diff_invalid;	// list of diffs is outdated
+    int		    tp_diff_update;	// update diffs before redrawing
 #endif
     frame_T	    *(tp_snapshot[SNAP_COUNT]);  /* window layout snapshots */
 #ifdef FEAT_EVAL
diff --git a/src/version.c b/src/version.c
index 13b8aed..29557cd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    394,
+/**/
     393,
 /**/
     392,
