diff src/testdir/test_cursor_func.vim @ 25312:7a254d0705e2 v8.2.3193

patch 8.2.3193: screenpos() is wrong when 'display' is "lastline" Commit: https://github.com/vim/vim/commit/189663bdac1156237c49925f77bd197c1bdea12c Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 21 18:04:56 2021 +0200 patch 8.2.3193: screenpos() is wrong when 'display' is "lastline" Problem: screenpos() is wrong when the last line is partially visible and 'display' is "lastline". Solution: Also compute the position for a partially visible line. (closes #8599)
author Bram Moolenaar <Bram@vim.org>
date Wed, 21 Jul 2021 18:15:05 +0200
parents 8df4e9e2394f
children fb67cd7d30a7
line wrap: on
line diff
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -101,9 +101,25 @@ func Test_screenpos()
 	\ 'col': wincol + 9,
 	\ 'curscol': wincol + 9,
 	\ 'endcol': wincol + 9}, screenpos(winid, 2, 22))
+
+  let wininfo = getwininfo(winid)[0]
+  call setline(3, ['x']->repeat(wininfo.height))
+  call setline(line('$') + 1, 'x'->repeat(wininfo.width * 3))
+  setlocal nonumber display=lastline so=0
+  exe "normal G\<C-Y>\<C-Y>"
+  redraw
+  call assert_equal({'row': winrow + wininfo.height - 1,
+	\ 'col': wincol + 7,
+	\ 'curscol': wincol + 7,
+	\ 'endcol': wincol + 7}, winid->screenpos(line('$'), 8))
+  call assert_equal({'row': winrow - 1, 'col': 0, 'curscol': 0, 'endcol': 0},
+        \ winid->screenpos(line('$'), 22))
+
   close
   call assert_equal({}, screenpos(999, 1, 1))
+
   bwipe!
+  set display&
 
   call assert_equal({'col': 1, 'row': 1, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1))
   nmenu WinBar.TEST :