0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.0448: cursorline not removed when using 'cursorbind'

Problem:    Cursorline not removed when using 'cursorbind'. (Justin Keyes)
Solution:   Store the last cursor line per window. (closes #3488)
This commit is contained in:
Bram Moolenaar
2018-10-02 18:26:10 +02:00
parent 586c70cdfe
commit 4a5abbd613
7 changed files with 99 additions and 9 deletions

View File

@@ -117,12 +117,10 @@ comp_botline(win_T *wp)
}
#ifdef FEAT_SYN_HL
static linenr_T last_cursorline = 0;
void
reset_cursorline(void)
{
last_cursorline = 0;
curwin->w_last_cursorline = 0;
}
#endif
@@ -150,18 +148,18 @@ redraw_for_cursorline(win_T *wp)
#ifdef FEAT_SYN_HL
if (wp->w_p_cul)
{
if (wp->w_redr_type <= VALID && last_cursorline != 0)
if (wp->w_redr_type <= VALID && wp->w_last_cursorline != 0)
{
// "last_cursorline" may be set for another window, worst case
// we redraw too much. This is optimized for moving the cursor
// around in the same window.
redrawWinline(wp, last_cursorline, FALSE);
// "w_last_cursorline" may be outdated, worst case we redraw
// too much. This is optimized for moving the cursor around in
// the current window.
redrawWinline(wp, wp->w_last_cursorline, FALSE);
redrawWinline(wp, wp->w_cursor.lnum, FALSE);
redraw_win_later(wp, VALID);
}
else
redraw_win_later(wp, SOME_VALID);
last_cursorline = wp->w_cursor.lnum;
wp->w_last_cursorline = wp->w_cursor.lnum;
}
#endif
}