aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/getchar.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-04-30 13:11:35 +0800
committerGitHub <noreply@github.com>2022-04-30 13:11:35 +0800
commit2ba539f449a95f38463a61b189e203a5fe306fc0 (patch)
tree03469caff9c6c1d0cc8da4338f51cc28236a6d9a /src/nvim/getchar.c
parent7df25a1372fde01d9498ddef349a0b7851045cc7 (diff)
downloadrneovim-2ba539f449a95f38463a61b189e203a5fe306fc0.tar.gz
rneovim-2ba539f449a95f38463a61b189e203a5fe306fc0.tar.bz2
rneovim-2ba539f449a95f38463a61b189e203a5fe306fc0.zip
fix(input): only disable mapped CTRL-C interrupts when getting input (#18310)
Diffstat (limited to 'src/nvim/getchar.c')
-rw-r--r--src/nvim/getchar.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index 819b3906d9..7d06164c89 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -2317,6 +2317,10 @@ static int vgetorpeek(bool advance)
// try re-mapping.
for (;;) {
check_end_reg_executing(advance);
+ // os_breakcheck() can call input_enqueue()
+ if ((mapped_ctrl_c | curbuf->b_mapped_ctrl_c) & get_real_state()) {
+ ctrl_c_interrupts = false;
+ }
// os_breakcheck() is slow, don't use it too often when
// inside a mapping. But call it each time for typed
// characters.
@@ -2325,6 +2329,7 @@ static int vgetorpeek(bool advance)
} else {
os_breakcheck(); // check for CTRL-C
}
+ ctrl_c_interrupts = true;
int keylen = 0;
if (got_int) {
// flush all input