patch 9.2.0413: Scrolling wrong with 'splitkeep' when changing 'cmdheight'

Problem:  Cursor is not adjusted when 'cmdheight' is changed to cover
          the cursor with 'splitkeep' ~= "cursor".
Solution: Handle window resize for 'splitkeep' after changing 'cmdheight'.
          Ensure previous window height is set when changing 'splitkeep'
          (Luuk van Baal).

closes: #20043

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Luuk van Baal
2026-04-28 21:09:45 +00:00
committed by Christian Brabandt
parent 41c3379bdf
commit bd0f3e6da5
4 changed files with 17 additions and 0 deletions
+4
View File
@@ -4384,6 +4384,10 @@ expand_set_spellsuggest(optexpand_T *args, int *numMatches, char_u ***matches)
char *
did_set_splitkeep(optset_T *args UNUSED)
{
win_T *wp;
tabpage_T *tp;
FOR_ALL_TAB_WINDOWS(tp, wp)
wp->w_prev_height = wp->w_height;
return did_set_opt_strings(p_spk, p_spk_values, FALSE);
}
+10
View File
@@ -1992,6 +1992,16 @@ func Test_splitkeep_screen_cursor_pos()
set splitkeep&
endfunc
func Test_splitkeep_cmdheight()
set splitkeep=screen
call setline(1, range(&lines))
norm! G
set cmdheight=2
call assert_equal(&lines - 1, line('.'))
%bwipeout!
set splitkeep& cmdheight&
endfunc
func Test_splitkeep_cursor()
CheckScreendump
let lines =<< trim END
+2
View File
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
413,
/**/
412,
/**/
+1
View File
@@ -7591,6 +7591,7 @@ command_height(void)
}
if (p_ch < old_p_ch && command_frame_height && frp != NULL)
frame_add_height(frp, (int)(old_p_ch - p_ch));
win_fix_scroll(true);
// Recompute window positions.
win_comp_pos();