changeset 18160:770987511384 v8.1.2075

patch 8.1.2075: get many log messages when waiting for a typed character Commit: https://github.com/vim/vim/commit/101e99207f813ca48a4c0787eed9eb8bf67fba5a Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 25 21:43:11 2019 +0200 patch 8.1.2075: get many log messages when waiting for a typed character Problem: Get many log messages when waiting for a typed character. Solution: Do not repeat the repeated messages when nothing happens.
author Bram Moolenaar <Bram@vim.org>
date Wed, 25 Sep 2019 21:45:03 +0200
parents edb8178cb67f
children 94e3c1e4d5ae
files src/channel.c src/globals.h src/main.c src/version.c
diffstat 4 files changed, 24 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/channel.c
+++ b/src/channel.c
@@ -194,8 +194,6 @@ ch_log_lead(const char *what, channel_T 
     }
 }
 
-static int did_log_msg = TRUE;
-
 #ifndef PROTO  // prototype is in proto.h
     void
 ch_log(channel_T *ch, const char *fmt, ...)
@@ -210,7 +208,7 @@ ch_log(channel_T *ch, const char *fmt, .
 	va_end(ap);
 	fputc('\n', log_fd);
 	fflush(log_fd);
-	did_log_msg = TRUE;
+	did_repeated_msg = 0;
     }
 }
 #endif
@@ -235,7 +233,7 @@ ch_error(channel_T *ch, const char *fmt,
 	va_end(ap);
 	fputc('\n', log_fd);
 	fflush(log_fd);
-	did_log_msg = TRUE;
+	did_repeated_msg = 0;
     }
 }
 
@@ -3918,7 +3916,7 @@ channel_send(
 	vim_ignored = (int)fwrite(buf_arg, len_arg, 1, log_fd);
 	fprintf(log_fd, "'\n");
 	fflush(log_fd);
-	did_log_msg = TRUE;
+	did_repeated_msg = 0;
     }
 
     for (;;)
@@ -4432,10 +4430,11 @@ channel_parse_messages(void)
 
     /* Only do this message when another message was given, otherwise we get
      * lots of them. */
-    if (did_log_msg)
+    if ((did_repeated_msg & REPEATED_MSG_LOOKING) == 0)
     {
 	ch_log(NULL, "looking for messages on channels");
-	did_log_msg = FALSE;
+	// now we should also give the message for SafeState
+	did_repeated_msg = REPEATED_MSG_LOOKING;
     }
     while (channel != NULL)
     {
--- a/src/globals.h
+++ b/src/globals.h
@@ -1728,3 +1728,9 @@ typedef int HINSTANCE;
 EXTERN int ctrl_break_was_pressed INIT(= FALSE);
 EXTERN HINSTANCE g_hinst INIT(= NULL);
 #endif
+
+#if defined(FEAT_JOB_CHANNEL)
+EXTERN int did_repeated_msg INIT(= 0);
+# define REPEATED_MSG_LOOKING	    1
+# define REPEATED_MSG_SAFESTATE	    2
+#endif
--- a/src/main.c
+++ b/src/main.c
@@ -1122,7 +1122,16 @@ may_trigger_safestateagain(void)
     if (was_safe)
     {
 #ifdef FEAT_JOB_CHANNEL
-	ch_log(NULL, "SafeState: back to waiting, triggering SafeStateAgain");
+	// Only do this message when another message was given, otherwise we
+	// get lots of them.
+	if ((did_repeated_msg & REPEATED_MSG_SAFESTATE) == 0)
+	{
+	    int did = did_repeated_msg;
+
+	    ch_log(NULL,
+		      "SafeState: back to waiting, triggering SafeStateAgain");
+	    did_repeated_msg = did | REPEATED_MSG_SAFESTATE;
+	}
 #endif
 	apply_autocmds(EVENT_SAFESTATEAGAIN, NULL, NULL, FALSE, curbuf);
     }
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2075,
+/**/
     2074,
 /**/
     2073,