diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-10-25 17:52:23 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-10-25 17:52:23 +0200 |
commit | 5f57bdcab77bc417ae0357fe8ad6c7259b6d25df (patch) | |
tree | f05f00dee1abb6472935bddc2adcfd74a3ec14ed | |
parent | c0fe4978f2311be9a0221d4c2369251c719b399a (diff) | |
download | vim-git-5f57bdcab77bc417ae0357fe8ad6c7259b6d25df.tar.gz |
patch 8.1.0497: :%diffput changes order of linesv8.1.0497
Problem: :%diffput changes order of lines. (Markus Braun)
Solution: Do adjust marks when using internal diff.
-rw-r--r-- | src/diff.c | 4 | ||||
-rw-r--r-- | src/testdir/test_diffmode.vim | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 24 insertions, 2 deletions
diff --git a/src/diff.c b/src/diff.c index 054924e67..23503d826 100644 --- a/src/diff.c +++ b/src/diff.c @@ -298,9 +298,9 @@ diff_mark_adjust_tp( // Will update diffs before redrawing. Set _invalid to update the // diffs themselves, set _update to also update folds properly just // before redrawing. + // Do update marks here, it is needed for :%diffput. tp->tp_diff_invalid = TRUE; tp->tp_diff_update = TRUE; - return; } if (line2 == MAXLNUM) @@ -2850,7 +2850,7 @@ theend: if (diff_need_update) ex_diffupdate(NULL); - // Check that the cursor is on a valid character and update it's + // Check that the cursor is on a valid character and update its // position. When there were filler lines the topline has become // invalid. check_cursor(); diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim index e1da19fef..6a8bea0ec 100644 --- a/src/testdir/test_diffmode.vim +++ b/src/testdir/test_diffmode.vim @@ -221,6 +221,26 @@ func Test_diffget_diffput() %bwipe! endfunc +" Test putting two changes from one buffer to another +func Test_diffput_two() + new a + let win_a = win_getid() + call setline(1, range(1, 10)) + diffthis + new b + let win_b = win_getid() + call setline(1, range(1, 10)) + 8del + 5del + diffthis + call win_gotoid(win_a) + %diffput + call win_gotoid(win_b) + call assert_equal(map(range(1, 10), 'string(v:val)'), getline(1, '$')) + bwipe! a + bwipe! b +endfunc + func Test_dp_do_buffer() e! one let bn1=bufnr('%') diff --git a/src/version.c b/src/version.c index 3d31fa756..c3f2e2391 100644 --- a/src/version.c +++ b/src/version.c @@ -793,6 +793,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 497, +/**/ 496, /**/ 495, |