From: Bram Moolenaar Date: Wed, 12 Jun 2013 19:00:26 +0000 (+0200) Subject: updated for version 7.3.1179 X-Git-Tag: v7.3.1179 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0825c00f14bb60202bcd0391bc3f0eba4d188aac;p=vim updated for version 7.3.1179 Problem: When a global mapping starts with the same characters as a buffer-local mapping Vim waits for a character to be typed to find out whether the global mapping is to be used. (Andy Wokula) Solution: Use the local mapping without waiting. (Michael Henry) --- diff --git a/src/getchar.c b/src/getchar.c index 946e757d6..e24a6abcf 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 32a81cfe2..e7f399b80 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, /**/