0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2013-06-12 21:00:26 +02:00
parent 22971aaa45
commit 0825c00f14
2 changed files with 14 additions and 0 deletions

View File

@ -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.

View File

@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1179,
/**/
1178,
/**/