Skip to content

Commit

Permalink
patch 9.0.2081: smoothscroll may result in wrong cursor position
Browse files Browse the repository at this point in the history
Problem:  With 'smoothscroll' set, "w_skipcol" is not reset when unsetting 'wrap'.
          Resulting in incorrect calculation of the cursor position.
Solution: Reset "w_skipcol" when unsetting 'wrap'.

fixes:  vim#12970
closes: vim#13439

Signed-off-by: Luuk van Baal <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
  • Loading branch information
luukvbaal authored and chrisbra committed Oct 28, 2023
1 parent a390e98 commit 1bf1bf5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/option.c
Original file line number Diff line number Diff line change
Expand Up @@ -4081,11 +4081,9 @@ did_set_showtabline(optset_T *args UNUSED)
char *
did_set_smoothscroll(optset_T *args UNUSED)
{
if (curwin->w_p_sms)
return NULL;
if (!curwin->w_p_sms)
curwin->w_skipcol = 0;

curwin->w_skipcol = 0;
changed_line_abv_curs();
return NULL;
}

Expand Down Expand Up @@ -4535,9 +4533,12 @@ did_set_winwidth(optset_T *args UNUSED)
char *
did_set_wrap(optset_T *args UNUSED)
{
// If 'wrap' is set, set w_leftcol to zero.
// Set w_leftcol or w_skipcol to zero.
if (curwin->w_p_wrap)
curwin->w_leftcol = 0;
else
curwin->w_skipcol = 0;

return NULL;
}

Expand Down
16 changes: 16 additions & 0 deletions src/testdir/test_options.vim
Original file line number Diff line number Diff line change
Expand Up @@ -2207,4 +2207,20 @@ func Test_set_keyprotocol()
let &term = term
endfunc

func Test_set_wrap()
" Unsetting 'wrap' when 'smoothscroll' is set does not result in incorrect
" cursor position.
set wrap smoothscroll scrolloff=5

call setline(1, ['', 'aaaa'->repeat(500)])
20 split
20 vsplit
norm 2G$
redraw
set nowrap
call assert_equal(2, winline())

set wrap& smoothscroll& scrolloff&
endfunc

" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2081,
/**/
2080,
/**/
Expand Down

0 comments on commit 1bf1bf5

Please sign in to comment.