forked from aniani/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.
This commit is contained in:
@@ -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();
|
||||
|
@@ -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('%')
|
||||
|
@@ -792,6 +792,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
497,
|
||||
/**/
|
||||
496,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user