aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/normal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/normal.c')
-rw-r--r--src/nvim/normal.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 740c30d323..1f2d6f9caf 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -463,7 +463,13 @@ void normal_enter(bool cmdwin, bool noexmode)
} else if (check_result == -1) {
continue;
}
- normal_cmd(&state.oa, true);
+
+ input_enable_events();
+ int c = safe_vgetc();
+ input_disable_events();
+ if (!normal_execute(&state, c)) {
+ break;
+ }
}
}
@@ -1271,7 +1277,13 @@ static int normal_check(NormalState *s)
return -1;
}
- return !s->cmdwin || cmdwin_result == 0;
+ if (s->cmdwin && cmdwin_result != 0) {
+ // command-line window and cmdwin_result is set
+ return 0;
+ }
+
+ normal_prepare(s);
+ return 1;
}
/*
@@ -7589,9 +7601,6 @@ void normal_cmd(oparg_T *oap, bool toplevel)
s.toplevel = toplevel;
s.oa = *oap;
normal_prepare(&s);
- input_enable_events();
- int c = safe_vgetc();
- input_disable_events();
- (void)normal_execute(&s, c);
+ (void)normal_execute(&s, safe_vgetc());
*oap = s.oa;
}