fix(float): wrong position when bufpos is set

Problem: when lnum in bufpos is out of range the position of float is wired.

Solution: avoid the height value out of buffer line range.
This commit is contained in:
glepnir
2024-04-20 12:01:28 +08:00
parent 4d52b0cf67
commit 5f18dd3013
3 changed files with 40 additions and 2 deletions

View File

@@ -221,7 +221,7 @@ void win_config_float(win_T *wp, WinConfig fconfig)
row += row_off;
col += col_off;
if (wp->w_config.bufpos.lnum >= 0) {
pos_T pos = { wp->w_config.bufpos.lnum + 1,
pos_T pos = { MIN(wp->w_config.bufpos.lnum + 1, parent->w_buffer->b_ml.ml_line_count),
wp->w_config.bufpos.col, 0 };
int trow, tcol, tcolc, tcole;
textpos2screenpos(parent, &pos, &trow, &tcol, &tcolc, &tcole, true);