Skip to content

Commit

Permalink
patch 9.0.0486: text scrolled with 'nosplitscroll', autocmd win and help
Browse files Browse the repository at this point in the history
Problem:    Text scrolled with 'nosplitscroll', autocmd win opened and help
            window closed.
Solution:   Skip win_fix_scroll() in more situations. (Luuk van Baal,
            closes #11150)
  • Loading branch information
luukvbaal authored and brammool committed Sep 17, 2022
1 parent 0cdfb7c commit d5bc762
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 6 deletions.
30 changes: 30 additions & 0 deletions src/testdir/test_window_cmd.vim
Expand Up @@ -1789,4 +1789,34 @@ function Test_nosplitscroll_cmdwin_cursor_position()
%bwipeout!
set splitscroll&
endfunction

" No scroll when aucmd_win is opened.
function Test_nosplitscroll_aucmdwin()
set nosplitscroll

call setline(1, range(1, &lines))
norm Gzz
let top = line('w0')
call setbufvar(bufnr("test", 1) , '&buftype', 'nofile')
call assert_equal(top, line('w0'))

%bwipeout!
set splitscroll&
endfunc

" No scroll when help is closed and buffer line count < window height.
function Test_nosplitscroll_helpwin()
set nosplitscroll
set splitbelow

call setline(1, range(&lines - 10))
norm G
let top = line('w0')
help | quit
call assert_equal(top, line('w0'))

set splitbelow&
set splitscroll&
endfunc

" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -703,6 +703,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
486,
/**/
485,
/**/
Expand Down
9 changes: 3 additions & 6 deletions src/window.c
Expand Up @@ -1325,7 +1325,7 @@ win_split_ins(
win_equal(wp, TRUE,
(flags & WSP_VERT) ? (dir == 'v' ? 'b' : 'h')
: dir == 'h' ? 'b' : 'v');
else if (!p_spsc)
else if (!p_spsc && wp != aucmd_win)
win_fix_scroll(FALSE);

// Don't change the window height/width to 'winheight' / 'winwidth' if a
Expand Down Expand Up @@ -1925,7 +1925,7 @@ win_equal(
win_equal_rec(next_curwin == NULL ? curwin : next_curwin, current,
topframe, dir, 0, tabline_height(),
(int)Columns, topframe->fr_height);
if (!p_spsc)
if (!p_spsc && next_curwin != aucmd_win)
win_fix_scroll(TRUE);
}

Expand Down Expand Up @@ -6366,8 +6366,7 @@ win_fix_scroll(int resize)
{
// Skip when window height has not changed or when
// buffer has less lines than the window height.
if (wp->w_height != wp->w_prev_height
&& wp->w_height < wp->w_buffer->b_ml.ml_line_count)
if (wp->w_height != wp->w_prev_height)
{
// Determine botline needed to avoid scrolling and set cursor.
if (wp->w_winrow != wp->w_prev_winrow)
Expand Down Expand Up @@ -7102,8 +7101,6 @@ restore_snapshot(
win_comp_pos();
if (wp != NULL && close_curwin)
win_goto(wp);
if (!p_spsc)
win_fix_scroll(FALSE);
redraw_all_later(UPD_NOT_VALID);
}
clear_snapshot(curtab, idx);
Expand Down

0 comments on commit d5bc762

Please sign in to comment.