From: Bram Moolenaar Date: Wed, 25 Sep 2019 19:43:11 +0000 (+0200) Subject: patch 8.1.2075: get many log messages when waiting for a typed character X-Git-Tag: v8.1.2075 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=101e99207f813ca48a4c0787eed9eb8bf67fba5a;p=vim 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 d5f4ecced..34ee02a66 100644 --- a/src/channel.c +++ b/src/channel.c @@ -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) { diff --git a/src/globals.h b/src/globals.h index 18f7611e2..1dcda8f0b 100644 --- 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 diff --git a/src/main.c b/src/main.c index c18fc6f11..33ac89c09 100644 --- 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); } diff --git a/src/version.c b/src/version.c index 2b1438ced..f1c082bc6 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2075, /**/ 2074, /**/