diff src/window.c @ 10013:942d40a92be6 v7.4.2279

commit https://github.com/vim/vim/commit/46328f9a1cc8047d1e05095bc9f531038c5a4028 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Aug 28 15:39:57 2016 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Sun, 28 Aug 2016 15:45:05 +0200
parents 9560a2eb7968
children 4aead6a9b7a9
line wrap: on
line diff
--- a/src/window.c
+++ b/src/window.c
@@ -5674,8 +5674,6 @@ set_fraction(win_T *wp)
     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 @@ win_new_height(win_T *wp, int height)
     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