mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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 vim/vim#4367)
a9b2535f44
This commit is contained in:
parent
e8144d204c
commit
6ed20ff25c
@ -756,6 +756,42 @@ func Test_relative_cursor_second_line_after_resize()
|
|||||||
let &so = so_save
|
let &so = so_save
|
||||||
endfunc
|
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
|
" Tests for the winnr() function
|
||||||
func Test_winnr()
|
func Test_winnr()
|
||||||
only | tabonly
|
only | tabonly
|
||||||
|
@ -5610,10 +5610,13 @@ void scroll_to_fraction(win_T *wp, int prev_height)
|
|||||||
int sline, line_size;
|
int sline, line_size;
|
||||||
int height = wp->w_height_inner;
|
int height = wp->w_height_inner;
|
||||||
|
|
||||||
// Don't change w_topline when height is zero. Don't set w_topline when
|
// Don't change w_topline in any of these cases:
|
||||||
// 'scrollbind' is set and this isn't the current window.
|
// - 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
|
if (height > 0
|
||||||
&& (!wp->w_p_scb || wp == curwin)
|
&& (!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
|
* Find a value for w_topline that shows the cursor at the same
|
||||||
|
Loading…
Reference in New Issue
Block a user