fix(input): allow Ctrl-C to interrupt a recursive mapping even if mapped

(cherry picked from commit 56895cf4de)
This commit is contained in:
zeertzjq
2022-06-07 12:08:41 +08:00
committed by github-actions[bot]
parent f0f63502ce
commit 1496f4212b
2 changed files with 24 additions and 5 deletions

View File

@@ -2184,19 +2184,19 @@ 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.
if (typebuf.tb_maplen) {
line_breakcheck();
} else {
// os_breakcheck() can call input_enqueue()
if ((mapped_ctrl_c | curbuf->b_mapped_ctrl_c) & get_real_state()) {
ctrl_c_interrupts = false;
}
os_breakcheck(); // check for CTRL-C
ctrl_c_interrupts = true;
}
ctrl_c_interrupts = true;
int keylen = 0;
if (got_int) {
// flush all input