mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 03:48:18 +00:00
refactor(plines.c): update outdated comments (#24264)
This commit is contained in:
@@ -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);
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user