mirror of
https://github.com/neovim/neovim.git
synced 2025-10-15 22:36:09 +00:00
feat(api): add "max_height" argument to nvim_win_text_height (#32835)
Useful to e.g. limit the height to the window height, avoiding unnecessary work. Or to find out how many buffer lines beyond "start_row" take up a certain number of logical lines (returned in "end_row" and "end_vcol").
This commit is contained in:
@@ -933,22 +933,26 @@ void ui_ext_win_viewport(win_T *wp)
|
||||
last_botline = MIN(last_botline, line_count);
|
||||
if (cur_topline < last_topline
|
||||
|| (cur_topline == last_topline && wp->w_skipcol < last_skipcol)) {
|
||||
int64_t vcole = last_skipcol;
|
||||
linenr_T lnume = last_topline;
|
||||
if (last_topline > 0 && cur_botline < last_topline) {
|
||||
// Scrolling too many lines: only give an approximate "scroll_delta".
|
||||
delta -= win_text_height(wp, cur_topline, wp->w_skipcol, cur_botline, 0, NULL);
|
||||
delta -= last_topline - cur_botline;
|
||||
} else {
|
||||
delta -= win_text_height(wp, cur_topline, wp->w_skipcol, last_topline, last_skipcol, NULL);
|
||||
lnume = cur_botline;
|
||||
vcole = 0;
|
||||
}
|
||||
delta -= win_text_height(wp, cur_topline, wp->w_skipcol, &lnume, &vcole, NULL, INT64_MAX);
|
||||
} else if (cur_topline > last_topline
|
||||
|| (cur_topline == last_topline && wp->w_skipcol > last_skipcol)) {
|
||||
int64_t vcole = wp->w_skipcol;
|
||||
linenr_T lnume = cur_topline;
|
||||
if (last_botline > 0 && cur_topline > last_botline) {
|
||||
// Scrolling too many lines: only give an approximate "scroll_delta".
|
||||
delta += win_text_height(wp, last_topline, last_skipcol, last_botline, 0, NULL);
|
||||
delta += cur_topline - last_botline;
|
||||
} else {
|
||||
delta += win_text_height(wp, last_topline, last_skipcol, cur_topline, wp->w_skipcol, NULL);
|
||||
lnume = last_botline;
|
||||
vcole = 0;
|
||||
}
|
||||
delta += win_text_height(wp, last_topline, last_skipcol, &lnume, &vcole, NULL, INT64_MAX);
|
||||
}
|
||||
delta += last_topfill;
|
||||
delta -= wp->w_topfill;
|
||||
|
Reference in New Issue
Block a user