mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
patch 8.2.4707: redrawing could be a bit more efficient
Problem: Redrawing could be a bit more efficient. Solution: Optimize redrawing. (closes #10105)
This commit is contained in:
@@ -640,9 +640,13 @@ changed_common(
|
|||||||
if (hasAnyFolding(wp))
|
if (hasAnyFolding(wp))
|
||||||
set_topline(wp, wp->w_topline);
|
set_topline(wp, wp->w_topline);
|
||||||
#endif
|
#endif
|
||||||
// Relative numbering may require updating more.
|
// If lines have been added or removed, relative numbering always
|
||||||
|
// requires a redraw.
|
||||||
if (wp->w_p_rnu && xtra != 0)
|
if (wp->w_p_rnu && xtra != 0)
|
||||||
redraw_win_later(wp, SOME_VALID);
|
{
|
||||||
|
wp->w_last_cursor_lnum_rnu = 0;
|
||||||
|
redraw_win_later(wp, 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
|
||||||
// "VALID" if it's below the change.
|
// "VALID" if it's below the change.
|
||||||
|
21
src/edit.c
21
src/edit.c
@@ -293,14 +293,9 @@ edit(
|
|||||||
conceal_check_cursor_line(cursor_line_was_concealed);
|
conceal_check_cursor_line(cursor_line_was_concealed);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Need to recompute the cursor position, it might move when the cursor
|
// need to position cursor again when on a TAB
|
||||||
// is on a TAB or special character.
|
if (gchar_cursor() == TAB)
|
||||||
// ptr2cells() treats a TAB character as double-width.
|
curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL);
|
||||||
if (ptr2cells(ml_get_cursor()) > 1)
|
|
||||||
{
|
|
||||||
curwin->w_valid &= ~VALID_VIRTCOL;
|
|
||||||
curs_columns(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable langmap or IME, indicated by 'iminsert'.
|
* Enable langmap or IME, indicated by 'iminsert'.
|
||||||
@@ -3149,8 +3144,7 @@ mb_replace_pop_ins(int cc)
|
|||||||
replace_push(c);
|
replace_push(c);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
buf[0] = c;
|
buf[0] = c;
|
||||||
for (i = 1; i < n; ++i)
|
for (i = 1; i < n; ++i)
|
||||||
buf[i] = replace_pop();
|
buf[i] = replace_pop();
|
||||||
@@ -3163,7 +3157,7 @@ mb_replace_pop_ins(int cc)
|
|||||||
replace_push(buf[i]);
|
replace_push(buf[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3702,8 +3696,9 @@ ins_esc(
|
|||||||
|
|
||||||
State = NORMAL;
|
State = NORMAL;
|
||||||
trigger_modechanged();
|
trigger_modechanged();
|
||||||
// need to position cursor again (e.g. when on a TAB )
|
// need to position cursor again when on a TAB
|
||||||
changed_cline_bef_curs();
|
if (gchar_cursor() == TAB)
|
||||||
|
curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL);
|
||||||
|
|
||||||
setmouse();
|
setmouse();
|
||||||
#ifdef CURSOR_SHAPE
|
#ifdef CURSOR_SHAPE
|
||||||
|
8
src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump
Normal file
8
src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|1+0&#ffffff0|2|3|4|5|6|7|8+0&#e0e0e08|9+0&#ffffff0| @65
|
||||||
|
|a| @5> |b| @65
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|-+2#0000000&@1| |(|i|n|s|e|r|t|)| |-@1| +0&&@42|2|,|2|-|8| @8|A|l@1|
|
@@ -610,6 +610,14 @@ func Test_cursorcolumn_insert_on_tab()
|
|||||||
call TermWait(buf)
|
call TermWait(buf)
|
||||||
call VerifyScreenDump(buf, 'Test_cursorcolumn_insert_on_tab_2', {})
|
call VerifyScreenDump(buf, 'Test_cursorcolumn_insert_on_tab_2', {})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, "\<C-O>")
|
||||||
|
call TermWait(buf)
|
||||||
|
call VerifyScreenDump(buf, 'Test_cursorcolumn_insert_on_tab_3', {})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, 'i')
|
||||||
|
call TermWait(buf)
|
||||||
|
call VerifyScreenDump(buf, 'Test_cursorcolumn_insert_on_tab_2', {})
|
||||||
|
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
call delete('Xcuc_insert_on_tab')
|
call delete('Xcuc_insert_on_tab')
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -746,6 +746,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 */
|
||||||
|
/**/
|
||||||
|
4707,
|
||||||
/**/
|
/**/
|
||||||
4706,
|
4706,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user