mirror of
https://github.com/neovim/neovim.git
synced 2024-12-31 17:13:26 -07:00
vim-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 vim/vim#10493)
e6f13b473c
Cherry-pick Test_nv_hat_count() change from patch 8.2.1593.
This commit is contained in:
parent
91c99eed54
commit
9d556fc81f
@ -1,5 +1,40 @@
|
|||||||
" Tests for the changelist functionality
|
" 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
|
" Tests for the getchangelist() function
|
||||||
func Test_changelist_index()
|
func Test_changelist_index()
|
||||||
edit Xfile1.txt
|
edit Xfile1.txt
|
||||||
|
@ -2849,35 +2849,10 @@ func Test_gr_command()
|
|||||||
enew!
|
enew!
|
||||||
endfunc
|
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()
|
func Test_nv_hat_count()
|
||||||
%bwipeout!
|
%bwipeout!
|
||||||
let l:nr = bufnr('%') + 1
|
let l:nr = bufnr('%') + 1
|
||||||
call assert_fails(':execute "normal! ' . l:nr . '\<C-^>"', 'E92')
|
call assert_fails(':execute "normal! ' . l:nr . '\<C-^>"', 'E92:')
|
||||||
|
|
||||||
edit Xfoo
|
edit Xfoo
|
||||||
let l:foo_nr = bufnr('Xfoo')
|
let l:foo_nr = bufnr('Xfoo')
|
||||||
|
@ -1501,9 +1501,6 @@ int win_split_ins(int size, int flags, win_T *new_wp, int dir)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep same changelist position in new window.
|
|
||||||
wp->w_changelistidx = oldwin->w_changelistidx;
|
|
||||||
|
|
||||||
// make the new window the current window
|
// make the new window the current window
|
||||||
win_enter_ext(wp, WEE_TRIGGER_NEW_AUTOCMDS | WEE_TRIGGER_ENTER_AUTOCMDS
|
win_enter_ext(wp, WEE_TRIGGER_NEW_AUTOCMDS | WEE_TRIGGER_ENTER_AUTOCMDS
|
||||||
| WEE_TRIGGER_LEAVE_AUTOCMDS);
|
| WEE_TRIGGER_LEAVE_AUTOCMDS);
|
||||||
@ -1574,6 +1571,10 @@ static void win_init(win_T *newp, win_T *oldp, int flags)
|
|||||||
}
|
}
|
||||||
newp->w_tagstackidx = oldp->w_tagstackidx;
|
newp->w_tagstackidx = oldp->w_tagstackidx;
|
||||||
newp->w_tagstacklen = oldp->w_tagstacklen;
|
newp->w_tagstacklen = oldp->w_tagstacklen;
|
||||||
|
|
||||||
|
// Keep same changelist position in new window.
|
||||||
|
newp->w_changelistidx = oldp->w_changelistidx;
|
||||||
|
|
||||||
copyFoldingState(oldp, newp);
|
copyFoldingState(oldp, newp);
|
||||||
|
|
||||||
win_init_some(newp, oldp);
|
win_init_some(newp, oldp);
|
||||||
|
Loading…
Reference in New Issue
Block a user