return;
}
-/* #define KEEP_SCREEN_LINE */
/*
* Scroll 'scroll' lines up or down.
*/
curwin->w_topfill = diff_check_fill(curwin, curwin->w_topline);
#endif
-#ifndef KEEP_SCREEN_LINE
if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
{
++curwin->w_cursor.lnum;
curwin->w_valid &=
~(VALID_VIRTCOL|VALID_CHEIGHT|VALID_WCOL);
}
-#endif
}
curwin->w_valid &= ~(VALID_CROW|VALID_WROW);
scrolled += i;
}
}
-#ifndef KEEP_SCREEN_LINE
/*
* When hit bottom of the file: move cursor down.
*/
curwin->w_cursor.lnum += n;
check_cursor_lnum();
}
-#else
- /* try to put the cursor in the same screen line */
- while ((curwin->w_cursor.lnum < curwin->w_topline || scrolled > 0)
- && curwin->w_cursor.lnum < curwin->w_botline - 1)
- {
- scrolled -= plines(curwin->w_cursor.lnum);
- if (scrolled < 0 && curwin->w_cursor.lnum >= curwin->w_topline)
- break;
-# ifdef FEAT_FOLDING
- (void)hasFolding(curwin->w_cursor.lnum, NULL,
- &curwin->w_cursor.lnum);
-# endif
- ++curwin->w_cursor.lnum;
- }
-#endif
}
else
{
if (curwin->w_topfill < diff_check_fill(curwin, curwin->w_topline))
{
i = 1;
- if (--n < 0 && scrolled > 0)
- break;
+ --n;
++curwin->w_topfill;
}
else
curwin->w_valid &= ~(VALID_CROW|VALID_WROW|
VALID_BOTLINE|VALID_BOTLINE_AP);
scrolled += i;
-#ifndef KEEP_SCREEN_LINE
if (curwin->w_cursor.lnum > 1)
{
--curwin->w_cursor.lnum;
curwin->w_valid &= ~(VALID_VIRTCOL|VALID_CHEIGHT|VALID_WCOL);
}
-#endif
}
-#ifndef KEEP_SCREEN_LINE
+
/*
* When hit top of the file: move cursor up.
*/
# endif
curwin->w_cursor.lnum -= n;
}
-#else
- /* try to put the cursor in the same screen line */
- scrolled += n; /* move cursor when topline is 1 */
- while (curwin->w_cursor.lnum > curwin->w_topline
- && (scrolled > 0 || curwin->w_cursor.lnum >= curwin->w_botline))
- {
- scrolled -= plines(curwin->w_cursor.lnum - 1);
- if (scrolled < 0 && curwin->w_cursor.lnum < curwin->w_botline)
- break;
- --curwin->w_cursor.lnum;
-# ifdef FEAT_FOLDING
- foldAdjustCursor();
-# endif
- }
-#endif
}
# ifdef FEAT_FOLDING
/* Move cursor to first line of closed fold. */