1
0
forked from aniani/vim

patch 9.0.0551: mode message is delayed when :echowin was used

Problem:    Mode message is delayed when :echowin was used. (Maxim Kim)
Solution:   Save and restore msg_didout in :echowin. (closes #11193)
This commit is contained in:
Bram Moolenaar 2022-09-22 19:02:38 +01:00
parent 62de54b48d
commit f87eeb43fb
2 changed files with 17 additions and 4 deletions

View File

@ -4557,6 +4557,13 @@ popup_hide_message_win(void)
popup_hide(message_win); popup_hide(message_win);
} }
// Values saved in start_echowindow() and restored in end_echowindow()
static int save_msg_didout = FALSE;
static int save_msg_col = 0;
// Values saved in end_echowindow() and restored in start_echowindow()
static int ew_msg_didout = FALSE;
static int ew_msg_col = 0;
/* /*
* Invoked before outputting a message for ":echowindow". * Invoked before outputting a message for ":echowindow".
*/ */
@ -4564,6 +4571,10 @@ popup_hide_message_win(void)
start_echowindow(void) start_echowindow(void)
{ {
in_echowindow = TRUE; in_echowindow = TRUE;
save_msg_didout = msg_didout;
save_msg_col = msg_col;
msg_didout = ew_msg_didout;
msg_col = ew_msg_col;
} }
/* /*
@ -4579,10 +4590,10 @@ end_echowindow(void)
redraw_cmd(FALSE); redraw_cmd(FALSE);
// do not overwrite messages // do not overwrite messages
// TODO: only for message window ew_msg_didout = TRUE;
msg_didout = TRUE; ew_msg_col = msg_col == 0 ? 1 : msg_col;
if (msg_col == 0) msg_didout = save_msg_didout;
msg_col = 1; msg_col = save_msg_col;
} }
#endif #endif

View File

@ -699,6 +699,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 */
/**/
551,
/**/ /**/
550, 550,
/**/ /**/