]> granicus.if.org Git - vim/commitdiff
patch 9.0.0551: mode message is delayed when :echowin was used v9.0.0551
authorBram Moolenaar <Bram@vim.org>
Thu, 22 Sep 2022 18:02:38 +0000 (19:02 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 22 Sep 2022 18:02:38 +0000 (19:02 +0100)
Problem:    Mode message is delayed when :echowin was used. (Maxim Kim)
Solution:   Save and restore msg_didout in :echowin. (closes #11193)

src/popupwin.c
src/version.c

index fce4a2b8111b2e62abc657b2bc832ede866909ea..4cc7dec6fa53c9838a82009fc226a40ee55ebcd2 100644 (file)
@@ -4557,6 +4557,13 @@ popup_hide_message_win(void)
        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 @@ popup_hide_message_win(void)
 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 @@ end_echowindow(void)
        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
 
index 5d6951c879265836bd8a6848c24c4edf6ea8453b..c3b6c12903a507f0e9569cd05c6aa5b03b8ebbb6 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    551,
 /**/
     550,
 /**/