| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.204 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| 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) |
| Files: src/getchar.c, src/testdir/test75.in, src/testdir/test75.ok |
| |
| |
| |
| |
| |
| *** 2206,2215 **** |
| #ifdef FEAT_MBYTE |
| /* 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)) |
| ! mlen = 0; |
| #endif |
| /* |
| * Check an entry whether it matches. |
| --- 2206,2221 ---- |
| #ifdef FEAT_MBYTE |
| /* Don't allow mapping the first byte(s) of a |
| * multi-byte char. Happens when mapping |
| ! * <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; |
| ! } |
| #endif |
| /* |
| * Check an entry whether it matches. |
| |
| |
| |
| *** 1,8 **** |
| --- 1,11 ---- |
| Tests for maparg(). |
| + Also test utf8 map with a 0x80 byte. |
| |
| STARTTEST |
| :so small.vim |
| + :so mbyte.vim |
| :set cpo-=< |
| + :set encoding=utf8 |
| :" Test maparg() with a string result |
| :map foo<C-V> is<F4>foo |
| :vnoremap <script> <buffer> <expr> <silent> bar isbar |
| |
| *** 17,22 **** |
| --- 20,39 ---- |
| :map abc y<S-char-114>y |
| :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 |
| :qa! |
| ENDTEST |
| |
| |
| |
| *** 4,6 **** |
| --- 4,7 ---- |
| {'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1} |
| xrx |
| yRy |
| + abcd |
| |
| |
| |
| *** 740,741 **** |
| --- 740,743 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 204, |
| /**/ |
| |
| -- |
| If you only have a hammer, you tend to see every problem as a nail. |
| If you only have MS-Windows, you tend to solve every problem by rebooting. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |