fix(input): only disable mapped CTRL-C interrupts when getting input

(cherry picked from commit f3330023a5)
This commit is contained in:
zeertzjq
2022-04-30 08:18:37 +08:00
committed by github-actions[bot]
parent ef43e7d1f6
commit 89260ea5d6
7 changed files with 112 additions and 47 deletions

View File

@@ -2184,6 +2184,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.
@@ -2192,6 +2196,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