mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.2.4644: redrawing too often when 'relativenumber' is set
Problem: Redrawing too often when 'relativenumber' is set. Solution: Only redraw when the cursor line changed. (Lewis Russell, closes #10040)
This commit is contained in:
committed by
Bram Moolenaar
parent
24565cf27b
commit
1624639ec8
@@ -641,7 +641,7 @@ changed_common(
|
|||||||
set_topline(wp, wp->w_topline);
|
set_topline(wp, wp->w_topline);
|
||||||
#endif
|
#endif
|
||||||
// Relative numbering may require updating more.
|
// Relative numbering may require updating more.
|
||||||
if (wp->w_p_rnu)
|
if (wp->w_p_rnu && xtra != 0)
|
||||||
redraw_win_later(wp, SOME_VALID);
|
redraw_win_later(wp, SOME_VALID);
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
// Cursor line highlighting probably need to be updated with
|
// Cursor line highlighting probably need to be updated with
|
||||||
|
@@ -2507,11 +2507,11 @@ win_update(win_T *wp)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (wp->w_p_rnu)
|
if (wp->w_p_rnu && wp->w_last_cursor_lnum_rnu != wp->w_cursor.lnum)
|
||||||
{
|
{
|
||||||
#ifdef FEAT_FOLDING
|
#ifdef FEAT_FOLDING
|
||||||
// 'relativenumber' set: The text doesn't need to be drawn, but
|
// 'relativenumber' set and the cursor moved vertically: The
|
||||||
// the number column nearly always does.
|
// text doesn't need to be drawn, but the number column does.
|
||||||
fold_count = foldedCount(wp, lnum, &win_foldinfo);
|
fold_count = foldedCount(wp, lnum, &win_foldinfo);
|
||||||
if (fold_count != 0)
|
if (fold_count != 0)
|
||||||
fold_line(wp, fold_count, &win_foldinfo, lnum, row);
|
fold_line(wp, fold_count, &win_foldinfo, lnum, row);
|
||||||
@@ -2553,6 +2553,7 @@ win_update(win_T *wp)
|
|||||||
// update w_last_cursorline.
|
// update w_last_cursorline.
|
||||||
wp->w_last_cursorline = wp->w_p_cul ? wp->w_cursor.lnum : 0;
|
wp->w_last_cursorline = wp->w_p_cul ? wp->w_cursor.lnum : 0;
|
||||||
#endif
|
#endif
|
||||||
|
wp->w_last_cursor_lnum_rnu = wp->w_p_rnu ? wp->w_cursor.lnum : 0;
|
||||||
|
|
||||||
#ifdef FEAT_VTP
|
#ifdef FEAT_VTP
|
||||||
// Rewrite the character at the end of the screen line.
|
// Rewrite the character at the end of the screen line.
|
||||||
|
@@ -3465,6 +3465,9 @@ struct window_S
|
|||||||
colnr_T w_old_visual_col; // last known start of visual part
|
colnr_T w_old_visual_col; // last known start of visual part
|
||||||
colnr_T w_old_curswant; // last known value of Curswant
|
colnr_T w_old_curswant; // last known value of Curswant
|
||||||
|
|
||||||
|
linenr_T w_last_cursor_lnum_rnu; // cursor lnum when 'rnu' was last
|
||||||
|
// redrawn
|
||||||
|
|
||||||
lcs_chars_T w_lcs_chars; // 'listchars' characters
|
lcs_chars_T w_lcs_chars; // 'listchars' characters
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
4644,
|
||||||
/**/
|
/**/
|
||||||
4643,
|
4643,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user