Mercurial > vim
changeset 18469:66964658cc3c v8.1.2228
patch 8.1.2228: screenpos() returns wrong values when 'number' is set
Commit: https://github.com/vim/vim/commit/38ba4dce4a8574e60f6ddb111922880b0c7affdc
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Oct 27 21:39:09 2019 +0100
patch 8.1.2228: screenpos() returns wrong values when 'number' is set
Problem: screenpos() returns wrong values when 'number' is set. (Ben
Jackson)
Solution: Compare the column with the window width. (closes #5133)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 27 Oct 2019 21:45:03 +0100 |
parents | 5f2d45da8870 |
children | 0a2e927170c2 |
files | src/move.c src/testdir/test_cursor_func.vim src/version.c |
diffstat | 3 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/move.c +++ b/src/move.c @@ -1217,7 +1217,7 @@ textpos2screenpos( col -= rowoff * width; } col -= wp->w_leftcol; - if (col >= width) + if (col >= wp->w_width) col = -1; if (col >= 0) coloff = col - scol + wp->w_wincol + 1;
--- a/src/testdir/test_cursor_func.vim +++ b/src/testdir/test_cursor_func.vim @@ -100,3 +100,18 @@ func Test_screenpos() close bwipe! endfunc + +func Test_screenpos_number() + rightbelow new + rightbelow 73vsplit + call setline (1, repeat('x', 66)) + setlocal number + redraw + let winid = win_getid() + let [winrow, wincol] = win_screenpos(winid) + let pos = screenpos(winid, 1, 66) + call assert_equal(winrow, pos.row) + call assert_equal(wincol + 66 + 3, pos.col) + close + bwipe! +endfunc