changeset 32465:83074077c0b1 v9.0.1564

patch 9.0.1564: display moves up and down with 'incsearch' and 'smoothscroll' Commit: https://github.com/vim/vim/commit/0222c2d103ad9298bec4dc8864cd80b4e7559db1 Author: Luuk van Baal <luukvbaal@gmail.com> Date: Thu May 18 13:26:57 2023 +0100 patch 9.0.1564: display moves up and down with 'incsearch' and 'smoothscroll' Problem: Display moves up and down with 'incsearch' and 'smoothscroll'. Solution: Do not check if w_skipcol changed. (Luuk van Baal, closes https://github.com/vim/vim/issues/12410, closes #12409)
author Bram Moolenaar <Bram@vim.org>
date Thu, 18 May 2023 14:30:09 +0200
parents f2138180c6f0
children e98fd1d81815
files src/move.c src/testdir/dumps/Test_smooth_wrap_2.dump src/testdir/dumps/Test_smooth_wrap_4.dump src/version.c
diffstat 4 files changed, 9 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/move.c
+++ b/src/move.c
@@ -312,7 +312,6 @@ update_topline(void)
 	*so_ptr = mouse_dragging - 1;
 
     linenr_T old_topline = curwin->w_topline;
-    colnr_T old_skipcol = curwin->w_skipcol;
 #ifdef FEAT_DIFF
     int old_topfill = curwin->w_topfill;
 #endif
@@ -517,8 +516,8 @@ update_topline(void)
 	dollar_vcol = -1;
 	redraw_later(UPD_VALID);
 
-	// Only reset w_skipcol if it was not just set to make cursor visible.
-	if (curwin->w_skipcol == old_skipcol)
+	// When 'smoothscroll' is not set, should reset w_skipcol.
+	if (!curwin->w_p_sms)
 	    reset_skipcol();
 
 	// May need to set w_skipcol when cursor in w_topline.
--- a/src/testdir/dumps/Test_smooth_wrap_2.dump
+++ b/src/testdir/dumps/Test_smooth_wrap_2.dump
@@ -1,8 +1,8 @@
-|<+0#4040ff13#ffffff0@2|h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
-|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
+|L+0&#ffffff0|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
 |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| 
 |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
 >L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
 |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| 
 |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
-@22|4|,|1| @10|2|5|%| 
+|@+0#4040ff13&@2| @36
+| +0#0000000&@21|4|,|1| @10|4|0|%| 
--- a/src/testdir/dumps/Test_smooth_wrap_4.dump
+++ b/src/testdir/dumps/Test_smooth_wrap_4.dump
@@ -2,7 +2,7 @@
 |L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
 |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| 
 |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
->L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
+|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| 
 |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| 
-|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
+>w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10
 @22|7|,|1| @10|B|o|t| 
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1564,
+/**/
     1563,
 /**/
     1562,