aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-09-10 09:22:59 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-09-18 14:35:26 -0300
commit1b1716477cfdb81735d95c4201c59f9176845f54 (patch)
tree43688d1b83bdc18f720adacd6c1dd30e02e9cdcb /src/nvim/ex_docmd.c
parentb7dab423ef9b4b8b4493a519b6b715e826b6fbc8 (diff)
downloadrneovim-1b1716477cfdb81735d95c4201c59f9176845f54.tar.gz
rneovim-1b1716477cfdb81735d95c4201c59f9176845f54.tar.bz2
rneovim-1b1716477cfdb81735d95c4201c59f9176845f54.zip
terminal: Don't enter terminal mode from `:normal`
Ref: https://github.com/junegunn/fzf.vim/issues/8#issuecomment-139209765
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r--src/nvim/ex_docmd.c13
1 files changed, 12 insertions, 1 deletions
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;