refactor(plines.c): update outdated comments (#24264)

This commit is contained in:
zeertzjq
2023-07-06 04:36:22 +08:00
committed by GitHub
parent 1de82e16c1
commit a0c9c04f00
2 changed files with 41 additions and 25 deletions

View File

@@ -94,8 +94,8 @@ int plines_win_nofill(win_T *wp, linenr_T lnum, bool winheight)
return lines;
}
/// @Return number of window lines physical line "lnum" will occupy in window
/// "wp". Does not care about folding, 'wrap' or 'diff'.
/// Get number of window lines physical line "lnum" will occupy in window "wp".
/// Does not care about folding, 'wrap' or filler lines.
int plines_win_nofold(win_T *wp, linenr_T lnum)
{
char *s = ml_get_buf(wp->w_buffer, lnum, false);
@@ -179,10 +179,12 @@ int plines_win_col(win_T *wp, linenr_T lnum, long column)
return lines;
}
/// Get the number of screen lines lnum takes up. This takes care of
/// both folds and topfill, and limits to the current window height.
/// Get the number of screen lines buffer line "lnum" will take in window "wp".
/// This takes care of both folds and topfill.
///
/// @param[in] wp window line is in
/// XXX: Because of topfill, this only makes sense when lnum >= wp->w_topline.
///
/// @param[in] wp window the line is in
/// @param[in] lnum line number
/// @param[out] nextp if not NULL, the line after a fold
/// @param[out] foldedp if not NULL, whether lnum is on a fold
@@ -201,6 +203,16 @@ int plines_win_full(win_T *wp, linenr_T lnum, linenr_T *const nextp, bool *const
(lnum == wp->w_topline ? wp->w_topfill : win_get_fill(wp, lnum)));
}
/// Get the number of screen lines a range of buffer lines will take in window "wp".
/// This takes care of both folds and topfill.
///
/// XXX: Because of topfill, this only makes sense when first >= wp->w_topline.
/// XXX: This limits the size of each line to current window height.
///
/// @param first first line number
/// @param last last line number
///
/// @see win_text_height
int plines_m_win(win_T *wp, linenr_T first, linenr_T last)
{
int count = 0;
@@ -282,7 +294,7 @@ unsigned win_linetabsize(win_T *wp, linenr_T lnum, char *line, colnr_T len)
}
/// Return the number of cells line "lnum" of window "wp" will take on the
/// screen, taking into account the size of a tab and text properties.
/// screen, taking into account the size of a tab and inline virtual text.
unsigned linetabsize(win_T *wp, linenr_T lnum)
{
return win_linetabsize(wp, lnum, ml_get_buf(wp->w_buffer, lnum, false), (colnr_T)MAXCOL);
@@ -294,7 +306,7 @@ void win_linetabsize_cts(chartabsize_T *cts, colnr_T len)
MB_PTR_ADV(cts->cts_ptr)) {
cts->cts_vcol += win_lbr_chartabsize(cts, NULL);
}
// check for a virtual text after the end of the line
// check for inline virtual text after the end of the line
if (len == MAXCOL && cts->cts_has_virt_text && *cts->cts_ptr == NUL) {
(void)win_lbr_chartabsize(cts, NULL);
cts->cts_vcol += cts->cts_cur_text_width_left + cts->cts_cur_text_width_right;
@@ -333,9 +345,7 @@ void clear_chartabsize_arg(chartabsize_T *cts)
/// like win_chartabsize(), but also check for line breaks on the screen
///
/// @param line
/// @param s
/// @param col
/// @param cts
///
/// @return The number of characters taken up on the screen.
int lbr_chartabsize(chartabsize_T *cts)
@@ -352,9 +362,7 @@ int lbr_chartabsize(chartabsize_T *cts)
/// Call lbr_chartabsize() and advance the pointer.
///
/// @param line
/// @param s
/// @param col
/// @param cts
///
/// @return The number of characters take up on the screen.
int lbr_chartabsize_adv(chartabsize_T *cts)
@@ -399,7 +407,7 @@ int win_lbr_chartabsize(chartabsize_T *cts, int *headp)
return win_chartabsize(wp, s, vcol);
}
// First get normal size, without 'linebreak' or virtual text
// First get normal size, without 'linebreak' or inline virtual text
int size = win_chartabsize(wp, s, vcol);
if (cts->cts_has_virt_text) {
@@ -561,9 +569,7 @@ int win_lbr_chartabsize(chartabsize_T *cts, int *headp)
/// 'wrap' is on. This means we need to check for a double-byte character that
/// doesn't fit at the end of the screen line.
///
/// @param wp
/// @param s
/// @param col
/// @param cts
/// @param headp
///
/// @return The number of characters take up on the screen.
@@ -592,8 +598,18 @@ static int win_nolbr_chartabsize(chartabsize_T *cts, int *headp)
return n;
}
int64_t win_get_text_height(win_T *const wp, const linenr_T first, const linenr_T last,
const int64_t start_vcol, const int64_t end_vcol)
/// Get the number of screen lines a range of text will take in window "wp".
///
/// @param start_lnum first line number
/// @param start_vcol >= 0: virtual column on "start_lnum" where counting starts,
/// rounded down to full screen lines
/// < 0: count a full "start_lnum", including filler lines above
/// @param end_lnum last line number
/// @param end_vcol >= 0: virtual column on "end_lnum" where counting ends,
/// rounded up to full screen lines
/// < 0: count a full "end_lnum", not including fillers lines below
int64_t win_text_height(win_T *const wp, const linenr_T start_lnum, const int64_t start_vcol,
const linenr_T end_lnum, const int64_t end_vcol)
{
int width1 = 0;
int width2 = 0;
@@ -606,7 +622,7 @@ int64_t win_get_text_height(win_T *const wp, const linenr_T first, const linenr_
int64_t size = 0;
int64_t height_nofill = 0;
linenr_T lnum = first;
linenr_T lnum = start_lnum;
if (start_vcol >= 0) {
linenr_T lnum_next = lnum;
@@ -620,7 +636,7 @@ int64_t win_get_text_height(win_T *const wp, const linenr_T first, const linenr_
lnum = lnum_next + 1;
}
while (lnum <= last) {
while (lnum <= end_lnum) {
linenr_T lnum_next = lnum;
const bool folded = hasFoldingWin(wp, lnum, &lnum, &lnum_next, true, NULL);
height_nofill = folded ? 1 : plines_win_nofill(wp, lnum, false);

View File

@@ -1052,19 +1052,19 @@ void ui_ext_win_viewport(win_T *wp)
|| (cur_topline == last_topline && wp->w_skipcol < last_skipcol)) {
if (last_topline > 0 && cur_botline < last_topline) {
// Scrolling too many lines: only give an approximate "scroll_delta".
delta -= win_get_text_height(wp, cur_topline, cur_botline, wp->w_skipcol, 0);
delta -= win_text_height(wp, cur_topline, wp->w_skipcol, cur_botline, 0);
delta -= last_topline - cur_botline;
} else {
delta -= win_get_text_height(wp, cur_topline, last_topline, wp->w_skipcol, last_skipcol);
delta -= win_text_height(wp, cur_topline, wp->w_skipcol, last_topline, last_skipcol);
}
} else if (cur_topline > last_topline
|| (cur_topline == last_topline && wp->w_skipcol > last_skipcol)) {
if (last_botline > 0 && cur_topline > last_botline) {
// Scrolling too many lines: only give an approximate "scroll_delta".
delta += win_get_text_height(wp, last_topline, last_botline, last_skipcol, 0);
delta += win_text_height(wp, last_topline, last_skipcol, last_botline, 0);
delta += cur_topline - last_botline;
} else {
delta += win_get_text_height(wp, last_topline, cur_topline, last_skipcol, wp->w_skipcol);
delta += win_text_height(wp, last_topline, last_skipcol, cur_topline, wp->w_skipcol);
}
}
delta += last_topfill;