patch 7.4.2279
Problem:    Starting diff mode with the cursor in the last line might end up
            only showing one closed fold. (John Beckett)
Solution:   Scroll the window to show the same relative cursor position.
diff --git a/src/diff.c b/src/diff.c
index 35e29fc..05ca7ac 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1075,6 +1075,10 @@
 #ifdef FEAT_GUI
     need_mouse_correct = TRUE;
 #endif
+    /* Need to compute w_fraction when no redraw happened yet. */
+    validate_cursor();
+    set_fraction(curwin);
+
     /* don't use a new tab page, each tab page has its own diffs */
     cmdmod.tab = 0;
 
@@ -1101,6 +1105,9 @@
 			    curbuf,
 			    curwin->w_cursor.lnum);
 	    }
+	    /* Now that lines are folded scroll to show the cursor at the same
+	     * relative position. */
+	    scroll_to_fraction(curwin, curwin->w_height);
 	}
     }
 }
diff --git a/src/proto/window.pro b/src/proto/window.pro
index d82988e..8b649db 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -56,6 +56,7 @@
 void win_drag_vsep_line(win_T *dragwin, int offset);
 void set_fraction(win_T *wp);
 void win_new_height(win_T *wp, int height);
+void scroll_to_fraction(win_T *wp, int prev_height);
 void win_new_width(win_T *wp, int width);
 void win_comp_scroll(win_T *wp);
 void command_height(void);
diff --git a/src/version.c b/src/version.c
index 6f4be8e..007a56c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2279,
+/**/
     2278,
 /**/
     2277,
diff --git a/src/window.c b/src/window.c
index 65d8b36..6943c8f 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5674,8 +5674,6 @@
     void
 win_new_height(win_T *wp, int height)
 {
-    linenr_T	lnum;
-    int		sline, line_size;
     int		prev_height = wp->w_height;
 
     /* Don't want a negative height.  Happens when splitting a tiny window.
@@ -5701,6 +5699,16 @@
     wp->w_height = height;
     wp->w_skipcol = 0;
 
+    scroll_to_fraction(wp, prev_height);
+}
+
+    void
+scroll_to_fraction(win_T *wp, int prev_height)
+{
+    linenr_T	lnum;
+    int		sline, line_size;
+    int		height = wp->w_height;
+
     /* Don't change w_topline when height is zero.  Don't set w_topline when
      * 'scrollbind' is set and this isn't the current window. */
     if (height > 0