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

patch 8.1.0374: moving the cursor is slow when 'relativenumber' is set

Problem:    Moving the cursor is slow when 'relativenumber' is set.
Solution:   Only redraw the number column, not all lines.
This commit is contained in:
Bram Moolenaar
2018-09-12 23:15:48 +02:00
parent 1b7fefcbce
commit bd9a53c06c
3 changed files with 210 additions and 188 deletions

View File

@@ -145,21 +145,25 @@ redraw_for_cursorline(win_T *wp)
# endif
)
{
#ifdef FEAT_SYN_HL
if (!wp->w_p_rnu && wp->w_redr_type <= VALID && 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);
redrawWinline(wp, wp->w_cursor.lnum, FALSE);
if (wp->w_p_rnu)
// win_line() will redraw the number column only.
redraw_win_later(wp, VALID);
}
else
#endif
redraw_win_later(wp, SOME_VALID);
#ifdef FEAT_SYN_HL
last_cursorline = wp->w_cursor.lnum;
if (wp->w_p_cul)
{
if (wp->w_redr_type <= VALID && 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);
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;
}
#endif
}
}