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)
diff --git a/src/move.c b/src/move.c
index ed220f7..21e2a5d 100644
--- a/src/move.c
+++ b/src/move.c
@@ -1229,7 +1229,7 @@
int rowoff = 0;
colnr_T coloff = 0;
- if (pos->lnum >= wp->w_topline && pos->lnum < wp->w_botline)
+ if (pos->lnum >= wp->w_topline && pos->lnum <= wp->w_botline)
{
colnr_T off;
colnr_T col;
@@ -1256,11 +1256,11 @@
col -= wp->w_leftcol;
if (col >= wp->w_width)
col = -1;
- if (col >= 0)
+ if (col >= 0 && row + rowoff <= wp->w_height)
coloff = col - scol + wp->w_wincol + 1;
else
- // character is left or right of the window
- row = scol = ccol = ecol = 0;
+ // character is left, right or below of the window
+ row = rowoff = scol = ccol = ecol = 0;
}
*rowp = W_WINROW(wp) + row + rowoff;
*scolp = scol + coloff;