# HG changeset patch # User Bram Moolenaar # Date 1572209103 -3600 # Node ID 66964658cc3cef4d9a478912bd7d6121b97f8124 # Parent 5f2d45da8870e797821f5dbc123dd2f9fa59f35f patch 8.1.2228: screenpos() returns wrong values when 'number' is set Commit: https://github.com/vim/vim/commit/38ba4dce4a8574e60f6ddb111922880b0c7affdc Author: Bram Moolenaar 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) diff --git a/src/move.c b/src/move.c --- 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; diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim --- 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2228, +/**/ 2227, /**/ 2226,