fix(display): adjust winline info for concealed lines below last line (#32708)

Problem:  Last line in a window does not store correct `wl_lastlnum` if
          lines below it are concealed (resulting in e.g. incorrect
          cursor row).
Solution: Increment `wl_lastlnum` while it points to a line above a
          concealed line.
This commit is contained in:
luukvbaal
2025-03-04 19:45:21 +01:00
committed by GitHub
parent 7d5866d471
commit 81ea44fa6a
2 changed files with 25 additions and 0 deletions

View File

@@ -2319,6 +2319,13 @@ static void win_update(win_T *wp)
wp->w_lines[idx].wl_lastlnum = lnum + foldinfo.fi_lines;
did_update = DID_FOLD;
}
// Adjust "wl_lastlnum" for concealed lines below the last line in the window.
while (row == wp->w_grid.rows
&& decor_conceal_line(wp, wp->w_lines[idx].wl_lastlnum, false)) {
wp->w_lines[idx].wl_lastlnum++;
hasFolding(wp, wp->w_lines[idx].wl_lastlnum, NULL, &wp->w_lines[idx].wl_lastlnum);
}
}
wp->w_lines[idx].wl_lnum = lnum;