mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.2.5035: when splitting a window the changelist position moves
Problem: When splitting a window the changelist position moves. Solution: Set the changelist index a bit later. (closes #10493)
This commit is contained in:
@@ -1,5 +1,40 @@
|
||||
" Tests for the changelist functionality
|
||||
|
||||
" When splitting a window the changelist position is wrong.
|
||||
" Test the changelist position after splitting a window.
|
||||
" Test for the bug fixed by 7.4.386
|
||||
func Test_changelist()
|
||||
let save_ul = &ul
|
||||
enew!
|
||||
call append('$', ['1', '2'])
|
||||
exe "normal i\<C-G>u"
|
||||
exe "normal Gkylpa\<C-G>u"
|
||||
set ul=100
|
||||
exe "normal Gylpa\<C-G>u"
|
||||
set ul=100
|
||||
normal gg
|
||||
vsplit
|
||||
normal g;
|
||||
call assert_equal([3, 2], [line('.'), col('.')])
|
||||
normal g;
|
||||
call assert_equal([2, 2], [line('.'), col('.')])
|
||||
call assert_fails('normal g;', 'E662:')
|
||||
new
|
||||
call assert_fails('normal g;', 'E664:')
|
||||
%bwipe!
|
||||
let &ul = save_ul
|
||||
endfunc
|
||||
|
||||
" Moving a split should not change its changelist index.
|
||||
func Test_changelist_index_move_split()
|
||||
exe "norm! iabc\<C-G>u\ndef\<C-G>u\nghi"
|
||||
vsplit
|
||||
normal 99g;
|
||||
call assert_equal(0, getchangelist('%')[1])
|
||||
wincmd L
|
||||
call assert_equal(0, getchangelist('%')[1])
|
||||
endfunc
|
||||
|
||||
" Tests for the getchangelist() function
|
||||
func Test_changelist_index()
|
||||
edit Xfile1.txt
|
||||
|
@@ -3228,31 +3228,6 @@ func Test_gr_command()
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
" When splitting a window the changelist position is wrong.
|
||||
" Test the changelist position after splitting a window.
|
||||
" Test for the bug fixed by 7.4.386
|
||||
func Test_changelist()
|
||||
let save_ul = &ul
|
||||
enew!
|
||||
call append('$', ['1', '2'])
|
||||
exe "normal i\<C-G>u"
|
||||
exe "normal Gkylpa\<C-G>u"
|
||||
set ul=100
|
||||
exe "normal Gylpa\<C-G>u"
|
||||
set ul=100
|
||||
normal gg
|
||||
vsplit
|
||||
normal g;
|
||||
call assert_equal([3, 2], [line('.'), col('.')])
|
||||
normal g;
|
||||
call assert_equal([2, 2], [line('.'), col('.')])
|
||||
call assert_fails('normal g;', 'E662:')
|
||||
new
|
||||
call assert_fails('normal g;', 'E664:')
|
||||
%bwipe!
|
||||
let &ul = save_ul
|
||||
endfunc
|
||||
|
||||
func Test_nv_hat_count()
|
||||
%bwipeout!
|
||||
let l:nr = bufnr('%') + 1
|
||||
|
@@ -734,6 +734,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
5035,
|
||||
/**/
|
||||
5034,
|
||||
/**/
|
||||
|
@@ -1354,9 +1354,6 @@ win_split_ins(
|
||||
p_wh = size;
|
||||
}
|
||||
|
||||
// Keep same changelist position in new window.
|
||||
wp->w_changelistidx = oldwin->w_changelistidx;
|
||||
|
||||
/*
|
||||
* make the new window the current window
|
||||
*/
|
||||
@@ -1431,6 +1428,10 @@ win_init(win_T *newp, win_T *oldp, int flags UNUSED)
|
||||
}
|
||||
newp->w_tagstackidx = oldp->w_tagstackidx;
|
||||
newp->w_tagstacklen = oldp->w_tagstacklen;
|
||||
|
||||
// Keep same changelist position in new window.
|
||||
newp->w_changelistidx = oldp->w_changelistidx;
|
||||
|
||||
#ifdef FEAT_FOLDING
|
||||
copyFoldingState(oldp, newp);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user