From 35cfd793aad7c4bfba4a9bedf5c435c44e4293d0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 25 Dec 2021 15:13:18 +0000 Subject: patch 8.2.3892: when modifyOtherKeys is used CTRL-C is not recognized Problem: When modifyOtherKeys is used CTRL-C is not recognized. Solution: Check for uppercase C as well, fix minimum length. --- src/ui.c | 15 ++++++++++----- src/version.c | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/ui.c b/src/ui.c index db49cc870..b37df4981 100644 --- a/src/ui.c +++ b/src/ui.c @@ -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; } } diff --git a/src/version.c b/src/version.c index 6d23fa8fc..bca7604dc 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3892, /**/ 3891, /**/ -- cgit v1.2.1