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)
diff --git a/src/popupwin.c b/src/popupwin.c
index fce4a2b..4cc7dec 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -4557,6 +4557,13 @@
 	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".
  */
@@ -4564,6 +4571,10 @@
 start_echowindow(void)
 {
     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 @@
 	redraw_cmd(FALSE);
 
     // do not overwrite messages
-    // TODO: only for message window
-    msg_didout = TRUE;
-    if (msg_col == 0)
-	msg_col = 1;
+    ew_msg_didout = TRUE;
+    ew_msg_col = msg_col == 0 ? 1 : msg_col;
+    msg_didout = save_msg_didout;
+    msg_col = save_msg_col;
 }
 #endif