diff src/testdir/test_window_cmd.vim @ 32931:41482b74f548 v9.0.1772

patch 9.0.1772: Cursor may be adjusted in 'splitkeep'ed windows Commit: https://github.com/vim/vim/commit/16af913eeefb288ce968fb87e09a597413861900 Author: Luuk van Baal <luukvbaal@gmail.com> Date: Sun Aug 20 20:44:59 2023 +0200 patch 9.0.1772: Cursor may be adjusted in 'splitkeep'ed windows Problem: Cursor is adjusted in window that did not change in size by 'splitkeep'. Solution: Only check that cursor position is valid in a window that has changed in size. closes: #12509 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Sun, 20 Aug 2023 21:00:03 +0200
parents 695b50472e85
children 808cf14bad77
line wrap: on
line diff
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1861,6 +1861,33 @@ func Test_splitkeep_misc()
   set splitkeep&
 endfunc
 
+func Test_splitkeep_cursor()
+  CheckScreendump
+  let lines =<< trim END
+    set splitkeep=screen
+    autocmd CursorMoved * wincmd p | wincmd p
+    call setline(1, range(1, 200))
+    func CursorEqualize()
+      call cursor(100, 1)
+      wincmd =
+    endfunc
+    wincmd s
+    call CursorEqualize()
+  END
+  call writefile(lines, 'XTestSplitkeepCallback', 'D')
+  let buf = RunVimInTerminal('-S XTestSplitkeepCallback', #{rows: 8})
+
+  call VerifyScreenDump(buf, 'Test_splitkeep_cursor_1', {})
+
+  call term_sendkeys(buf, "j")
+  call VerifyScreenDump(buf, 'Test_splitkeep_cursor_2', {})
+
+  call term_sendkeys(buf, ":set scrolloff=0\<CR>G")
+  call VerifyScreenDump(buf, 'Test_splitkeep_cursor_3', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_splitkeep_callback()
   CheckScreendump
   let lines =<< trim END