]> granicus.if.org Git - vim/commitdiff
patch 8.1.2075: get many log messages when waiting for a typed character v8.1.2075
authorBram Moolenaar <Bram@vim.org>
Wed, 25 Sep 2019 19:43:11 +0000 (21:43 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 25 Sep 2019 19:43:11 +0000 (21:43 +0200)
Problem:    Get many log messages when waiting for a typed character.
Solution:   Do not repeat the repeated messages when nothing happens.

src/channel.c
src/globals.h
src/main.c
src/version.c

index d5f4ecced7d0e91f5247a21abe88c8eb976f3bda..34ee02a662a14d0535b612133c4fbf273bc46d73 100644 (file)
@@ -194,8 +194,6 @@ ch_log_lead(const char *what, channel_T *ch, ch_part_T part)
     }
 }
 
-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)
     {
index 18f7611e2ac14ad5f66cd4d1038dae0ab64063d0..1dcda8f0b210cb204025f5aa69b366fe6e3bb951 100644 (file)
@@ -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
index c18fc6f116591aa67b23d61b6ba5a77f1d381061..33ac89c09730d4ed725403efb03a5cc2b118a701 100644 (file)
@@ -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);
     }
index 2b1438ced0f5a975e120dc54398c2d574fc87cfe..f1c082bc6812f802fcad04872486c0b99a9238c0 100644 (file)
@@ -757,6 +757,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2075,
 /**/
     2074,
 /**/