# HG changeset patch # User Christian Brabandt # Date 1519745405 -3600 # Node ID 68c4fc9ae2163749637c6192512eed9c1d960cf2 # Parent 3e2d3a45aca3ee022c5e49a7748793a9fbb42536 patch 8.0.1546: using feedkeys() in a terminal may trigger mappings commit https://github.com/vim/vim/commit/c8bcfe7efd4cfdfd7f503700aba45c42765cd4dc Author: Bram Moolenaar Date: Tue Feb 27 16:29:28 2018 +0100 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 --- 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -779,6 +779,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1546, +/**/ 1545, /**/ 1544,