summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/drawscreen.c2
-rw-r--r--src/move.c34
-rw-r--r--src/proto/move.pro2
-rw-r--r--src/version.c2
4 files changed, 16 insertions, 24 deletions
diff --git a/src/drawscreen.c b/src/drawscreen.c
index 90e1984e9f..a2f60a64ff 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -2343,7 +2343,7 @@ win_update(win_T *wp)
{
int n = plines_win_nofill(wp, l, FALSE)
+ wp->w_topfill;
- n = adjust_plines_for_skipcol(wp, n);
+ n -= adjust_plines_for_skipcol(wp);
if (n > wp->w_height)
n = wp->w_height;
new_rows += n;
diff --git a/src/move.c b/src/move.c
index 96692ba7d7..2ba02cf5dc 100644
--- a/src/move.c
+++ b/src/move.c
@@ -36,29 +36,19 @@ static void topline_back(lineoff_T *lp);
static void botline_forw(lineoff_T *lp);
/*
- * Reduce "n" for the screen lines skipped with "wp->w_skipcol".
+ * Get the number of screen lines skipped with "wp->w_skipcol".
*/
int
-adjust_plines_for_skipcol(win_T *wp, int n)
+adjust_plines_for_skipcol(win_T *wp)
{
if (wp->w_skipcol == 0)
- return n;
+ return 0;
- int off = 0;
int width = wp->w_width - win_col_off(wp);
if (wp->w_skipcol >= width)
- {
- ++off;
- int skip = wp->w_skipcol - width;
- width += win_col_off2(wp);
- while (skip >= width)
- {
- ++off;
- skip -= width;
- }
- }
- wp->w_valid &= ~VALID_WROW;
- return n - off;
+ return (wp->w_skipcol - width) / (width + win_col_off2(wp)) + 1;
+
+ return 0;
}
/*
@@ -77,7 +67,7 @@ plines_correct_topline(win_T *wp, linenr_T lnum)
#endif
n = plines_win(wp, lnum, FALSE);
if (lnum == wp->w_topline)
- n = adjust_plines_for_skipcol(wp, n);
+ n -= adjust_plines_for_skipcol(wp);
if (n > wp->w_height)
n = wp->w_height;
return n;
@@ -1458,10 +1448,10 @@ textpos2screenpos(
is_folded = hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL);
#endif
- row = plines_m_win(wp, wp->w_topline, lnum - 1, FALSE) + 1;
+ row = plines_m_win(wp, wp->w_topline, lnum - 1, FALSE);
// "row" should be the screen line where line "lnum" begins, which can
// be negative if "lnum" is "w_topline" and "w_skipcol" is non-zero.
- row = adjust_plines_for_skipcol(wp, row);
+ row -= adjust_plines_for_skipcol(wp);
#ifdef FEAT_DIFF
// Add filler lines above this buffer line.
@@ -1473,7 +1463,7 @@ textpos2screenpos(
#ifdef FEAT_FOLDING
if (is_folded)
{
- row += W_WINROW(wp);
+ row += W_WINROW(wp) + 1;
coloff = wp->w_wincol + 1 + off;
}
else
@@ -1499,10 +1489,10 @@ textpos2screenpos(
col -= wp->w_leftcol;
if (col >= wp->w_width)
col = -1;
- if (col >= 0 && row > 0 && row <= wp->w_height)
+ if (col >= 0 && row >= 0 && row < wp->w_height)
{
coloff = col - scol + wp->w_wincol + 1;
- row += W_WINROW(wp);
+ row += W_WINROW(wp) + 1;
}
else
// character is out of the window
diff --git a/src/proto/move.pro b/src/proto/move.pro
index 75f15444dd..b96b86d0fa 100644
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -1,5 +1,5 @@
/* move.c */
-int adjust_plines_for_skipcol(win_T *wp, int n);
+int adjust_plines_for_skipcol(win_T *wp);
void redraw_for_cursorline(win_T *wp);
int sms_marker_overlap(win_T *wp, int extra2);
void update_topline_redraw(void);
diff --git a/src/version.c b/src/version.c
index 8f0db98244..3bea7ac6be 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1747,
+/**/
1746,
/**/
1745,