vim-patch:7.4.204

Problem:    A mapping where the second byte is 0x80 doesn't work.
Solution:   Unescape before checking for incomplete multi-byte char. (Nobuhiro
            Takasaki)

https://code.google.com/p/vim/source/detail?r=f5120cbf16b9a9c6e0fbb599a6524e05ecf11393
This commit is contained in:
oni-link
2014-04-10 19:08:28 +02:00
committed by Thiago de Arruda
parent 4fb45579b5
commit 30cd02301e
4 changed files with 25 additions and 3 deletions

View File

@@ -1854,9 +1854,12 @@ static int vgetorpeek(int advance)
/* Don't allow mapping the first byte(s) of a
* multi-byte char. Happens when mapping
* <M-a> and then changing 'encoding'. */
if (has_mbyte && MB_BYTE2LEN(c1)
> (*mb_ptr2len)(mp->m_keys))
* <M-a> and then changing 'encoding'. Beware
* that 0x80 is escaped. */
char_u *p1 = mp->m_keys;
char_u *p2 = mb_unescape(&p1);
if (has_mbyte && p2 != NULL && MB_BYTE2LEN(c1) > MB_PTR2LEN(p2))
mlen = 0;
/*
* Check an entry whether it matches.