updated for version 7.0-126
diff --git a/src/edit.c b/src/edit.c
index 43a4c39..f0aecef 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -5333,8 +5333,16 @@
 	/* Format with 'formatexpr' when it's set.  Use internal formatting
 	 * when 'formatexpr' isn't set or it returns non-zero. */
 #if defined(FEAT_EVAL)
-	if (*curbuf->b_p_fex == NUL
-			     || fex_format(curwin->w_cursor.lnum, 1L, c) != 0)
+	int do_internal = TRUE;
+
+	if (*curbuf->b_p_fex != NUL)
+	{
+	    do_internal = (fex_format(curwin->w_cursor.lnum, 1L, c) != 0);
+	    /* It may be required to save for undo again, e.g. when setline()
+	     * was called. */
+	    ins_need_undo = TRUE;
+	}
+	if (do_internal)
 #endif
 	    internal_format(textwidth, second_indent, flags, c == NUL);
     }
diff --git a/src/version.c b/src/version.c
index 6ff099e..5c56852 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    126,
+/**/
     125,
 /**/
     124,