diff options
Diffstat (limited to 'src/nvim/drawscreen.c')
-rw-r--r-- | src/nvim/drawscreen.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c index 7ebd4f2866..66c9b2be29 100644 --- a/src/nvim/drawscreen.c +++ b/src/nvim/drawscreen.c @@ -2029,14 +2029,7 @@ static void win_update(win_T *wp) } foldinfo_T cursorline_fi = { 0 }; - wp->w_cursorline = win_cursorline_standout(wp) ? wp->w_cursor.lnum : 0; - if (wp->w_p_cul) { - // Make sure that the cursorline on a closed fold is redrawn - cursorline_fi = fold_info(wp, wp->w_cursor.lnum); - if (cursorline_fi.fi_level != 0 && cursorline_fi.fi_lines > 0) { - wp->w_cursorline = cursorline_fi.fi_lnum; - } - } + win_update_cursorline(wp, &cursorline_fi); win_check_ns_hl(wp); @@ -2862,3 +2855,18 @@ bool win_cursorline_standout(const win_T *wp) { return wp->w_p_cul || (wp->w_p_cole > 0 && !conceal_cursor_line(wp)); } + +/// Update w_cursorline, taking care to set it to the to the start of a closed fold. +/// +/// @param[out] foldinfo foldinfo for the cursor line +void win_update_cursorline(win_T *wp, foldinfo_T *foldinfo) +{ + wp->w_cursorline = win_cursorline_standout(wp) ? wp->w_cursor.lnum : 0; + if (wp->w_p_cul) { + // Make sure that the cursorline on a closed fold is redrawn + *foldinfo = fold_info(wp, wp->w_cursor.lnum); + if (foldinfo->fi_level != 0 && foldinfo->fi_lines > 0) { + wp->w_cursorline = foldinfo->fi_lnum; + } + } +} |