diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-12-25 15:13:18 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-25 15:13:18 +0000 |
commit | 35cfd793aad7c4bfba4a9bedf5c435c44e4293d0 (patch) | |
tree | 1e6f77e8f5350e89c3538eec2fb077c2ae40571f /src/ui.c | |
parent | 7f4a628efefd893a3cad3a1fdde340c98360f705 (diff) | |
download | vim-git-35cfd793aad7c4bfba4a9bedf5c435c44e4293d0.tar.gz |
patch 8.2.3892: when modifyOtherKeys is used CTRL-C is not recognizedv8.2.3892
Problem: When modifyOtherKeys is used CTRL-C is not recognized.
Solution: Check for uppercase C as well, fix minimum length.
Diffstat (limited to 'src/ui.c')
-rw-r--r-- | src/ui.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -1028,22 +1028,27 @@ fill_input_buf(int exit_on_error UNUSED) len + unconverted, INBUFLEN - inbufcount, rest == NULL ? &rest : NULL, &restlen); } - while (len-- > 0) + while (len > 0) { // If a CTRL-C was typed, remove it from the buffer and set - // got_int. Also recognize CTRL-C with modifyOtherKeys set, in two - // forms. + // got_int. Also recognize CTRL-C with modifyOtherKeys set, lower + // and upper case, in two forms. if (ctrl_c_interrupts && (inbuf[inbufcount] == 3 || (len >= 10 && STRNCMP(inbuf + inbufcount, "\033[27;5;99~", 10) == 0) + || (len >= 10 && STRNCMP(inbuf + inbufcount, + "\033[27;5;67~", 10) == 0) + || (len >= 7 && STRNCMP(inbuf + inbufcount, + "\033[99;5u", 7) == 0) || (len >= 7 && STRNCMP(inbuf + inbufcount, - "\033[99;5u", 7) == 0))) + "\033[67;5u", 7) == 0))) { // remove everything typed before the CTRL-C - mch_memmove(inbuf, inbuf + inbufcount, (size_t)(len + 1)); + mch_memmove(inbuf, inbuf + inbufcount, (size_t)(len)); inbufcount = 0; got_int = TRUE; } + --len; ++inbufcount; } } |