diff options
author | Anatolii Sakhnik <sakhnik@gmail.com> | 2018-12-09 20:05:53 +0200 |
---|---|---|
committer | Anatolii Sakhnik <sakhnik@gmail.com> | 2018-12-09 20:05:53 +0200 |
commit | 8f20c22e10c35075afd97bf6af50fb6d9a2dc710 (patch) | |
tree | 536a00582583dfa77cb4ac90fbdb8761dbe951fe /src | |
parent | e104228b1c89022f0b284753ff92deb2e9374c5b (diff) | |
download | rneovim-8f20c22e10c35075afd97bf6af50fb6d9a2dc710.tar.gz rneovim-8f20c22e10c35075afd97bf6af50fb6d9a2dc710.tar.bz2 rneovim-8f20c22e10c35075afd97bf6af50fb6d9a2dc710.zip |
vim-patch:8.1.0497: :%diffput changes order of lines
Problem: :%diffput changes order of lines. (Markus Braun)
Solution: Do adjust marks when using internal diff.
https://github.com/vim/vim/commit/5f57bdcab77bc417ae0357fe8ad6c7259b6d25df
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/diff.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_diffmode.vim | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/nvim/diff.c b/src/nvim/diff.c index 57bfc8db69..2bb73f63ba 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -271,9 +271,9 @@ static void diff_mark_adjust_tp(tabpage_T *tp, int idx, linenr_T line1, // 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; } int inserted; @@ -2742,7 +2742,7 @@ theend: 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/nvim/testdir/test_diffmode.vim b/src/nvim/testdir/test_diffmode.vim index f34c2fd26d..ad3eec3274 100644 --- a/src/nvim/testdir/test_diffmode.vim +++ b/src/nvim/testdir/test_diffmode.vim @@ -219,6 +219,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('%') |