From: Bram Moolenaar Date: Tue, 27 Feb 2018 15:29:28 +0000 (+0100) Subject: patch 8.0.1546: using feedkeys() in a terminal may trigger mappings X-Git-Tag: v8.0.1546 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c8bcfe7efd4cfdfd7f503700aba45c42765cd4dc;p=vim patch 8.0.1546: using feedkeys() in a terminal may trigger mappings Problem: Using feedkeys() in a terminal window may trigger mappings. (Charles Sheridan) Solution: Avoid triggering a mapping when peeking for a key. --- diff --git a/src/getchar.c b/src/getchar.c index 39ccebb64..7025f6733 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -1854,7 +1854,7 @@ vpeekc(void) return vgetorpeek(FALSE); } -#if defined(FEAT_TERMRESPONSE) || defined(PROTO) +#if defined(FEAT_TERMRESPONSE) || defined(FEAT_TERMINAL) || defined(PROTO) /* * Like vpeekc(), but don't allow mapping. Do allow checking for terminal * codes. diff --git a/src/terminal.c b/src/terminal.c index 867109b07..53591f15c 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -1306,10 +1306,9 @@ term_enter_job_mode() } /* - * Get a key from the user without mapping. + * Get a key from the user with terminal mode mappings. * Note: while waiting a terminal may be closed and freed if the channel is * closed and ++close was used. - * Uses terminal mode mappings. */ static int term_vgetc() @@ -1633,7 +1632,7 @@ terminal_loop(int blocking) position_cursor(curwin, &curbuf->b_term->tl_cursor_pos); may_set_cursor_props(curbuf->b_term); - while (blocking || vpeekc() != NUL) + while (blocking || vpeekc_nomap() != NUL) { /* TODO: skip screen update when handling a sequence of keys. */ /* Repeat redrawing in case a message is received while redrawing. */ diff --git a/src/version.c b/src/version.c index 8f46214b7..af3baf581 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1546, /**/ 1545, /**/