diff options
Diffstat (limited to 'src/nvim/message.c')
-rw-r--r-- | src/nvim/message.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c index 882fce504b..a597fb4866 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -926,8 +926,9 @@ void ex_messages(void *const eap_p) */ void msg_end_prompt(void) { - need_wait_return = FALSE; - emsg_on_display = FALSE; + msg_ext_clear_later(); + need_wait_return = false; + emsg_on_display = false; cmdline_row = msg_row; msg_col = 0; msg_clr_eos(); @@ -2791,12 +2792,22 @@ void msg_ext_clear(bool force) msg_ext_keep_after_cmdline = false; } -void msg_ext_check_prompt(void) +void msg_ext_clear_later(void) +{ + if (msg_ext_is_visible()) { + msg_ext_need_clear = true; + if (must_redraw < VALID) { + must_redraw = VALID; + } + } +} + +void msg_ext_check_clear(void) { - // Redraw after cmdline is expected to clear messages. - if (msg_ext_did_cmdline) { + // Redraw after cmdline or prompt is expected to clear messages. + if (msg_ext_need_clear) { msg_ext_clear(true); - msg_ext_did_cmdline = false; + msg_ext_need_clear = false; } } |