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.
diff --git a/src/channel.c b/src/channel.c
index d5f4ecc..34ee02a 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -194,8 +194,6 @@
}
}
-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 @@
va_end(ap);
fputc('\n', log_fd);
fflush(log_fd);
- did_log_msg = TRUE;
+ did_repeated_msg = 0;
}
}
#endif
@@ -235,7 +233,7 @@
va_end(ap);
fputc('\n', log_fd);
fflush(log_fd);
- did_log_msg = TRUE;
+ did_repeated_msg = 0;
}
}
@@ -3918,7 +3916,7 @@
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 @@
/* 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)
{
diff --git a/src/globals.h b/src/globals.h
index 18f7611..1dcda8f 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1728,3 +1728,9 @@
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
diff --git a/src/main.c b/src/main.c
index c18fc6f..33ac89c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1122,7 +1122,16 @@
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);
}
diff --git a/src/version.c b/src/version.c
index 2b1438c..f1c082b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2075,
+/**/
2074,
/**/
2073,