diff options
author | Luuk van Baal <luukvbaal@gmail.com> | 2022-09-15 12:43:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-15 12:43:26 +0100 |
commit | 3735f11050616652525bf80b4fbcb2b3bfeab113 (patch) | |
tree | 0f03839e7c767f890f0cfa7b8fe8d966a6046595 | |
parent | aeef1f7f6d8f6d4e84ffc9a24874f10403e4ddcd (diff) | |
download | vim-git-3735f11050616652525bf80b4fbcb2b3bfeab113.tar.gz |
patch 9.0.0469: cursor moves if cmdwin is closed when 'splitscroll' is offv9.0.0469
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)
-rw-r--r-- | src/ex_getln.c | 6 | ||||
-rw-r--r-- | src/globals.h | 5 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 4 |
4 files changed, 13 insertions, 4 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c index 4a5ac318e..70436b31f 100644 --- 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); diff --git a/src/globals.h b/src/globals.h index 521832428..568d3b3c8 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1737,3 +1737,8 @@ EXTERN int channel_need_redraw INIT(= FALSE); // 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 diff --git a/src/version.c b/src/version.c index 82a21df03..8b4efd7db 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 */ /**/ + 469, +/**/ 468, /**/ 467, diff --git a/src/window.c b/src/window.c index 6fefcac75..fc7b8df3b 100644 --- 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. |