0
0
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:
zeertzjq
2023-10-14 11:32:28 +02:00
committed by Christian Brabandt
parent cd6ee69358
commit b583eda703
6 changed files with 62 additions and 7 deletions

View File

@@ -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,