# HG changeset patch # User Bram Moolenaar # Date 1669321804 -3600 # Node ID 42acbd0cb313ae85d83b73c5907f4a7f8d57aacb # Parent 74055e6215afaf1eba8dbd20c386b6976c86159f patch 9.0.0943: pretending to go out of Insert mode when Esc is received Commit: https://github.com/vim/vim/commit/d330e8422d1c4670a241ce8ebde4c37918538dce Author: Bram Moolenaar Date: Thu Nov 24 20:23:24 2022 +0000 patch 9.0.0943: pretending to go out of Insert mode when Esc is received Problem: Pretending to go out of Insert mode when Esc is received has side effects. Solution: When the kitty keyboard protocol is enabled expect Esc to always be the start of an escape sequence. diff --git a/src/getchar.c b/src/getchar.c --- a/src/getchar.c +++ b/src/getchar.c @@ -3263,12 +3263,14 @@ vgetorpeek(int advance) * get a character: 3. from the user - handle in Insert mode */ /* - * Special case: if we get an in insert mode and there + * Special case: if we get an in Insert mode and there * are no more characters at once, we pretend to go out of - * insert mode. This prevents the one second delay after + * Insert mode. This prevents the one second delay after * typing an . If we get something after all, we may * have to redisplay the mode. That the cursor is in the wrong * place does not matter. + * Do not do this if the kitty keyboard protocol is used, every + * is the start of an escape sequence then. */ c = 0; new_wcol = curwin->w_wcol; @@ -3277,6 +3279,7 @@ vgetorpeek(int advance) && typebuf.tb_len == 1 && typebuf.tb_buf[typebuf.tb_off] == ESC && !no_mapping + && kitty_protocol_state != KKPS_ENABLED && ex_normal_busy == 0 && typebuf.tb_maplen == 0 && (State & MODE_INSERT) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 943, +/**/ 942, /**/ 941,