aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVille Hakulinen <ville.hakulinen@gmail.com>2019-06-03 00:38:19 +0300
committerBjörn Linse <bjorn.linse@gmail.com>2019-06-02 23:38:19 +0200
commit40218d118030d0104ede11ad2956ef150e9a7573 (patch)
treeab22d1c1de7436089de3c2d80a33bfef7260f804 /src
parent8a33cb32bac1632a98d13df7865faacadfc41391 (diff)
downloadrneovim-40218d118030d0104ede11ad2956ef150e9a7573.tar.gz
rneovim-40218d118030d0104ede11ad2956ef150e9a7573.tar.bz2
rneovim-40218d118030d0104ede11ad2956ef150e9a7573.zip
Make sure msg_clear is sent after confirm message (#10065)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_getln.c7
-rw-r--r--src/nvim/message.c23
-rw-r--r--src/nvim/message.h2
-rw-r--r--src/nvim/screen.c2
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();