]> granicus.if.org Git - vim/commitdiff
patch 7.4.974 v7.4.974
authorBram Moolenaar <Bram@vim.org>
Thu, 17 Dec 2015 14:03:55 +0000 (15:03 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 17 Dec 2015 14:03:55 +0000 (15:03 +0100)
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.

src/diff.c
src/version.c

index 03edb3ccab1d5b64eb3ee0eeaddb13b9f53cd563..09dfdbeeec60e31a8ff4b05ea052e19d2eccef81 100644 (file)
@@ -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, buf2, lnum3)
 
     return lnum2;
 }
-#endif
 
 #if defined(FEAT_FOLDING) || defined(PROTO)
 /*
index 5c23005cc710aff719dc1443b5e68543aa1942fa..899e27f4936eed4f51ab0d3cf58c54e213001687 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    974,
 /**/
     973,
 /**/