mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.1.1347: fractional scroll position not restored after closing window
Problem: Fractional scroll position not restored after closing window.
Solution: Do restore fraction if topline is not one.
bd2d68c2f4
This commit is contained in:
parent
6ed20ff25c
commit
90c2abc53f
@ -758,15 +758,7 @@ 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
|
||||
|
||||
enew
|
||||
call setline(1, range(1, 8))
|
||||
normal 100%
|
||||
split
|
||||
@ -782,12 +774,20 @@ func Test_split_noscroll()
|
||||
call assert_equal(1, info1.topline)
|
||||
call assert_equal(1, info2.topline)
|
||||
|
||||
" Restore original state.
|
||||
for i in range(1, 20)
|
||||
wincmd -
|
||||
redraw!
|
||||
endfor
|
||||
" window that fits all lines by itself, but not when split: closing other
|
||||
" window should restore fraction.
|
||||
only!
|
||||
call setline(1, range(1, &lines - 10))
|
||||
exe &lines / 4
|
||||
let winid1 = win_getid()
|
||||
let info1 = getwininfo(winid1)[0]
|
||||
call assert_equal(1, info1.topline)
|
||||
new
|
||||
redraw
|
||||
close
|
||||
let info1 = getwininfo(winid1)[0]
|
||||
call assert_equal(1, info1.topline)
|
||||
|
||||
bwipe!
|
||||
let &so = so_save
|
||||
endfunc
|
||||
|
@ -5613,10 +5613,11 @@ void scroll_to_fraction(win_T *wp, int prev_height)
|
||||
// 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
|
||||
// - window height is sufficient to display the whole buffer and first line
|
||||
// is visible.
|
||||
if (height > 0
|
||||
&& (!wp->w_p_scb || wp == curwin)
|
||||
&& (height < wp->w_buffer->b_ml.ml_line_count)
|
||||
&& (height < wp->w_buffer->b_ml.ml_line_count || wp->w_topline > 1)
|
||||
) {
|
||||
/*
|
||||
* Find a value for w_topline that shows the cursor at the same
|
||||
|
Loading…
Reference in New Issue
Block a user