mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
4fb45579b5
commit
30cd02301e
@ -1854,9 +1854,12 @@ static int vgetorpeek(int advance)
|
|||||||
|
|
||||||
/* Don't allow mapping the first byte(s) of a
|
/* Don't allow mapping the first byte(s) of a
|
||||||
* multi-byte char. Happens when mapping
|
* multi-byte char. Happens when mapping
|
||||||
* <M-a> and then changing 'encoding'. */
|
* <M-a> and then changing 'encoding'. Beware
|
||||||
if (has_mbyte && MB_BYTE2LEN(c1)
|
* that 0x80 is escaped. */
|
||||||
> (*mb_ptr2len)(mp->m_keys))
|
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;
|
mlen = 0;
|
||||||
/*
|
/*
|
||||||
* Check an entry whether it matches.
|
* Check an entry whether it matches.
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
Tests for maparg().
|
Tests for maparg().
|
||||||
|
Also test utf8 map with a 0x80 byte.
|
||||||
|
|
||||||
STARTTEST
|
STARTTEST
|
||||||
:so small.vim
|
:so small.vim
|
||||||
|
:so mbyte.vim
|
||||||
:set cpo-=<
|
:set cpo-=<
|
||||||
|
:set encoding=utf8
|
||||||
:" Test maparg() with a string result
|
:" Test maparg() with a string result
|
||||||
:map foo<C-V> is<F4>foo
|
:map foo<C-V> is<F4>foo
|
||||||
:vnoremap <script> <buffer> <expr> <silent> bar isbar
|
:vnoremap <script> <buffer> <expr> <silent> bar isbar
|
||||||
@ -17,6 +20,20 @@ STARTTEST
|
|||||||
:map abc y<S-char-114>y
|
:map abc y<S-char-114>y
|
||||||
:call append('$', maparg('abc'))
|
:call append('$', maparg('abc'))
|
||||||
:"
|
:"
|
||||||
|
Go:"
|
||||||
|
:" Outside of the range, minimum
|
||||||
|
:inoremap <Char-0x1040> a
|
||||||
|
:call feedkeys("a\u1040\<Esc>")
|
||||||
|
:" Inside of the range, minimum
|
||||||
|
:inoremap <Char-0x103f> b
|
||||||
|
:call feedkeys("a\u103f\<Esc>")
|
||||||
|
:" Inside of the range, maximum
|
||||||
|
:inoremap <Char-0xf03f> c
|
||||||
|
:call feedkeys("a\uf03f\<Esc>")
|
||||||
|
:" Outside of the range, maximum
|
||||||
|
:inoremap <Char-0xf040> d
|
||||||
|
:call feedkeys("a\uf040\<Esc>")
|
||||||
|
:"
|
||||||
:/^eof/+1,$w! test.out
|
:/^eof/+1,$w! test.out
|
||||||
:qa!
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
@ -4,3 +4,4 @@ is<F4>foo
|
|||||||
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1}
|
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1}
|
||||||
xrx
|
xrx
|
||||||
yRy
|
yRy
|
||||||
|
abcd
|
||||||
|
@ -202,6 +202,7 @@ static char *(features[]) = {
|
|||||||
|
|
||||||
static int included_patches[] = {
|
static int included_patches[] = {
|
||||||
// Add new patch number below this line
|
// Add new patch number below this line
|
||||||
|
204,
|
||||||
203,
|
203,
|
||||||
//202,
|
//202,
|
||||||
//201,
|
//201,
|
||||||
|
Loading…
Reference in New Issue
Block a user