mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:7.4.2279
Problem: Starting diff mode with the cursor in the last line might end up
only showing one closed fold. (John Beckett)
Solution: Scroll the window to show the same relative cursor position.
46328f9a1c
This commit is contained in:
parent
7629176fb1
commit
67eae93557
@ -1007,6 +1007,10 @@ void ex_diffsplit(exarg_T *eap)
|
||||
bufref_T old_curbuf;
|
||||
set_bufref(&old_curbuf, curbuf);
|
||||
|
||||
// Need to compute w_fraction when no redraw happened yet.
|
||||
validate_cursor();
|
||||
set_fraction(curwin);
|
||||
|
||||
// don't use a new tab page, each tab page has its own diffs
|
||||
cmdmod.tab = 0;
|
||||
|
||||
@ -1032,6 +1036,9 @@ void ex_diffsplit(exarg_T *eap)
|
||||
curwin->w_cursor.lnum);
|
||||
}
|
||||
}
|
||||
// Now that lines are folded scroll to show the cursor at the same
|
||||
// relative position.
|
||||
scroll_to_fraction(curwin, curwin->w_height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ static int included_patches[] = {
|
||||
// 2282 NA
|
||||
// 2281 NA
|
||||
// 2280,
|
||||
// 2279,
|
||||
2279,
|
||||
// 2278 NA
|
||||
2277,
|
||||
// 2276,
|
||||
|
@ -4717,8 +4717,6 @@ void set_fraction(win_T *wp)
|
||||
*/
|
||||
void win_new_height(win_T *wp, int height)
|
||||
{
|
||||
linenr_T lnum;
|
||||
int sline, line_size;
|
||||
int prev_height = wp->w_height;
|
||||
|
||||
/* Don't want a negative height. Happens when splitting a tiny window.
|
||||
@ -4745,6 +4743,15 @@ void win_new_height(win_T *wp, int height)
|
||||
wp->w_height = height;
|
||||
wp->w_skipcol = 0;
|
||||
|
||||
scroll_to_fraction(wp, prev_height);
|
||||
}
|
||||
|
||||
void scroll_to_fraction(win_T *wp, int prev_height)
|
||||
{
|
||||
linenr_T lnum;
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user