Lines Matching refs:curwin

122     curwin->w_last_cursorline = 0;  in reset_cursorline()
192 long *so_ptr = curwin->w_p_so >= 0 ? &curwin->w_p_so : &p_so; in update_topline()
197 if (!screen_valid(TRUE) || curwin->w_height == 0) in update_topline()
200 curwin->w_topline = curwin->w_cursor.lnum; in update_topline()
201 curwin->w_botline = curwin->w_topline; in update_topline()
202 curwin->w_scbind_pos = 1; in update_topline()
206 check_cursor_moved(curwin); in update_topline()
207 if (curwin->w_valid & VALID_TOPLINE) in update_topline()
214 old_topline = curwin->w_topline; in update_topline()
216 old_topfill = curwin->w_topfill; in update_topline()
224 if (curwin->w_topline != 1) in update_topline()
226 curwin->w_topline = 1; in update_topline()
227 curwin->w_botline = 2; in update_topline()
228 curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP; in update_topline()
229 curwin->w_scbind_pos = 1; in update_topline()
238 if (curwin->w_topline > 1) in update_topline()
243 if (curwin->w_cursor.lnum < curwin->w_topline) in update_topline()
250 if (!check_topline && curwin->w_topfill > diff_check_fill(curwin, in update_topline()
251 curwin->w_topline)) in update_topline()
257 halfheight = curwin->w_height / 2 - 1; in update_topline()
262 if (hasAnyFolding(curwin)) in update_topline()
268 for (lnum = curwin->w_cursor.lnum; in update_topline()
269 lnum < curwin->w_topline + *so_ptr; ++lnum) in update_topline()
280 n = curwin->w_topline + *so_ptr - curwin->w_cursor.lnum; in update_topline()
298 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in update_topline()
314 if (!(curwin->w_valid & VALID_BOTLINE_AP)) in update_topline()
317 if (curwin->w_botline <= curbuf->b_ml.ml_line_count) in update_topline()
319 if (curwin->w_cursor.lnum < curwin->w_botline) in update_topline()
321 if (((long)curwin->w_cursor.lnum in update_topline()
322 >= (long)curwin->w_botline - *so_ptr in update_topline()
324 || hasAnyFolding(curwin) in update_topline()
333 n = curwin->w_empty_rows; in update_topline()
334 loff.lnum = curwin->w_cursor.lnum; in update_topline()
341 n += curwin->w_filler_rows; in update_topline()
344 while (loff.lnum < curwin->w_botline in update_topline()
346 && (loff.lnum + 1 < curwin->w_botline || loff.fill == 0) in update_topline()
366 if (hasAnyFolding(curwin)) in update_topline()
372 for (lnum = curwin->w_cursor.lnum; in update_topline()
373 lnum >= curwin->w_botline - *so_ptr; --lnum) in update_topline()
377 if (lnum <= 0 || line_count > curwin->w_height + 1) in update_topline()
384 line_count = curwin->w_cursor.lnum - curwin->w_botline in update_topline()
386 if (line_count <= curwin->w_height + 1) in update_topline()
393 curwin->w_valid |= VALID_TOPLINE; in update_topline()
398 if (curwin->w_topline != old_topline in update_topline()
400 || curwin->w_topfill != old_topfill in update_topline()
405 if (curwin->w_skipcol != 0) in update_topline()
407 curwin->w_skipcol = 0; in update_topline()
413 if (curwin->w_cursor.lnum == curwin->w_topline) in update_topline()
430 return (curwin->w_height * -p_sj) / 100; in scrolljump_value()
444 if (curwin->w_cursor.lnum < curwin->w_topline + so in check_top_offset()
446 || hasAnyFolding(curwin) in check_top_offset()
450 loff.lnum = curwin->w_cursor.lnum; in check_top_offset()
453 n = curwin->w_topfill; // always have this context in check_top_offset()
462 if (loff.lnum < curwin->w_topline in check_top_offset()
464 || (loff.lnum == curwin->w_topline && loff.fill > 0) in check_top_offset()
479 if (curwin->w_set_curswant) in update_curswant()
482 curwin->w_curswant = curwin->w_virtcol; in update_curswant()
483 curwin->w_set_curswant = FALSE; in update_curswant()
519 changed_window_setting_win(curwin); in changed_window_setting()
569 curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL in changed_cline_bef_curs()
588 curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL|VALID_CROW in changed_line_abv_curs()
605 validate_botline_win(curwin); in validate_botline()
624 curwin->w_valid &= ~(VALID_BOTLINE|VALID_BOTLINE_AP); in invalidate_botline()
646 check_cursor_moved(curwin); in cursor_valid()
647 return ((curwin->w_valid & (VALID_WROW|VALID_WCOL)) == in cursor_valid()
658 check_cursor_moved(curwin); in validate_cursor()
659 if ((curwin->w_valid & (VALID_WCOL|VALID_WROW)) != (VALID_WCOL|VALID_WROW)) in validate_cursor()
674 check_cursor_moved(curwin); in validate_cline_row()
675 if (!(curwin->w_valid & VALID_CROW)) in validate_cline_row()
676 curs_rows(curwin); in validate_cline_row()
801 redraw_for_cursorline(curwin); in curs_rows()
812 validate_virtcol_win(curwin); in validate_virtcol()
839 check_cursor_moved(curwin); in validate_cheight()
840 if (!(curwin->w_valid & VALID_CHEIGHT)) in validate_cheight()
843 if (curwin->w_cursor.lnum == curwin->w_topline) in validate_cheight()
844 curwin->w_cline_height = plines_nofill(curwin->w_cursor.lnum) in validate_cheight()
845 + curwin->w_topfill; in validate_cheight()
848 curwin->w_cline_height = plines(curwin->w_cursor.lnum); in validate_cheight()
850 curwin->w_cline_folded = hasFolding(curwin->w_cursor.lnum, NULL, NULL); in validate_cheight()
852 curwin->w_valid |= VALID_CHEIGHT; in validate_cheight()
867 if (!(curwin->w_valid & VALID_WCOL)) in validate_cursor_col()
869 col = curwin->w_virtcol; in validate_cursor_col()
872 width = curwin->w_width - off + curwin_col_off2(); in validate_cursor_col()
875 if (curwin->w_p_wrap in validate_cursor_col()
876 && col >= (colnr_T)curwin->w_width in validate_cursor_col()
879 col -= ((col - curwin->w_width) / width + 1) * width; in validate_cursor_col()
880 if (col > (int)curwin->w_leftcol) in validate_cursor_col()
881 col -= curwin->w_leftcol; in validate_cursor_col()
884 curwin->w_wcol = col; in validate_cursor_col()
886 curwin->w_valid |= VALID_WCOL; in validate_cursor_col()
888 curwin->w_flags &= ~WFLAG_WCOL_OFF_ADDED; in validate_cursor_col()
902 + (cmdwin_type == 0 || wp != curwin ? 0 : 1) in win_col_off()
916 return win_col_off(curwin); in curwin_col_off()
935 return win_col_off2(curwin); in curwin_col_off2()
969 if (!(curwin->w_valid & VALID_CROW)) in curs_columns()
970 curs_rows(curwin); in curs_columns()
976 if (curwin->w_cline_folded) in curs_columns()
978 startcol = curwin->w_virtcol = endcol = curwin->w_leftcol; in curs_columns()
981 getvvcol(curwin, &curwin->w_cursor, in curs_columns()
982 &startcol, &(curwin->w_virtcol), &endcol); in curs_columns()
989 curwin->w_wcol = curwin->w_virtcol + extra; in curs_columns()
995 curwin->w_wrow = curwin->w_cline_row; in curs_columns()
997 textwidth = curwin->w_width - extra; in curs_columns()
1002 curwin->w_wcol = curwin->w_width - 1; in curs_columns()
1003 if (curwin->w_p_wrap) in curs_columns()
1004 curwin->w_wrow = curwin->w_height - 1; in curs_columns()
1006 curwin->w_wrow = curwin->w_height - 1 - curwin->w_empty_rows; in curs_columns()
1008 else if (curwin->w_p_wrap && curwin->w_width != 0) in curs_columns()
1013 if (curwin->w_wcol >= curwin->w_width) in curs_columns()
1020 n = (curwin->w_wcol - curwin->w_width) / width + 1; in curs_columns()
1021 curwin->w_wcol -= n * width; in curs_columns()
1022 curwin->w_wrow += n; in curs_columns()
1028 sbr = get_showbreak_value(curwin); in curs_columns()
1030 && curwin->w_wcol == vim_strsize(sbr)) in curs_columns()
1031 curwin->w_wcol = 0; in curs_columns()
1041 && !curwin->w_cline_folded in curs_columns()
1051 off_left = (int)startcol - (int)curwin->w_leftcol - siso; in curs_columns()
1052 off_right = (int)endcol - (int)(curwin->w_leftcol + curwin->w_width in curs_columns()
1064 new_leftcol = curwin->w_wcol - extra - textwidth / 2; in curs_columns()
1070 new_leftcol = curwin->w_leftcol - diff; in curs_columns()
1072 new_leftcol = curwin->w_leftcol + diff; in curs_columns()
1076 if (new_leftcol != (int)curwin->w_leftcol) in curs_columns()
1078 curwin->w_leftcol = new_leftcol; in curs_columns()
1083 curwin->w_wcol -= curwin->w_leftcol; in curs_columns()
1085 else if (curwin->w_wcol > (int)curwin->w_leftcol) in curs_columns()
1086 curwin->w_wcol -= curwin->w_leftcol; in curs_columns()
1088 curwin->w_wcol = 0; in curs_columns()
1093 if (curwin->w_cursor.lnum == curwin->w_topline) in curs_columns()
1094 curwin->w_wrow += curwin->w_topfill; in curs_columns()
1096 curwin->w_wrow += diff_check_fill(curwin, curwin->w_cursor.lnum); in curs_columns()
1099 prev_skipcol = curwin->w_skipcol; in curs_columns()
1103 if ((curwin->w_wrow >= curwin->w_height in curs_columns()
1105 || curwin->w_wrow + so >= curwin->w_height) in curs_columns()
1112 (curwin, curwin->w_cursor.lnum, FALSE)) in curs_columns()
1113 - 1 >= curwin->w_height)) in curs_columns()
1114 && curwin->w_height != 0 in curs_columns()
1115 && curwin->w_cursor.lnum == curwin->w_topline in curs_columns()
1117 && curwin->w_width != 0) in curs_columns()
1126 if (curwin->w_skipcol + so * width > curwin->w_virtcol) in curs_columns()
1131 p_lines = plines_win(curwin, curwin->w_cursor.lnum, FALSE); in curs_columns()
1133 if (p_lines > curwin->w_wrow + so) in curs_columns()
1134 n = curwin->w_wrow + so; in curs_columns()
1137 if ((colnr_T)n >= curwin->w_height + curwin->w_skipcol / width - so) in curs_columns()
1143 n = curwin->w_virtcol / width; in curs_columns()
1144 if (n > curwin->w_height / 2) in curs_columns()
1145 n -= curwin->w_height / 2; in curs_columns()
1149 if (n > p_lines - curwin->w_height + 1) in curs_columns()
1150 n = p_lines - curwin->w_height + 1; in curs_columns()
1151 curwin->w_skipcol = n * width; in curs_columns()
1156 extra = (curwin->w_skipcol + so * width - curwin->w_virtcol in curs_columns()
1160 if ((colnr_T)(extra * width) > curwin->w_skipcol) in curs_columns()
1161 extra = curwin->w_skipcol / width; in curs_columns()
1162 curwin->w_skipcol -= extra * width; in curs_columns()
1168 endcol = (n - curwin->w_height + 1) * width; in curs_columns()
1169 while (endcol > curwin->w_virtcol) in curs_columns()
1171 if (endcol > curwin->w_skipcol) in curs_columns()
1172 curwin->w_skipcol = endcol; in curs_columns()
1175 curwin->w_wrow -= curwin->w_skipcol / width; in curs_columns()
1176 if (curwin->w_wrow >= curwin->w_height) in curs_columns()
1179 extra = curwin->w_wrow - curwin->w_height + 1; in curs_columns()
1180 curwin->w_skipcol += extra * width; in curs_columns()
1181 curwin->w_wrow -= extra; in curs_columns()
1184 extra = ((int)prev_skipcol - (int)curwin->w_skipcol) / width; in curs_columns()
1186 win_ins_lines(curwin, 0, extra, FALSE, FALSE); in curs_columns()
1188 win_del_lines(curwin, 0, -extra, FALSE, FALSE, 0); in curs_columns()
1191 curwin->w_skipcol = 0; in curs_columns()
1192 if (prev_skipcol != curwin->w_skipcol) in curs_columns()
1197 if (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0 in curs_columns()
1202 if (popup_is_popup(curwin) && curbuf->b_term != NULL) in curs_columns()
1204 curwin->w_wrow += popup_top_extra(curwin); in curs_columns()
1205 curwin->w_wcol += popup_left_extra(curwin); in curs_columns()
1206 curwin->w_flags |= WFLAG_WCOL_OFF_ADDED + WFLAG_WROW_OFF_ADDED; in curs_columns()
1209 curwin->w_flags &= ~(WFLAG_WCOL_OFF_ADDED + WFLAG_WROW_OFF_ADDED); in curs_columns()
1213 curwin->w_valid_leftcol = curwin->w_leftcol; in curs_columns()
1215 curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL; in curs_columns()
1332 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in scrolldown()
1338 if (curwin->w_topfill < diff_check(curwin, curwin->w_topline) in scrolldown()
1339 && curwin->w_topfill < curwin->w_height - 1) in scrolldown()
1341 ++curwin->w_topfill; in scrolldown()
1347 if (curwin->w_topline == 1) in scrolldown()
1349 --curwin->w_topline; in scrolldown()
1351 curwin->w_topfill = 0; in scrolldown()
1355 if (hasFolding(curwin->w_topline, &first, NULL)) in scrolldown()
1359 line_count -= curwin->w_topline - first - 1; in scrolldown()
1360 curwin->w_botline -= curwin->w_topline - first; in scrolldown()
1361 curwin->w_topline = first; in scrolldown()
1365 done += PLINES_NOFILL(curwin->w_topline); in scrolldown()
1367 --curwin->w_botline; // approximate w_botline in scrolldown()
1370 curwin->w_wrow += done; // keep w_wrow updated in scrolldown()
1371 curwin->w_cline_row += done; // keep w_cline_row updated in scrolldown()
1374 if (curwin->w_cursor.lnum == curwin->w_topline) in scrolldown()
1375 curwin->w_cline_row = 0; in scrolldown()
1376 check_topfill(curwin, TRUE); in scrolldown()
1383 wrow = curwin->w_wrow; in scrolldown()
1384 if (curwin->w_p_wrap && curwin->w_width != 0) in scrolldown()
1388 wrow += curwin->w_cline_height - 1 - in scrolldown()
1389 curwin->w_virtcol / curwin->w_width; in scrolldown()
1391 while (wrow >= curwin->w_height && curwin->w_cursor.lnum > 1) in scrolldown()
1394 if (hasFolding(curwin->w_cursor.lnum, &first, NULL)) in scrolldown()
1398 curwin->w_cursor.lnum = 1; in scrolldown()
1400 curwin->w_cursor.lnum = first - 1; in scrolldown()
1404 wrow -= plines(curwin->w_cursor.lnum--); in scrolldown()
1405 curwin->w_valid &= in scrolldown()
1415 coladvance(curwin->w_curswant); in scrolldown()
1432 (byfold && hasAnyFolding(curwin)) in scrollup()
1438 curwin->w_p_diff in scrollup()
1443 lnum = curwin->w_topline; in scrollup()
1447 if (curwin->w_topfill > 0) in scrollup()
1448 --curwin->w_topfill; in scrollup()
1460 curwin->w_topfill = diff_check_fill(curwin, lnum); in scrollup()
1465 curwin->w_botline += lnum - curwin->w_topline; in scrollup()
1466 curwin->w_topline = lnum; in scrollup()
1471 curwin->w_topline += line_count; in scrollup()
1472 curwin->w_botline += line_count; // approximate w_botline in scrollup()
1475 if (curwin->w_topline > curbuf->b_ml.ml_line_count) in scrollup()
1476 curwin->w_topline = curbuf->b_ml.ml_line_count; in scrollup()
1477 if (curwin->w_botline > curbuf->b_ml.ml_line_count + 1) in scrollup()
1478 curwin->w_botline = curbuf->b_ml.ml_line_count + 1; in scrollup()
1481 check_topfill(curwin, FALSE); in scrollup()
1485 if (hasAnyFolding(curwin)) in scrollup()
1487 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in scrollup()
1490 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE); in scrollup()
1491 if (curwin->w_cursor.lnum < curwin->w_topline) in scrollup()
1493 curwin->w_cursor.lnum = curwin->w_topline; in scrollup()
1494 curwin->w_valid &= in scrollup()
1496 coladvance(curwin->w_curswant); in scrollup()
1540 n = plines_nofill(curwin->w_topline); in max_topfill()
1541 if (n >= curwin->w_height) in max_topfill()
1542 curwin->w_topfill = 0; in max_topfill()
1545 curwin->w_topfill = diff_check_fill(curwin, curwin->w_topline); in max_topfill()
1546 if (curwin->w_topfill + n > curwin->w_height) in max_topfill()
1547 curwin->w_topfill = curwin->w_height - n; in max_topfill()
1561 int can_fill = (curwin->w_topfill in scrolldown_clamp()
1562 < diff_check_fill(curwin, curwin->w_topline)); in scrolldown_clamp()
1565 if (curwin->w_topline <= 1 in scrolldown_clamp()
1579 end_row = curwin->w_wrow; in scrolldown_clamp()
1584 end_row += plines_nofill(curwin->w_topline - 1); in scrolldown_clamp()
1586 end_row += plines(curwin->w_topline - 1); in scrolldown_clamp()
1588 if (curwin->w_p_wrap && curwin->w_width != 0) in scrolldown_clamp()
1592 end_row += curwin->w_cline_height - 1 - in scrolldown_clamp()
1593 curwin->w_virtcol / curwin->w_width; in scrolldown_clamp()
1595 if (end_row < curwin->w_height - get_scrolloff_value()) in scrolldown_clamp()
1600 ++curwin->w_topfill; in scrolldown_clamp()
1601 check_topfill(curwin, TRUE); in scrolldown_clamp()
1605 --curwin->w_topline; in scrolldown_clamp()
1606 curwin->w_topfill = 0; in scrolldown_clamp()
1609 --curwin->w_topline; in scrolldown_clamp()
1612 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in scrolldown_clamp()
1614 --curwin->w_botline; // approximate w_botline in scrolldown_clamp()
1615 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE); in scrolldown_clamp()
1628 if (curwin->w_topline == curbuf->b_ml.ml_line_count in scrollup_clamp()
1630 && curwin->w_topfill == 0 in scrollup_clamp()
1643 start_row = curwin->w_wrow - plines_nofill(curwin->w_topline) in scrollup_clamp()
1644 - curwin->w_topfill; in scrollup_clamp()
1646 start_row = curwin->w_wrow - plines(curwin->w_topline); in scrollup_clamp()
1648 if (curwin->w_p_wrap && curwin->w_width != 0) in scrollup_clamp()
1651 start_row -= curwin->w_virtcol / curwin->w_width; in scrollup_clamp()
1656 if (curwin->w_topfill > 0) in scrollup_clamp()
1657 --curwin->w_topfill; in scrollup_clamp()
1662 (void)hasFolding(curwin->w_topline, NULL, &curwin->w_topline); in scrollup_clamp()
1664 ++curwin->w_topline; in scrollup_clamp()
1666 ++curwin->w_botline; // approximate w_botline in scrollup_clamp()
1667 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE); in scrollup_clamp()
1681 if (lp->fill < diff_check_fill(curwin, lp->lnum)) in topline_back()
1717 if (lp->fill < diff_check_fill(curwin, lp->lnum + 1)) in botline_forw()
1755 lp->fill = diff_check_fill(curwin, lp->lnum) - lp->fill + 1; in botline_topline()
1769 lp->fill = diff_check_fill(curwin, lp->lnum) - lp->fill + 1; in topline_botline()
1789 linenr_T old_topline = curwin->w_topline; in scroll_cursor_top()
1791 linenr_T old_topfill = curwin->w_topfill; in scroll_cursor_top()
1807 used = curwin->w_cline_height; // includes filler lines above in scroll_cursor_top()
1808 if (curwin->w_cursor.lnum < curwin->w_topline) in scroll_cursor_top()
1812 if (hasFolding(curwin->w_cursor.lnum, &top, &bot)) in scroll_cursor_top()
1820 top = curwin->w_cursor.lnum - 1; in scroll_cursor_top()
1821 bot = curwin->w_cursor.lnum + 1; in scroll_cursor_top()
1829 extra += diff_check_fill(curwin, curwin->w_cursor.lnum); in scroll_cursor_top()
1856 if (used > curwin->w_height) in scroll_cursor_top()
1858 if (top < curwin->w_topline) in scroll_cursor_top()
1864 if ((new_topline >= curwin->w_topline || scrolled > min_scroll) in scroll_cursor_top()
1879 if (used > curwin->w_height) in scroll_cursor_top()
1887 if (new_topline < curwin->w_topline || always) in scroll_cursor_top()
1888 curwin->w_topline = new_topline; in scroll_cursor_top()
1889 if (curwin->w_topline > curwin->w_cursor.lnum) in scroll_cursor_top()
1890 curwin->w_topline = curwin->w_cursor.lnum; in scroll_cursor_top()
1892 curwin->w_topfill = diff_check_fill(curwin, curwin->w_topline); in scroll_cursor_top()
1893 if (curwin->w_topfill > 0 && extra > off) in scroll_cursor_top()
1895 curwin->w_topfill -= extra - off; in scroll_cursor_top()
1896 if (curwin->w_topfill < 0) in scroll_cursor_top()
1897 curwin->w_topfill = 0; in scroll_cursor_top()
1899 check_topfill(curwin, FALSE); in scroll_cursor_top()
1901 if (curwin->w_topline != old_topline in scroll_cursor_top()
1903 || curwin->w_topfill != old_topfill in scroll_cursor_top()
1906 curwin->w_valid &= in scroll_cursor_top()
1908 curwin->w_valid |= VALID_TOPLINE; in scroll_cursor_top()
1957 linenr_T old_topline = curwin->w_topline; in scroll_cursor_bot()
1961 int old_topfill = curwin->w_topfill; in scroll_cursor_bot()
1964 linenr_T old_botline = curwin->w_botline; in scroll_cursor_bot()
1965 linenr_T old_valid = curwin->w_valid; in scroll_cursor_bot()
1966 int old_empty_rows = curwin->w_empty_rows; in scroll_cursor_bot()
1970 cln = curwin->w_cursor.lnum; in scroll_cursor_bot()
1974 curwin->w_botline = cln + 1; in scroll_cursor_bot()
1978 for (curwin->w_topline = curwin->w_botline; in scroll_cursor_bot()
1979 curwin->w_topline > 1; in scroll_cursor_bot()
1980 curwin->w_topline = loff.lnum) in scroll_cursor_bot()
1982 loff.lnum = curwin->w_topline; in scroll_cursor_bot()
1984 if (loff.height == MAXCOL || used + loff.height > curwin->w_height) in scroll_cursor_bot()
1988 curwin->w_topfill = loff.fill; in scroll_cursor_bot()
1991 set_empty_rows(curwin, used); in scroll_cursor_bot()
1992 curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP; in scroll_cursor_bot()
1993 if (curwin->w_topline != old_topline in scroll_cursor_bot()
1995 || curwin->w_topfill != old_topfill in scroll_cursor_bot()
1998 curwin->w_valid &= ~(VALID_WROW|VALID_CROW); in scroll_cursor_bot()
2008 used = curwin->w_cline_height; in scroll_cursor_bot()
2014 if (cln >= curwin->w_botline) in scroll_cursor_bot()
2017 if (cln == curwin->w_botline) in scroll_cursor_bot()
2018 scrolled -= curwin->w_empty_rows; in scroll_cursor_bot()
2029 if (!hasFolding(curwin->w_cursor.lnum, &loff.lnum, &boff.lnum)) in scroll_cursor_bot()
2038 fill_below_window = diff_check_fill(curwin, curwin->w_botline) in scroll_cursor_bot()
2039 - curwin->w_filler_rows; in scroll_cursor_bot()
2049 && loff.lnum <= curwin->w_botline in scroll_cursor_bot()
2051 && (loff.lnum < curwin->w_botline in scroll_cursor_bot()
2063 if (used > curwin->w_height) in scroll_cursor_bot()
2065 if (loff.lnum >= curwin->w_botline in scroll_cursor_bot()
2067 && (loff.lnum > curwin->w_botline in scroll_cursor_bot()
2074 if (loff.lnum == curwin->w_botline in scroll_cursor_bot()
2079 scrolled -= curwin->w_empty_rows; in scroll_cursor_bot()
2087 if (used > curwin->w_height) in scroll_cursor_bot()
2093 if (boff.lnum >= curwin->w_botline in scroll_cursor_bot()
2095 || (boff.lnum + 1 == curwin->w_botline in scroll_cursor_bot()
2096 && boff.fill > curwin->w_filler_rows) in scroll_cursor_bot()
2102 if (boff.lnum == curwin->w_botline in scroll_cursor_bot()
2107 scrolled -= curwin->w_empty_rows; in scroll_cursor_bot()
2117 else if (used > curwin->w_height) in scroll_cursor_bot()
2124 boff.fill = curwin->w_topfill; in scroll_cursor_bot()
2126 boff.lnum = curwin->w_topline - 1; in scroll_cursor_bot()
2127 for (i = 0; i < scrolled && boff.lnum < curwin->w_botline; ) in scroll_cursor_bot()
2141 if (line_count >= curwin->w_height && line_count > min_scroll) in scroll_cursor_bot()
2151 if (curwin->w_topline == old_topline && set_topbot) in scroll_cursor_bot()
2153 curwin->w_botline = old_botline; in scroll_cursor_bot()
2154 curwin->w_empty_rows = old_empty_rows; in scroll_cursor_bot()
2155 curwin->w_valid = old_valid; in scroll_cursor_bot()
2157 curwin->w_valid |= VALID_TOPLINE; in scroll_cursor_bot()
2177 linenr_T old_topline = curwin->w_topline; in scroll_cursor_halfway()
2184 loff.lnum = boff.lnum = curwin->w_cursor.lnum; in scroll_cursor_halfway()
2204 if (used > curwin->w_height) in scroll_cursor_halfway()
2223 if (used > curwin->w_height) in scroll_cursor_halfway()
2233 if (!hasFolding(topline, &curwin->w_topline, NULL)) in scroll_cursor_halfway()
2235 curwin->w_topline = topline; in scroll_cursor_halfway()
2237 curwin->w_topfill = topfill; in scroll_cursor_halfway()
2238 if (old_topline > curwin->w_topline + curwin->w_height) in scroll_cursor_halfway()
2239 curwin->w_botfill = FALSE; in scroll_cursor_halfway()
2240 check_topfill(curwin, FALSE); in scroll_cursor_halfway()
2242 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE|VALID_BOTLINE_AP); in scroll_cursor_halfway()
2243 curwin->w_valid |= VALID_TOPLINE; in scroll_cursor_halfway()
2275 if (curwin->w_topline == 1) in cursor_correct()
2278 max_off = curwin->w_height / 2; in cursor_correct()
2283 if (curwin->w_botline == curbuf->b_ml.ml_line_count + 1 in cursor_correct()
2287 max_off = (curwin->w_height - 1) / 2; in cursor_correct()
2296 cln = curwin->w_cursor.lnum; in cursor_correct()
2297 if (cln >= curwin->w_topline + above_wanted in cursor_correct()
2298 && cln < curwin->w_botline - below_wanted in cursor_correct()
2300 && !hasAnyFolding(curwin) in cursor_correct()
2311 topline = curwin->w_topline; in cursor_correct()
2312 botline = curwin->w_botline - 1; in cursor_correct()
2315 above = curwin->w_topfill; in cursor_correct()
2316 below = curwin->w_filler_rows; in cursor_correct()
2341 above += diff_check_fill(curwin, topline + 1); in cursor_correct()
2347 curwin->w_cursor.lnum = topline; in cursor_correct()
2349 curwin->w_cursor.lnum = botline; in cursor_correct()
2352 if (cln < topline && curwin->w_topline > 1) in cursor_correct()
2354 curwin->w_cursor.lnum = topline; in cursor_correct()
2355 curwin->w_valid &= in cursor_correct()
2358 if (cln > botline && curwin->w_botline <= curbuf->b_ml.ml_line_count) in cursor_correct()
2360 curwin->w_cursor.lnum = botline; in cursor_correct()
2361 curwin->w_valid &= in cursor_correct()
2365 curwin->w_valid |= VALID_TOPLINE; in cursor_correct()
2381 linenr_T old_topline = curwin->w_topline; in onepage()
2400 ? ((curwin->w_topline >= curbuf->b_ml.ml_line_count - so) in onepage()
2401 && curwin->w_botline > curbuf->b_ml.ml_line_count) in onepage()
2402 : (curwin->w_topline == 1 in onepage()
2404 && curwin->w_topfill == in onepage()
2405 diff_check_fill(curwin, curwin->w_topline) in onepage()
2423 ++curwin->w_topline; in onepage()
2425 curwin->w_topline += p_window - 2; in onepage()
2426 if (curwin->w_topline > curbuf->b_ml.ml_line_count) in onepage()
2427 curwin->w_topline = curbuf->b_ml.ml_line_count; in onepage()
2428 curwin->w_cursor.lnum = curwin->w_topline; in onepage()
2430 else if (curwin->w_botline > curbuf->b_ml.ml_line_count) in onepage()
2433 curwin->w_topline = curbuf->b_ml.ml_line_count; in onepage()
2435 curwin->w_topfill = 0; in onepage()
2437 curwin->w_valid &= ~(VALID_WROW|VALID_CROW); in onepage()
2443 loff.lnum = curwin->w_botline; in onepage()
2445 loff.fill = diff_check_fill(curwin, loff.lnum) in onepage()
2446 - curwin->w_filler_rows; in onepage()
2449 curwin->w_topline = loff.lnum; in onepage()
2451 curwin->w_topfill = loff.fill; in onepage()
2452 check_topfill(curwin, FALSE); in onepage()
2454 curwin->w_cursor.lnum = curwin->w_topline; in onepage()
2455 curwin->w_valid &= ~(VALID_WCOL|VALID_CHEIGHT|VALID_WROW| in onepage()
2462 if (curwin->w_topline == 1) in onepage()
2473 --curwin->w_topline; in onepage()
2475 curwin->w_topline -= p_window - 2; in onepage()
2476 if (curwin->w_topline < 1) in onepage()
2477 curwin->w_topline = 1; in onepage()
2478 curwin->w_cursor.lnum = curwin->w_topline + p_window - 1; in onepage()
2479 if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) in onepage()
2480 curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; in onepage()
2487 loff.lnum = curwin->w_topline - 1; in onepage()
2489 loff.fill = diff_check_fill(curwin, loff.lnum + 1) in onepage()
2490 - curwin->w_topfill; in onepage()
2505 curwin->w_cursor.lnum = loff.lnum; in onepage()
2510 while (n <= curwin->w_height && loff.lnum >= 1) in onepage()
2520 curwin->w_topline = 1; in onepage()
2524 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE); in onepage()
2544 if (loff.lnum >= curwin->w_topline in onepage()
2546 && (loff.lnum > curwin->w_topline in onepage()
2547 || loff.fill >= curwin->w_topfill) in onepage()
2554 loff.fill = curwin->w_topfill; in onepage()
2555 if (curwin->w_topfill < diff_check_fill(curwin, in onepage()
2556 curwin->w_topline)) in onepage()
2558 if (curwin->w_topfill == loff.fill) in onepage()
2561 --curwin->w_topline; in onepage()
2563 curwin->w_topfill = 0; in onepage()
2566 comp_botline(curwin); in onepage()
2567 curwin->w_cursor.lnum = curwin->w_botline - 1; in onepage()
2568 curwin->w_valid &= in onepage()
2573 curwin->w_topline = loff.lnum; in onepage()
2575 curwin->w_topfill = loff.fill; in onepage()
2576 check_topfill(curwin, FALSE); in onepage()
2578 curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE); in onepage()
2590 curwin->w_valid &= ~(VALID_WCOL|VALID_WROW|VALID_VIRTCOL); in onepage()
2600 if (curwin->w_topline <= old_topline in onepage()
2603 curwin->w_topline = old_topline + 1; in onepage()
2605 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in onepage()
2610 else if (curwin->w_botline > curbuf->b_ml.ml_line_count) in onepage()
2611 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in onepage()
2635 int min_height = curwin->w_height - 2; in get_scroll_overlap()
2698 curwin->w_p_scr = (Prenum > curwin->w_height) ? in halfpage()
2699 curwin->w_height : Prenum; in halfpage()
2700 n = (curwin->w_p_scr <= curwin->w_height) ? in halfpage()
2701 curwin->w_p_scr : curwin->w_height; in halfpage()
2705 room = curwin->w_empty_rows; in halfpage()
2707 room += curwin->w_filler_rows; in halfpage()
2714 while (n > 0 && curwin->w_botline <= curbuf->b_ml.ml_line_count) in halfpage()
2717 if (curwin->w_topfill > 0) in halfpage()
2721 --curwin->w_topfill; in halfpage()
2726 i = PLINES_NOFILL(curwin->w_topline); in halfpage()
2731 (void)hasFolding(curwin->w_topline, NULL, &curwin->w_topline); in halfpage()
2733 ++curwin->w_topline; in halfpage()
2735 curwin->w_topfill = diff_check_fill(curwin, curwin->w_topline); in halfpage()
2738 if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) in halfpage()
2740 ++curwin->w_cursor.lnum; in halfpage()
2741 curwin->w_valid &= in halfpage()
2745 curwin->w_valid &= ~(VALID_CROW|VALID_WROW); in halfpage()
2753 if (curwin->w_p_diff) in halfpage()
2754 curwin->w_valid &= ~(VALID_BOTLINE|VALID_BOTLINE_AP); in halfpage()
2761 i = plines(curwin->w_botline); in halfpage()
2765 (void)hasFolding(curwin->w_botline, NULL, in halfpage()
2766 &curwin->w_botline); in halfpage()
2768 ++curwin->w_botline; in halfpage()
2770 } while (curwin->w_botline <= curbuf->b_ml.ml_line_count); in halfpage()
2780 if (hasAnyFolding(curwin)) in halfpage()
2783 && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) in halfpage()
2785 (void)hasFolding(curwin->w_cursor.lnum, NULL, in halfpage()
2786 &curwin->w_cursor.lnum); in halfpage()
2787 ++curwin->w_cursor.lnum; in halfpage()
2792 curwin->w_cursor.lnum += n; in halfpage()
2801 while (n > 0 && curwin->w_topline > 1) in halfpage()
2804 if (curwin->w_topfill < diff_check_fill(curwin, curwin->w_topline)) in halfpage()
2808 ++curwin->w_topfill; in halfpage()
2813 i = PLINES_NOFILL(curwin->w_topline - 1); in halfpage()
2817 --curwin->w_topline; in halfpage()
2819 (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL); in halfpage()
2822 curwin->w_topfill = 0; in halfpage()
2825 curwin->w_valid &= ~(VALID_CROW|VALID_WROW| in halfpage()
2828 if (curwin->w_cursor.lnum > 1) in halfpage()
2830 --curwin->w_cursor.lnum; in halfpage()
2831 curwin->w_valid &= ~(VALID_VIRTCOL|VALID_CHEIGHT|VALID_WCOL); in halfpage()
2840 if (curwin->w_cursor.lnum <= (linenr_T)n) in halfpage()
2841 curwin->w_cursor.lnum = 1; in halfpage()
2844 if (hasAnyFolding(curwin)) in halfpage()
2846 while (--n >= 0 && curwin->w_cursor.lnum > 1) in halfpage()
2848 --curwin->w_cursor.lnum; in halfpage()
2849 (void)hasFolding(curwin->w_cursor.lnum, in halfpage()
2850 &curwin->w_cursor.lnum, NULL); in halfpage()
2855 curwin->w_cursor.lnum -= n; in halfpage()
2863 check_topfill(curwin, !flag); in halfpage()
2873 linenr_T line = curwin->w_cursor.lnum; in do_check_cursorbind()
2874 colnr_T col = curwin->w_cursor.col; in do_check_cursorbind()
2875 colnr_T coladd = curwin->w_cursor.coladd; in do_check_cursorbind()
2876 colnr_T curswant = curwin->w_curswant; in do_check_cursorbind()
2877 int set_curswant = curwin->w_set_curswant; in do_check_cursorbind()
2878 win_T *old_curwin = curwin; in do_check_cursorbind()
2888 FOR_ALL_WINDOWS(curwin) in do_check_cursorbind()
2890 curbuf = curwin->w_buffer; in do_check_cursorbind()
2892 if (curwin != old_curwin && curwin->w_p_crb) in do_check_cursorbind()
2895 if (curwin->w_p_diff) in do_check_cursorbind()
2896 curwin->w_cursor.lnum = in do_check_cursorbind()
2900 curwin->w_cursor.lnum = line; in do_check_cursorbind()
2901 curwin->w_cursor.col = col; in do_check_cursorbind()
2902 curwin->w_cursor.coladd = coladd; in do_check_cursorbind()
2903 curwin->w_curswant = curswant; in do_check_cursorbind()
2904 curwin->w_set_curswant = set_curswant; in do_check_cursorbind()
2912 if (curwin->w_p_cul || curwin->w_p_cuc) in do_check_cursorbind()
2922 if (!curwin->w_p_scb) in do_check_cursorbind()
2924 curwin->w_redr_status = TRUE; in do_check_cursorbind()
2933 curwin = old_curwin; in do_check_cursorbind()