diff --git a/src/getchar.c b/src/getchar.c index 946e757d64..e24a6abcf7 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -1924,6 +1924,7 @@ vgetorpeek(advance) mapblock_T *mp; #ifdef FEAT_LOCALMAP mapblock_T *mp2; + int expecting_global_mappings; #endif mapblock_T *mp_match; int mp_match_len = 0; @@ -2105,6 +2106,7 @@ vgetorpeek(advance) /* First try buffer-local mappings. */ mp = curbuf->b_maphash[MAP_HASH(local_State, c1)]; mp2 = maphash[MAP_HASH(local_State, c1)]; + expecting_global_mappings = (mp && mp2); if (mp == NULL) { mp = mp2; @@ -2128,6 +2130,16 @@ vgetorpeek(advance) #endif (mp = mp->m_next)) { +#ifdef FEAT_LOCALMAP + if (expecting_global_mappings && mp2 == NULL) + { + /* This is the first global mapping. If we've + * got a complete buffer-local match, use it. */ + if (mp_match) + break; + expecting_global_mappings = FALSE; + } +#endif /* * Only consider an entry if the first character * matches and it is for the current state. diff --git a/src/version.c b/src/version.c index 32a81cfe25..e7f399b806 100644 --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1179, /**/ 1178, /**/