summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormityu <mityu.mail@gmail.com>2022-09-14 17:27:36 +0100
committerBram Moolenaar <Bram@vim.org>2022-09-14 17:27:36 +0100
commite697d488901b6321ddaad68b553f0a434c97d849 (patch)
tree140cf4e5890b2b4a64e51727aa0ec53a74aff9e9
parent702bd6c7c61073c0907fd7608911aebee4acd337 (diff)
patch 9.0.0465: cursor moves when cmdwin is closed when 'splitscroll' is offv9.0.0465
Problem: Cursor moves when cmdwin is closed when 'splitscroll' is off. Solution: Temporarily set 'splitscroll' when jumping back to the original window. (closes #11128)
-rw-r--r--src/ex_getln.c5
-rw-r--r--src/testdir/test_window_cmd.vim8
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 2 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index f9226de6e4..4a5ac318e9 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4405,6 +4405,7 @@ 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
@@ -4643,7 +4644,11 @@ open_cmdwin(void)
// First go back to the original window.
wp = curwin;
set_bufref(&bufref, curbuf);
+
+ save_p_spsc = p_spsc;
+ p_spsc = TRUE;
win_goto(old_curwin);
+ p_spsc = save_p_spsc;
// win_goto() may trigger an autocommand that already closes the
// cmdline window.
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index c9f9caa347..872e1bac18 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1734,9 +1734,13 @@ func Test_splitscroll_with_splits()
above copen | wincmd j
call assert_equal(win_screenpos(0)[0] - tabline, line("w0"))
- " No scroll when opening cmdwin
- only | norm ggLq:
+ " No scroll when opening cmdwin, and no cursor move when closing
+ " cmdwin.
+ only | norm ggL
+ let curpos = getcurpos()
+ norm q:
call assert_equal(1, line("w0"))
+ call assert_equal(curpos, getcurpos())
" Scroll when cursor becomes invalid in insert mode
norm Lic
diff --git a/src/version.c b/src/version.c
index 45afd9d027..cea4b7387b 100644
--- 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 */
/**/
+ 465,
+/**/
464,
/**/
463,