mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 9.0.2022: getmousepos() returns wrong index for TAB char
Problem: When clicking in the middle of a TAB, getmousepos() returns the column of the next char instead of the TAB. Solution: Break out of the loop when the vcol to find is inside current char. Fix invalid memory access when calling virtcol2col() on an empty line. closes: #13321 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
committed by
Christian Brabandt
parent
cd6ee69358
commit
b583eda703
@@ -3366,6 +3366,46 @@ func Test_getmousepos()
|
||||
\ line: 1,
|
||||
\ column: 1,
|
||||
\ }, getmousepos())
|
||||
call test_setmouse(1, 2)
|
||||
call assert_equal(#{
|
||||
\ screenrow: 1,
|
||||
\ screencol: 2,
|
||||
\ winid: win_getid(),
|
||||
\ winrow: 1,
|
||||
\ wincol: 2,
|
||||
\ line: 1,
|
||||
\ column: 1,
|
||||
\ }, getmousepos())
|
||||
call test_setmouse(1, 8)
|
||||
call assert_equal(#{
|
||||
\ screenrow: 1,
|
||||
\ screencol: 8,
|
||||
\ winid: win_getid(),
|
||||
\ winrow: 1,
|
||||
\ wincol: 8,
|
||||
\ line: 1,
|
||||
\ column: 1,
|
||||
\ }, getmousepos())
|
||||
call test_setmouse(1, 9)
|
||||
call assert_equal(#{
|
||||
\ screenrow: 1,
|
||||
\ screencol: 9,
|
||||
\ winid: win_getid(),
|
||||
\ winrow: 1,
|
||||
\ wincol: 9,
|
||||
\ line: 1,
|
||||
\ column: 2,
|
||||
\ }, getmousepos())
|
||||
call test_setmouse(1, 12)
|
||||
call assert_equal(#{
|
||||
\ screenrow: 1,
|
||||
\ screencol: 12,
|
||||
\ winid: win_getid(),
|
||||
\ winrow: 1,
|
||||
\ wincol: 12,
|
||||
\ line: 1,
|
||||
\ column: 2,
|
||||
\ }, getmousepos())
|
||||
call test_setmouse(1, 25)
|
||||
call assert_equal(#{
|
||||
\ screenrow: 1,
|
||||
|
Reference in New Issue
Block a user