changeset 30267:be97adfeac3a v9.0.0469

patch 9.0.0469: cursor moves if cmdwin is closed when 'splitscroll' is off Commit: https://github.com/vim/vim/commit/3735f11050616652525bf80b4fbcb2b3bfeab113 Author: Luuk van Baal <luukvbaal@gmail.com> Date: Thu Sep 15 12:43:26 2022 +0100 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 #11134)
author Bram Moolenaar <Bram@vim.org>
date Thu, 15 Sep 2022 13:45:03 +0200
parents 80e69919b10d
children 82cfdc85861d
files src/ex_getln.c src/globals.h src/version.c src/window.c
diffstat 4 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4405,7 +4405,6 @@ open_cmdwin(void)
     int			save_restart_edit = restart_edit;
     int			save_State = State;
     int			save_exmode = exmode_active;
-    int			save_p_spsc;
 #ifdef FEAT_RIGHTLEFT
     int			save_cmdmsg_rl = cmdmsg_rl;
 #endif
@@ -4645,10 +4644,8 @@ open_cmdwin(void)
 	wp = curwin;
 	set_bufref(&bufref, curbuf);
 
-	save_p_spsc = p_spsc;
-	p_spsc = TRUE;
+	skip_win_fix_cursor = TRUE;
 	win_goto(old_curwin);
-	p_spsc = save_p_spsc;
 
 	// win_goto() may trigger an autocommand that already closes the
 	// cmdline window.
@@ -4662,6 +4659,7 @@ open_cmdwin(void)
 
 	// Restore window sizes.
 	win_size_restore(&winsizes);
+	skip_win_fix_cursor = FALSE;
     }
 
     ga_clear(&winsizes);
--- a/src/globals.h
+++ b/src/globals.h
@@ -1737,3 +1737,8 @@ EXTERN int channel_need_redraw INIT(= FA
 // While executing a regexp and set to OPTION_MAGIC_ON or OPTION_MAGIC_OFF this
 // overrules p_magic.  Otherwise set to OPTION_MAGIC_NOT_SET.
 EXTERN optmagic_T magic_overruled INIT(= OPTION_MAGIC_NOT_SET);
+
+#ifdef FEAT_CMDWIN
+// Skip win_fix_cursor() call for 'nosplitscroll' when cmdwin is closed.
+EXTERN int skip_win_fix_cursor INIT(= FALSE);
+#endif
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    469,
+/**/
     468,
 /**/
     467,
--- a/src/window.c
+++ b/src/window.c
@@ -6410,6 +6410,10 @@ win_fix_cursor(int normal)
 
     if (wp->w_buffer->b_ml.ml_line_count < wp->w_height)
 	return;
+#ifdef FEAT_CMDWIN
+    if (skip_win_fix_cursor)
+	return;
+#endif
 
     so = MIN(wp->w_height / 2, so);
     // Check if cursor position is above topline or below botline.