perf: only redraw concealed line if cursor has moved horizontally

Building upon #17889, this moves conceal redrawing logic into move.c, so
that concealed line is only redrawn if cursor has moved horizontally.
This commit is contained in:
zeertzjq
2022-03-28 06:45:15 +08:00
parent 9ce2c73180
commit 595c1a724a
4 changed files with 62 additions and 19 deletions

View File

@@ -1480,8 +1480,6 @@ bool edit(int cmdchar, bool startln, long count)
/// @param ready not busy with something
static void ins_redraw(bool ready)
{
bool conceal_cursor_moved = false;
if (char_avail()) {
return;
}
@@ -1504,7 +1502,6 @@ static void ins_redraw(bool ready)
update_curswant();
ins_apply_autocmds(EVENT_CURSORMOVEDI);
}
conceal_cursor_moved = true;
curwin->w_last_cursormoved = curwin->w_cursor;
}
@@ -1560,11 +1557,6 @@ static void ins_redraw(bool ready)
curbuf->b_changed_invalid = false;
}
if (curwin->w_p_cole > 0 && conceal_cursor_line(curwin)
&& conceal_cursor_moved) {
redrawWinline(curwin, curwin->w_cursor.lnum);
}
pum_check_clear();
if (must_redraw) {
update_screen(0);