Merge pull request #1722 from fwalch/vim-7.4.488

vim-patch:7.4.483, vim-patch:7.4.485, vim-patch:7.4.488
This commit is contained in:
Justin M. Keyes 2014-12-25 12:57:09 -05:00
commit 7231a23cf6
3 changed files with 50 additions and 6 deletions

View File

@ -15,6 +15,7 @@
* mappings and abbreviations * mappings and abbreviations
*/ */
#include <assert.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h> #include <string.h>
#include <inttypes.h> #include <inttypes.h>
@ -3637,11 +3638,28 @@ int check_abbr(int c, char_u *ptr, int col, int mincol)
for (; mp; for (; mp;
mp->m_next == NULL ? (mp = mp2, mp2 = NULL) : mp->m_next == NULL ? (mp = mp2, mp2 = NULL) :
(mp = mp->m_next)) { (mp = mp->m_next)) {
int qlen = mp->m_keylen;
char_u *q = mp->m_keys;
int match;
if (vim_strbyte(mp->m_keys, K_SPECIAL) != NULL) {
/* might have CSI escaped mp->m_keys */
q = vim_strsave(mp->m_keys);
if (q != NULL) {
vim_unescape_csi(q);
qlen = (int)STRLEN(q);
}
}
/* find entries with right mode and keys */ /* find entries with right mode and keys */
if ( (mp->m_mode & State) match = (mp->m_mode & State)
&& mp->m_keylen == len && qlen == len
&& !STRNCMP(mp->m_keys, ptr, (size_t)len)) && !STRNCMP(q, ptr, (size_t)len);
if (q != mp->m_keys) {
free(q);
}
if (match) {
break; break;
}
} }
if (mp != NULL) { if (mp != NULL) {
/* /*

View File

@ -250,12 +250,12 @@ static int included_patches[] = {
491, 491,
//490, //490,
489, 489,
//488, 488,
//487, //487,
//486, //486,
//485, 485,
//484 NA //484 NA
//483, 483,
//482 NA //482 NA
//481 NA //481 NA
//480 NA //480 NA

View File

@ -0,0 +1,26 @@
-- Test for mappings and abbreviations
local helpers = require('test.functional.helpers')
local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert
local execute, expect = helpers.execute, helpers.expect
describe('mapping', function()
setup(clear)
it('is working', function()
insert([[
test starts here:
]])
execute('set encoding=utf-8')
-- Abbreviations with р (0x80) should work.
execute('inoreab чкпр vim')
feed('GAчкпр <cr><esc>')
-- Assert buffer contents.
expect([[
test starts here:
vim]])
end)
end)