1
0
forked from aniani/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.
This commit is contained in:
Bram Moolenaar 2019-09-25 21:43:11 +02:00
parent 0d0c3ca007
commit 101e99207f
4 changed files with 24 additions and 8 deletions

View 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)
{

View 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

View 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);
}

View File

@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2075,
/**/
2074,
/**/