changeset 7338:96d5dd9e7bc9 v7.4.974

commit https://github.com/vim/vim/commit/f29a82dcd0914c76f595d475ddac4517371fab2b Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 17 15:03:55 2015 +0100 patch 7.4.974 Problem: When using :diffsplit the cursor jumps to the first line. Solution: Put the cursor on the line related to where the cursor was before the split.
author Christian Brabandt <cb@256bit.org>
date Thu, 17 Dec 2015 15:15:06 +0100
parents 18f4dcee47cb
children 8a8a4b6d799c
files src/diff.c src/version.c
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/diff.c
+++ b/src/diff.c
@@ -1087,6 +1087,7 @@ ex_diffsplit(eap)
     exarg_T	*eap;
 {
     win_T	*old_curwin = curwin;
+    buf_T	*old_curbuf = curbuf;
 
 #ifdef FEAT_GUI
     need_mouse_correct = TRUE;
@@ -1105,7 +1106,18 @@ ex_diffsplit(eap)
 	{
 	    /* Set 'diff', 'scrollbind' on and 'wrap' off. */
 	    diff_win_options(curwin, TRUE);
-	    diff_win_options(old_curwin, TRUE);
+	    if (win_valid(old_curwin))
+	    {
+		diff_win_options(old_curwin, TRUE);
+
+		if (buf_valid(old_curbuf))
+		    /* Move the cursor position to that of the old window. */
+		    curwin->w_cursor.lnum = diff_get_corresponding_line(
+			    old_curbuf,
+			    old_curwin->w_cursor.lnum,
+			    curbuf,
+			    curwin->w_cursor.lnum);
+	    }
 	}
     }
 }
@@ -2541,7 +2553,6 @@ diff_move_to(dir, count)
     return OK;
 }
 
-#if defined(FEAT_CURSORBIND) || defined(PROTO)
     linenr_T
 diff_get_corresponding_line(buf1, lnum1, buf2, lnum3)
     buf_T	*buf1;
@@ -2610,7 +2621,6 @@ diff_get_corresponding_line(buf1, lnum1,
 
     return lnum2;
 }
-#endif
 
 #if defined(FEAT_FOLDING) || defined(PROTO)
 /*
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    974,
+/**/
     973,
 /**/
     972,