patch 8.1.0394: diffs are not always updated correctly

Problem:    Diffs are not always updated correctly.
Solution:   When using internal diff update for any changes properly.
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)
     {