aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorluukvbaal <luukvbaal@gmail.com>2025-03-04 19:45:21 +0100
committerGitHub <noreply@github.com>2025-03-04 19:45:21 +0100
commit81ea44fa6aca27e6871d5baa158e2a5bcfa41981 (patch)
tree5730330d62637b7b04c5ca153b39e68256ad72ea /src
parent7d5866d471746ca68981e57884eaaeb8dea57f81 (diff)
downloadrneovim-81ea44fa6aca27e6871d5baa158e2a5bcfa41981.tar.gz
rneovim-81ea44fa6aca27e6871d5baa158e2a5bcfa41981.tar.bz2
rneovim-81ea44fa6aca27e6871d5baa158e2a5bcfa41981.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/drawscreen.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c
index a645dced40..c17bc2d999 100644
--- a/src/nvim/drawscreen.c
+++ b/src/nvim/drawscreen.c
@@ -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;