0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

patch 8.1.1327: unnecessary scroll after horizontal split

Problem:    Unnecessary scroll after horizontal split.
Solution:   Don't adjust to fraction if all the text fits in the window.
            (Martin Kunev, closes #4367)
This commit is contained in:
Bram Moolenaar
2019-05-12 14:25:30 +02:00
parent 8aad88d8de
commit a9b2535f44
3 changed files with 45 additions and 3 deletions

View File

@@ -743,6 +743,42 @@ func Test_relative_cursor_second_line_after_resize()
let &so = so_save
endfunc
func Test_split_noscroll()
let so_save = &so
new
only
" Make sure windows can hold all content after split.
for i in range(1, 20)
wincmd +
redraw!
endfor
call setline (1, range(1, 8))
normal 100%
split
1wincmd w
let winid1 = win_getid()
let info1 = getwininfo(winid1)[0]
2wincmd w
let winid2 = win_getid()
let info2 = getwininfo(winid2)[0]
call assert_equal(1, info1.topline)
call assert_equal(1, info2.topline)
" Restore original state.
for i in range(1, 20)
wincmd -
redraw!
endfor
only!
bwipe!
let &so = so_save
endfunc
" Tests for the winnr() function
func Test_winnr()
only | tabonly

View File

@@ -767,6 +767,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1327,
/**/
1326,
/**/

View File

@@ -5827,9 +5827,13 @@ scroll_to_fraction(win_T *wp, int prev_height)
int sline, line_size;
int height = wp->w_height;
// Don't change w_topline when height is zero. Don't set w_topline when
// 'scrollbind' is set and this isn't the current window.
if (height > 0 && (!wp->w_p_scb || wp == curwin))
// Don't change w_topline in any of these cases:
// - window height is 0
// - 'scrollbind' is set and this isn't the current window
// - window height is sufficient to display the whole buffer
if (height > 0
&& (!wp->w_p_scb || wp == curwin)
&& (height < wp->w_buffer->b_ml.ml_line_count))
{
/*
* Find a value for w_topline that shows the cursor at the same