aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/edit.c2
-rw-r--r--src/nvim/screen.c4
-rw-r--r--src/nvim/window.c3
3 files changed, 6 insertions, 3 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index 16601d327d..6e3efe8bba 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -995,7 +995,7 @@ static int insert_handle_key(InsertState *s)
// In a prompt window CTRL-W is used for window commands.
// Use Shift-CTRL-W to delete a word.
stuffcharReadbuff(Ctrl_W);
- restart_edit = 'i';
+ restart_edit = 'A';
s->nomove = true;
s->count = 0;
return 0;
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 2ce2be0bfd..d015ef110e 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -6930,7 +6930,7 @@ int showmode(void)
do_mode = ((p_smd && msg_silent == 0)
&& ((State & TERM_FOCUS)
|| (State & INSERT)
- || restart_edit
+ || restart_edit != NUL
|| VIsual_active));
if (do_mode || reg_recording != 0) {
// Don't show mode right now, when not redrawing or inside a mapping.
@@ -7010,7 +7010,7 @@ int showmode(void)
}
msg_puts_attr(_(" INSERT"), attr);
} else if (restart_edit == 'I' || restart_edit == 'i'
- || restart_edit == 'a') {
+ || restart_edit == 'a' || restart_edit == 'A') {
msg_puts_attr(_(" (insert)"), attr);
} else if (restart_edit == 'R') {
msg_puts_attr(_(" (replace)"), attr);
diff --git a/src/nvim/window.c b/src/nvim/window.c
index e0d05e1d47..ddf50b47a7 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -2240,6 +2240,9 @@ static void leaving_window(win_T *const win)
// When leaving a prompt window stop Insert mode and perhaps restart
// it when entering that window again.
win->w_buffer->b_prompt_insert = restart_edit;
+ if (restart_edit != NUL && mode_displayed) {
+ clear_cmdline = true; // unshow mode later
+ }
restart_edit = NUL;
// When leaving the window (or closing the window) was done from a