mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.1.1552: cursor position is wrong after sign column changes
Problem: Cursor position is wrong after sign column appears or disappears. (Yegappan Lakshmanan) Solution: Call changed_line_abv_curs() instead of changed_cline_bef_curs().
This commit is contained in:
parent
6c17543b56
commit
f85e40afc2
@ -231,7 +231,7 @@ insert_sign(
|
||||
if (buf->b_signlist == NULL)
|
||||
{
|
||||
redraw_buf_later(buf, NOT_VALID);
|
||||
changed_cline_bef_curs();
|
||||
changed_line_abv_curs();
|
||||
}
|
||||
|
||||
// first sign in signlist
|
||||
@ -531,7 +531,7 @@ buf_delsign(
|
||||
if (buf->b_signlist == NULL)
|
||||
{
|
||||
redraw_buf_later(buf, NOT_VALID);
|
||||
changed_cline_bef_curs();
|
||||
changed_line_abv_curs();
|
||||
}
|
||||
|
||||
return lnum;
|
||||
@ -651,7 +651,7 @@ buf_delete_signs(buf_T *buf, char_u *group)
|
||||
if (buf->b_signlist != NULL && curwin != NULL)
|
||||
{
|
||||
redraw_buf_later(buf, NOT_VALID);
|
||||
changed_cline_bef_curs();
|
||||
changed_line_abv_curs();
|
||||
}
|
||||
|
||||
lastp = &buf->b_signlist;
|
||||
|
6
src/testdir/dumps/Test_sign_cursor_01.dump
Normal file
6
src/testdir/dumps/Test_sign_cursor_01.dump
Normal file
@ -0,0 +1,6 @@
|
||||
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70
|
||||
|=+0&#ffff4012|>>m+0&#ffffff0@3| @68
|
||||
| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68
|
||||
|~+0#4040ff13&| @73
|
||||
| +0#0000000&@56|2|,|1| @10|A|l@1|
|
6
src/testdir/dumps/Test_sign_cursor_02.dump
Normal file
6
src/testdir/dumps/Test_sign_cursor_02.dump
Normal file
@ -0,0 +1,6 @@
|
||||
|x+0&#ffffff0@74
|
||||
>m@3| @70
|
||||
|y@3| @70
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e| |1|0| @40|2|,|1| @10|A|l@1|
|
@ -3,6 +3,8 @@
|
||||
source check.vim
|
||||
CheckFeature signs
|
||||
|
||||
source screendump.vim
|
||||
|
||||
func Test_sign()
|
||||
new
|
||||
call setline(1, ['a', 'b', 'c', 'd'])
|
||||
@ -1706,3 +1708,31 @@ func Test_sign_jump_func()
|
||||
sign undefine sign1
|
||||
enew! | only!
|
||||
endfunc
|
||||
|
||||
" Test for correct cursor position after the sign column appears or disappears.
|
||||
func Test_sign_cursor_position()
|
||||
if !CanRunVimInTerminal()
|
||||
throw 'Skipped: cannot make screendumps'
|
||||
endif
|
||||
|
||||
let lines =<< trim END
|
||||
call setline(1, [repeat('x', 75), 'mmmm', 'yyyy'])
|
||||
call cursor(2,1)
|
||||
sign define s1 texthl=Search text==>
|
||||
redraw
|
||||
sign place 10 line=2 name=s1
|
||||
END
|
||||
call writefile(lines, 'XtestSigncolumn')
|
||||
let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
|
||||
call VerifyScreenDump(buf, 'Test_sign_cursor_01', {})
|
||||
|
||||
" update cursor position calculation
|
||||
call term_sendkeys(buf, "lh")
|
||||
call term_sendkeys(buf, ":sign unplace 10\<CR>")
|
||||
call VerifyScreenDump(buf, 'Test_sign_cursor_02', {})
|
||||
|
||||
|
||||
" clean up
|
||||
call StopVimInTerminal(buf)
|
||||
call delete('XtestSigncolumn')
|
||||
endfunc
|
||||
|
@ -777,6 +777,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1552,
|
||||
/**/
|
||||
1551,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user