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