mirror of
https://github.com/neovim/neovim.git
synced 2025-11-06 10:44:22 +00:00
vim-patch:9.0.0445: when opening/closing window text moves up/down
Problem: When opening/closing window text moves up/down.
Solution: Add the 'splitscroll' option. When off text will keep its
position as much as possible.
29ab524358
vim-patch:9.0.0455: a few problems with 'splitscroll'
Problem: A few problems with 'splitscroll'.
Solution: Fix 'splitscroll' problems. (Luuk van Baal, closes vim/vim#11117)
5ed391708a
vim-patch:9.0.0461: 'scroll' is not always updated
Problem: 'scroll' is not always updated.
Solution: Call win_init_size() at the right place.
470a14140b
vim-patch:9.0.0465: cursor moves when cmdwin is closed when 'splitscroll' is off
Problem: Cursor moves when cmdwin is closed when 'splitscroll' is off.
Solution: Temporarily set 'splitscroll' when jumping back to the original
window. (closes vim/vim#11128)
e697d48890
vim-patch:9.0.0469: cursor moves if cmdwin is closed when 'splitscroll' is off
Problem: Cursor moves if cmdwin is closed when 'splitscroll' is off.
Solution: Skip win_fix_cursor if called when cmdwin is open or closing.
(Luuk van Baal, closes vim/vim#11134)
3735f11050
vim-patch:9.0.0478: test for 'splitscroll' takes too much time
Problem: Test for 'splitscroll' takes too much time.
Solution: Only test some of the combinations. (Luuk van Baal, closes vim/vim#11139)
594f9e09cd
vim-patch:9.0.0486: text scrolled with 'nosplitscroll', autocmd win and help
Problem: Text scrolled with 'nosplitscroll', autocmd win opened and help
window closed.
Solution: Skip win_fix_scroll() in more situations. (Luuk van Baal,
closes vim/vim#11150)
d5bc762dea
vim-patch:9.0.0505: various problems with 'nosplitscroll'
Problem: Various problems with 'nosplitscroll'.
Solution: Fix 'nosplitscroll' problems. (Luuk van Baal, closes vim/vim#11166)
faf1d412f5
vim-patch:9.0.0555: scrolling with 'nosplitscroll' in callback changing curwin
Problem: Scrolling with 'nosplitscroll' in callback changing curwin.
Solution: Invalidate w_cline_row in the right place. (Luuk van Baal,
closes vim/vim#11185)
20e58561ab
vim-patch:9.0.0603: with 'nosplitscroll' folds are not handled correctly
Problem: With 'nosplitscroll' folds are not handled correctly.
Solution: Take care of closed folds when moving the cursor. (Luuk van Baal,
closes vim/vim#11234)
7c1cbb6cd4
vim-patch:9.0.0605: dump file missing
Problem: Dump file missing.
Solution: Add the missing dump file. (issue vim/vim#11234)
439a2ba174
vim-patch:9.0.0647: the 'splitscroll' option is not a good name
Problem: The 'splitscroll' option is not a good name.
Solution: Rename 'splitscroll' to 'splitkeep' and make it a string option,
also supporting "topline". (Luuk van Baal, closes vim/vim#11258)
13ece2ae1d
vim-patch:9.0.0667: ml_get error when 'splitkeep' is "screen"
Problem: ml_get error when 'splitkeep' is "screen". (Marius Gedminas)
Solution: Check the botline is not too large. (Luuk van Baal,
closes vim/vim#11293, closes vim/vim#11292)
346823d3e5
197 lines
9.2 KiB
Lua
197 lines
9.2 KiB
Lua
local helpers = require('test.functional.helpers')(after_each)
|
|
local Screen = require('test.functional.ui.screen')
|
|
local clear = helpers.clear
|
|
local exec = helpers.exec
|
|
local exec_lua = helpers.exec_lua
|
|
local feed = helpers.feed
|
|
|
|
describe('splitkeep', function()
|
|
local screen = Screen.new()
|
|
before_each(function()
|
|
clear('--cmd', 'set splitkeep=screen')
|
|
screen:attach()
|
|
end)
|
|
|
|
-- oldtest: Test_splitkeep_callback()
|
|
it('does not scroll when split in callback', function()
|
|
exec([[
|
|
call setline(1, range(&lines))
|
|
function C1(a, b, c)
|
|
split | wincmd p
|
|
endfunction
|
|
function C2(a, b, c)
|
|
close | split
|
|
endfunction
|
|
]])
|
|
exec_lua([[
|
|
vim.api.nvim_set_keymap("n", "j", "", { callback = function()
|
|
vim.cmd("call jobstart([&sh, &shcf, 'true'], { 'on_exit': 'C1' })")
|
|
end
|
|
})]])
|
|
exec_lua([[
|
|
vim.api.nvim_set_keymap("n", "t", "", { callback = function()
|
|
vim.api.nvim_set_current_win(
|
|
vim.api.nvim_open_win(vim.api.nvim_create_buf(false, {}), false, {
|
|
width = 10,
|
|
relative = "cursor",
|
|
height = 4,
|
|
row = 0,
|
|
col = 0,
|
|
}))
|
|
vim.cmd("call termopen([&sh, &shcf, 'true'], { 'on_exit': 'C2' })")
|
|
end
|
|
})]])
|
|
feed('j')
|
|
screen:expect([[
|
|
0 |
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
[No Name] [+] |
|
|
^7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
[No Name] [+] |
|
|
|
|
|
]])
|
|
feed(':quit<CR>Ht')
|
|
screen:expect([[
|
|
^0 |
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
[No Name] [+] |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
[No Name] [+] |
|
|
:quit |
|
|
]])
|
|
feed(':set sb<CR>:quit<CR>Gj')
|
|
screen:expect([[
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
^5 |
|
|
[No Name] [+] |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
[No Name] [+] |
|
|
:quit |
|
|
]])
|
|
feed(':quit<CR>Gt')
|
|
screen:expect([[
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
[No Name] [+] |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
^12 |
|
|
[No Name] [+] |
|
|
:quit |
|
|
]])
|
|
end)
|
|
|
|
-- oldtest: Test_splitkeep_fold()
|
|
it('does not scroll when window has closed folds', function()
|
|
exec([[
|
|
set splitkeep=screen
|
|
set foldmethod=marker
|
|
set number
|
|
let line = 1
|
|
for n in range(1, &lines)
|
|
call setline(line, ['int FuncName() {/*{{{*/', 1, 2, 3, 4, 5, '}/*}}}*/',
|
|
\ 'after fold'])
|
|
let line += 8
|
|
endfor
|
|
]])
|
|
feed('L:wincmd s<CR>')
|
|
screen:expect([[
|
|
1 +-- 7 lines: int FuncName() {···················|
|
|
8 after fold |
|
|
9 +-- 7 lines: int FuncName() {···················|
|
|
16 after fold |
|
|
17 +-- 7 lines: int FuncName() {···················|
|
|
24 ^after fold |
|
|
[No Name] [+] |
|
|
32 after fold |
|
|
33 +-- 7 lines: int FuncName() {···················|
|
|
40 after fold |
|
|
41 +-- 7 lines: int FuncName() {···················|
|
|
48 after fold |
|
|
[No Name] [+] |
|
|
:wincmd s |
|
|
]])
|
|
feed(':quit<CR>')
|
|
screen:expect([[
|
|
1 +-- 7 lines: int FuncName() {···················|
|
|
8 after fold |
|
|
9 +-- 7 lines: int FuncName() {···················|
|
|
16 after fold |
|
|
17 +-- 7 lines: int FuncName() {···················|
|
|
24 after fold |
|
|
25 +-- 7 lines: int FuncName() {···················|
|
|
32 after fold |
|
|
33 +-- 7 lines: int FuncName() {···················|
|
|
40 after fold |
|
|
41 +-- 7 lines: int FuncName() {···················|
|
|
48 after fold |
|
|
49 ^+-- 7 lines: int FuncName() {···················|
|
|
:quit |
|
|
]])
|
|
feed('H:below split<CR>')
|
|
screen:expect([[
|
|
1 +-- 7 lines: int FuncName() {···················|
|
|
8 after fold |
|
|
9 +-- 7 lines: int FuncName() {···················|
|
|
16 after fold |
|
|
17 +-- 7 lines: int FuncName() {···················|
|
|
[No Name] [+] |
|
|
25 ^+-- 7 lines: int FuncName() {···················|
|
|
32 after fold |
|
|
33 +-- 7 lines: int FuncName() {···················|
|
|
40 after fold |
|
|
41 +-- 7 lines: int FuncName() {···················|
|
|
48 after fold |
|
|
[No Name] [+] |
|
|
:below split |
|
|
]])
|
|
feed(':wincmd k<CR>:quit<CR>')
|
|
screen:expect([[
|
|
1 +-- 7 lines: int FuncName() {···················|
|
|
8 after fold |
|
|
9 +-- 7 lines: int FuncName() {···················|
|
|
16 after fold |
|
|
17 +-- 7 lines: int FuncName() {···················|
|
|
24 after fold |
|
|
25 ^+-- 7 lines: int FuncName() {···················|
|
|
32 after fold |
|
|
33 +-- 7 lines: int FuncName() {···················|
|
|
40 after fold |
|
|
41 +-- 7 lines: int FuncName() {···················|
|
|
48 after fold |
|
|
49 +-- 7 lines: int FuncName() {···················|
|
|
:quit |
|
|
]])
|
|
end)
|
|
end)
|