patch 9.1.0729: Wrong cursor-screenline when resizing window
Problem: Wrong cursor-screenline when resizing window
Solution: Invalidate saved left_col and right_col when width1 or width2
change.
closes: #15679
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/dumps/Test_cursorline_screenline_resize_1.dump b/src/testdir/dumps/Test_cursorline_screenline_resize_1.dump
new file mode 100644
index 0000000..dd56362
--- /dev/null
+++ b/src/testdir/dumps/Test_cursorline_screenline_resize_1.dump
@@ -0,0 +1,8 @@
+| +0#af5f00255#ffffff0@1|1| |x+0#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y||+1&&| +0&&@23
+| +0#af5f00255&@3|z+0#0000000&| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| ||+1&&|~+0#4040ff13&| @22
+| +0#af5f00255&@3|x+8#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z> @18||+1&&|~+0#4040ff13&| @22
+|~| @48||+1#0000000&|~+0#4040ff13&| @22
+|~| @48||+1#0000000&|~+0#4040ff13&| @22
+|~| @48||+1#0000000&|~+0#4040ff13&| @22
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @18|1|,|1|2|0| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
+| +0&&@74
diff --git a/src/testdir/dumps/Test_cursorline_screenline_resize_2.dump b/src/testdir/dumps/Test_cursorline_screenline_resize_2.dump
new file mode 100644
index 0000000..466bea3
--- /dev/null
+++ b/src/testdir/dumps/Test_cursorline_screenline_resize_2.dump
@@ -0,0 +1,8 @@
+| +0#af5f00255#ffffff0@1|1| |x+0#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y||+1&&| +0&&@27
+| +0#af5f00255&@3|z+0#0000000&| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| ||+1&&|~+0#4040ff13&| @26
+| +0#af5f00255&@3|x+8#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z> @6||+1&&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @14|1|,|1|2|0| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @4|0|,|0|-|1| @5|A|l@1
+|:+0&&|v|e|r|t|i|c|a|l| |r|e|s|i|z|e| |-|4| @55
diff --git a/src/testdir/dumps/Test_cursorline_screenline_resize_3.dump b/src/testdir/dumps/Test_cursorline_screenline_resize_3.dump
new file mode 100644
index 0000000..47152b6
--- /dev/null
+++ b/src/testdir/dumps/Test_cursorline_screenline_resize_3.dump
@@ -0,0 +1,8 @@
+| +0#af5f00255#ffffff0@1|1| |x+0#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y||+1&&| +0&&@27
+|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| ||+1&&|~+0#4040ff13&| @26
+|x+8#0000000&|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z> @14||+1&&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|~| @44||+1#0000000&|~+0#4040ff13&| @26
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @14|1|,|1|2|0| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @4|0|,|0|-|1| @5|A|l@1
+|:+0&&|s|e|t| |c|p|o|p|t|i|o|n|s|+|=|n| @57
diff --git a/src/testdir/test_cursorline.vim b/src/testdir/test_cursorline.vim
index f4c58de..bdde670 100644
--- a/src/testdir/test_cursorline.vim
+++ b/src/testdir/test_cursorline.vim
@@ -268,6 +268,27 @@
call StopVimInTerminal(buf)
endfunc
+func Test_cursorline_screenline_resize()
+ CheckScreendump
+
+ let lines =<< trim END
+ 50vnew
+ call setline(1, repeat('xyz ', 30))
+ setlocal number cursorline cursorlineopt=screenline
+ normal! $
+ END
+ call writefile(lines, 'Xcul_screenline_resize', 'D')
+
+ let buf = RunVimInTerminal('-S Xcul_screenline_resize', #{rows: 8})
+ call VerifyScreenDump(buf, 'Test_cursorline_screenline_resize_1', {})
+ call term_sendkeys(buf, ":vertical resize -4\<CR>")
+ call VerifyScreenDump(buf, 'Test_cursorline_screenline_resize_2', {})
+ call term_sendkeys(buf, ":set cpoptions+=n\<CR>")
+ call VerifyScreenDump(buf, 'Test_cursorline_screenline_resize_3', {})
+
+ call StopVimInTerminal(buf)
+endfunc
+
func Test_cursorline_screenline_update()
CheckScreendump