diff options
author | Bram Moolenaar <Bram@vim.org> | 2015-12-17 15:03:55 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2015-12-17 15:03:55 +0100 |
commit | f29a82dcd0914c76f595d475ddac4517371fab2b (patch) | |
tree | 56510dfbae677368f53d127e5c83438e2ac1a699 | |
parent | 6f62fed349bf829da2adb02619dc9acba13c8ab6 (diff) | |
download | vim-git-f29a82dcd0914c76f595d475ddac4517371fab2b.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.c | 16 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |