From 1b1716477cfdb81735d95c4201c59f9176845f54 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Thu, 10 Sep 2015 09:22:59 -0300 Subject: terminal: Don't enter terminal mode from `:normal` Ref: https://github.com/junegunn/fzf.vim/issues/8#issuecomment-139209765 --- src/nvim/ex_docmd.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/nvim/ex_docmd.c') diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index d69d106dc6..3c09a3a2f8 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -7624,6 +7624,10 @@ void update_topline_cursor(void) */ static void ex_normal(exarg_T *eap) { + if (curbuf->terminal) { + EMSG("Can't re-enter normal mode from terminal mode"); + return; + } int save_msg_scroll = msg_scroll; int save_restart_edit = restart_edit; int save_msg_didout = msg_didout; @@ -7715,7 +7719,14 @@ static void ex_normal(exarg_T *eap) --ex_normal_busy; msg_scroll = save_msg_scroll; - restart_edit = save_restart_edit; + if (force_restart_edit) { + force_restart_edit = false; + } else { + // some function called was aware of ex_normal and decided to override the + // value of restart_edit anyway. So far only used in terminal mode(see + // terminal_enter() in edit.c) + restart_edit = save_restart_edit; + } p_im = save_insertmode; finish_op = save_finish_op; opcount = save_opcount; -- cgit