summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-12-17 15:03:55 +0100
committerBram Moolenaar <Bram@vim.org>2015-12-17 15:03:55 +0100
commitf29a82dcd0914c76f595d475ddac4517371fab2b (patch)
tree56510dfbae677368f53d127e5c83438e2ac1a699
parent6f62fed349bf829da2adb02619dc9acba13c8ab6 (diff)
downloadvim-git-7.4.974.tar.gz
patch 7.4.974v7.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.
-rw-r--r--src/diff.c16
-rw-r--r--src/version.c2
2 files changed, 15 insertions, 3 deletions
diff --git a/src/diff.c b/src/diff.c
index 03edb3cca..09dfdbeee 100644
--- 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, buf2, lnum3)
return lnum2;
}
-#endif
#if defined(FEAT_FOLDING) || defined(PROTO)
/*
diff --git a/src/version.c b/src/version.c
index 5c23005cc..899e27f49 100644
--- 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,