patch 9.0.2105: skipcol not reset when topline changed
Commit:
https://github.com/vim/vim/commit/bb800a7907209f7d349f87b76b3b9ca30b416298
Author: Luuk van Baal <[email protected]>
Date: Tue Nov 14 17:05:18 2023 +0100
patch 9.0.2105: skipcol not reset when topline changed
Problem: Skipcol is not reset when topline changed scrolling cursor to top
Solution: reset skipcol
closes: #13528
closes: #13532
Signed-off-by: Luuk van Baal <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/move.c b/src/move.c
index bb6502467..ce06dc339 100644
--- a/src/move.c
+++ b/src/move.c
@@ -2423,7 +2423,9 @@ scroll_cursor_top(int min_scroll, int always)
}
check_topfill(curwin, FALSE);
#endif
- if (curwin->w_topline == curwin->w_cursor.lnum)
+ if (curwin->w_topline != old_topline)
+ reset_skipcol();
+ else if (curwin->w_topline == curwin->w_cursor.lnum)
{
validate_virtcol();
if (curwin->w_skipcol >= curwin->w_virtcol)
diff --git a/src/testdir/dumps/Test_smoothscroll_cursor_top.dump
b/src/testdir/dumps/Test_smoothscroll_cursor_top.dump
new file mode 100644
index 000000000..84cc0e648
--- /dev/null
+++ b/src/testdir/dumps/Test_smoothscroll_cursor_top.dump
@@ -0,0 +1,12 @@
+| +0&#ffffff0@39
+|[+1&&|N|o| |N|a|m|e|]| @30
+|l+0&&|i|n|e|1| @34
+|l|i|n|e|2| @34
+>l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3
+|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3
+|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3|l|i|n|e|3| @19
+|l|i|n|e|4| @34
+|~+0#4040ff13&| @38
+|~| @38
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @26
+| +0&&@39
diff --git a/src/testdir/test_scroll_opt.vim b/src/testdir/test_scroll_opt.vim
index 005e45bb5..d5d08a24c 100644
--- a/src/testdir/test_scroll_opt.vim
+++ b/src/testdir/test_scroll_opt.vim
@@ -909,4 +909,21 @@ func Test_smoothscroll_zero_width_scroll_cursor_bot()
call StopVimInTerminal(buf)
endfunc
+" scroll_cursor_top() should reset skipcol when it changes topline
+func Test_smoothscroll_cursor_top()
+ CheckScreendump
+
+ let lines =<< trim END
+ set smoothscroll scrolloff=2
+ new | 11resize | wincmd j
+ call setline(1, ['line1', 'line2', 'line3'->repeat(20), 'line4'])
+ exe "norm G3\<C-E>k"
+ END
+ call writefile(lines, 'XSmoothScrollCursorTop', 'D')
+ let buf = RunVimInTerminal('-u NONE -S XSmoothScrollCursorTop', #{rows: 12,
cols:40})
+ call VerifyScreenDump(buf, 'Test_smoothscroll_cursor_top', {})
+
+ call StopVimInTerminal(buf)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 8afbc403d..f9d1593c0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,10 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2105,
+/**/
+ 2104,
/**/
2103,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1r2w49-008216-Bc%40256bit.org.