diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_getln.c | 7 | ||||
-rw-r--r-- | src/nvim/message.c | 23 | ||||
-rw-r--r-- | src/nvim/message.h | 2 | ||||
-rw-r--r-- | src/nvim/screen.c | 2 |
4 files changed, 20 insertions, 14 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 25e92128ef..ce46408872 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -505,12 +505,7 @@ static uint8_t *command_line_enter(int firstc, long count, int indent) if (ui_has(kUICmdline)) { ui_call_cmdline_hide(ccline.level); - if (msg_ext_is_visible()) { - msg_ext_did_cmdline = true; - if (must_redraw < VALID) { - must_redraw = VALID; - } - } + msg_ext_clear_later(); } cmdline_level--; 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; } } diff --git a/src/nvim/message.h b/src/nvim/message.h index 7938fd91d3..914c10af43 100644 --- a/src/nvim/message.h +++ b/src/nvim/message.h @@ -88,7 +88,7 @@ extern MessageHistoryEntry *first_msg_hist; /// Last message extern MessageHistoryEntry *last_msg_hist; -EXTERN bool msg_ext_did_cmdline INIT(= false); +EXTERN bool msg_ext_need_clear INIT(= false); #ifdef INCLUDE_GENERATED_DECLARATIONS # include "message.h.generated.h" diff --git a/src/nvim/screen.c b/src/nvim/screen.c index a20c91845d..9439869b32 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -369,7 +369,7 @@ void update_screen(int type) ui_comp_set_screen_valid(false); } win_ui_flush_positions(); - msg_ext_check_prompt(); + msg_ext_check_clear(); /* reset cmdline_row now (may have been changed temporarily) */ compute_cmdrow(); |