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


*** ../vim-7.4.203/src/getchar.c        2014-02-15 16:17:02.213903042 +0100
--- src/getchar.c       2014-03-12 20:06:17.944971557 +0100
***************
*** 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.
*** ../vim-7.4.203/src/testdir/test75.in        2013-11-02 04:19:10.000000000 
+0100
--- src/testdir/test75.in       2014-03-12 20:02:45.932968308 +0100
***************
*** 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
*** ../vim-7.4.203/src/testdir/test75.ok        2013-06-29 13:50:08.000000000 
+0200
--- src/testdir/test75.ok       2014-03-12 20:02:49.780968367 +0100
***************
*** 4,6 ****
--- 4,7 ----
  {'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 
0, 'sid': 0, 'rhs': 'bar', 'buffer': 1}
  xrx
  yRy
+ abcd
*** ../vim-7.4.203/src/version.c        2014-03-12 19:41:37.100948866 +0100
--- src/version.c       2014-03-12 20:06:43.684971951 +0100
***************
*** 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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui