0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.1.2303: cursor in wrong position after horizontal scroll

Problem:    Cursor in wrong position after horizontal scroll.
Solution:   Set w_valid_leftcol.  (closes #5214, closes #5224)
This commit is contained in:
Bram Moolenaar 2019-11-16 14:19:33 +01:00
parent f4a1d1c054
commit 08f23636ae
3 changed files with 33 additions and 0 deletions

View File

@ -1175,6 +1175,9 @@ curs_columns(
redraw_later(SOME_VALID);
#endif
// now w_leftcol is valid, avoid check_cursor_moved() thinking otherwise
curwin->w_valid_leftcol = curwin->w_leftcol;
curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL;
}

View File

@ -316,3 +316,31 @@ func Test_cursor_column_in_concealed_line_after_window_scroll()
call StopVimInTerminal(buf)
call delete('Xcolesearch')
endfunc
func Test_cursor_column_in_concealed_line_after_leftcol_change()
CheckRunVimInTerminal
" Test for issue #5214 fix.
let lines =<< trim END
0put = 'ab' .. repeat('-', &columns) .. 'c'
call matchadd('Conceal', '-')
set nowrap ss=0 cole=3 cocu=n
END
call writefile(lines, 'Xcurs-columns')
let buf = RunVimInTerminal('-S Xcurs-columns', {})
" Go to the end of the line (3 columns beyond the end of the screen).
" Horizontal scroll would center the cursor in the screen line, but conceal
" makes it go to screen column 1.
call term_sendkeys(buf, "$")
call term_wait(buf)
" Are the concealed parts of the current line really hidden?
call assert_equal('c', term_getline(buf, '.'))
" BugFix check: Is the window's cursor column properly updated for conceal?
call assert_equal(1, term_getcursor(buf)[1])
call StopVimInTerminal(buf)
call delete('Xcurs-columns')
endfunc

View File

@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2303,
/**/
2302,
/**/