inccommand: Ignore :redraw during preview

closes #9777
This commit is contained in:
Justin M. Keyes
2019-03-25 03:27:24 +01:00
parent 2c34a10aa2
commit dd9554a820
2 changed files with 35 additions and 6 deletions

View File

@@ -7807,11 +7807,12 @@ static void ex_redir(exarg_T *eap)
redir_off = FALSE; redir_off = FALSE;
} }
/* /// ":redraw": force redraw
* ":redraw": force redraw
*/
static void ex_redraw(exarg_T *eap) static void ex_redraw(exarg_T *eap)
{ {
if (State & CMDPREVIEW) {
return; // Ignore :redraw during 'inccommand' preview. #9777
}
int r = RedrawingDisabled; int r = RedrawingDisabled;
int p = p_lz; int p = p_lz;
@@ -7840,11 +7841,12 @@ static void ex_redraw(exarg_T *eap)
ui_flush(); ui_flush();
} }
/* /// ":redrawstatus": force redraw of status line(s)
* ":redrawstatus": force redraw of status line(s)
*/
static void ex_redrawstatus(exarg_T *eap) static void ex_redrawstatus(exarg_T *eap)
{ {
if (State & CMDPREVIEW) {
return; // Ignore :redrawstatus during 'inccommand' preview. #9777
}
int r = RedrawingDisabled; int r = RedrawingDisabled;
int p = p_lz; int p = p_lz;

View File

@@ -2607,3 +2607,30 @@ it(':substitute with inccommand during :terminal activity', function()
end) end)
end) end)
it(':substitute with inccommand, timer-induced :redraw #9777', function()
local screen = Screen.new(30,12)
clear()
command('set cmdwinheight=3')
command('call timer_start(10, {-> execute("redraw")}, {"repeat":-1})')
command('call timer_start(10, {-> execute("redrawstatus")}, {"repeat":-1})')
common_setup(screen, 'split', 'foo bar baz\nbar baz fox\nbar foo baz')
feed('gg')
feed(':%s/foo/ZZZ')
sleep(20) -- Allow some timer activity.
screen:expect([[
{12:ZZZ} bar baz |
bar baz fox |
bar {12:ZZZ} baz |
{15:~ }|
{15:~ }|
{15:~ }|
{11:[No Name] [+] }|
|1| {12:ZZZ} bar baz |
|3| bar {12:ZZZ} baz |
{15:~ }|
{10:[Preview] }|
:%s/foo/ZZZ^ |
]])
end)