patch 9.1.1238: wrong cursor column with 'set splitkeep=screen'
Problem: With ':set splitkeep=screen', cursor did't restore column
correctly when splitting a window on a line longer than the
last line on the screen (after v9.1.0707)
Solution: Restore cursor column in `win_fix_scroll()` since it may be
changed in `getvcol()` after 396fd1ec29
(phanium).
Example:
```
echo longlonglongling\nshort | vim - -u NONE --cmd 'set
splitkeep=screen' +'norm $' +new +q
```
fixes: #16968
closes: #16971
Signed-off-by: phanium <91544758+phanen@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
2726821d38
commit
7746348c5d
@ -1979,6 +1979,18 @@ func Test_splitkeep_misc()
|
||||
set splitkeep&
|
||||
endfunc
|
||||
|
||||
func Test_splitkeep_screen_cursor_pos()
|
||||
new
|
||||
set splitkeep=screen
|
||||
call setline(1, ["longer than the last", "shorter"])
|
||||
norm! $
|
||||
wincmd s
|
||||
close
|
||||
call assert_equal([0, 1, 20, 0], getpos('.'))
|
||||
%bwipeout!
|
||||
set splitkeep&
|
||||
endfunc
|
||||
|
||||
func Test_splitkeep_cursor()
|
||||
CheckScreendump
|
||||
let lines =<< trim END
|
||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1238,
|
||||
/**/
|
||||
1237,
|
||||
/**/
|
||||
|
@ -7038,7 +7038,7 @@ win_fix_scroll(int resize)
|
||||
{
|
||||
int diff = (wp->w_winrow - wp->w_prev_winrow)
|
||||
+ (wp->w_height - wp->w_prev_height);
|
||||
linenr_T lnum = wp->w_cursor.lnum;
|
||||
pos_T cursor = wp->w_cursor;
|
||||
wp->w_cursor.lnum = wp->w_botline - 1;
|
||||
|
||||
// Add difference in height and row to botline.
|
||||
@ -7052,7 +7052,8 @@ win_fix_scroll(int resize)
|
||||
wp->w_fraction = FRACTION_MULT;
|
||||
scroll_to_fraction(wp, wp->w_prev_height);
|
||||
|
||||
wp->w_cursor.lnum = lnum;
|
||||
wp->w_cursor = cursor;
|
||||
wp->w_valid &= ~VALID_WCOL;
|
||||
}
|
||||
else if (wp == curwin)
|
||||
wp->w_valid &= ~VALID_CROW;
|
||||
|
Reference in New Issue
Block a user