vim-patch:9.2.0445: win_fix_scroll() called before win_comp_pos() in command_height() (#39619)

Problem:  win_fix_scroll(true) is called before win_comp_pos() in
          command_height().
Solution: Move win_fix_scroll(true) after win_comp_pos(), matching the
          ordering used in win_drag_status_line() (Jesse Rosenstock).

Patch 9.2.0413 added win_fix_scroll(true) to command_height() to handle
splitkeep when cmdheight changes, but placed the call before win_comp_pos().
win_fix_scroll() reads w_winrow to detect window movement
(https://github.com/vim/vim/blob/620557bd48865fa3d927901764d2747bf68597b5/src/window.c#L7266),
but w_winrow is not recomputed until win_comp_pos() runs
(https://github.com/vim/vim/blob/620557bd48865fa3d927901764d2747bf68597b5/src/window.c#L6516).
This causes incorrect scroll adjustments and was breaking
Test_smoothscroll_incsearch on macOS CI.

closes: vim/vim#20138

https://github.com/vim/vim/commit/40fc78f0a185f003844334e7c9dd217d6d993143


Co-authored-by: Gemini

Co-authored-by: Jesse Rosenstock <jmr@google.com>
This commit is contained in:
zeertzjq
2026-05-06 09:23:09 +08:00
committed by GitHub
parent 2bb426ce4a
commit 60d069d422
+1 -1
View File
@@ -7139,10 +7139,10 @@ void 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();
win_fix_scroll(true);
cmdline_row = Rows - (int)p_ch;
redraw_cmdline = true;