To: vim_dev@googlegroups.com
Subject: Patch 7.3.285
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.3.285 (after 7.3.284)
Problem:    Mapping <Char-123> no longer works.
Solution:   Properly check for "char-".  Add a test for it.
Files:	    src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok


*** ../vim-7.3.284/src/misc2.c	2011-08-17 20:33:18.000000000 +0200
--- src/misc2.c	2011-08-19 22:08:37.000000000 +0200
***************
*** 2781,2786 ****
--- 2781,2792 ----
  	}
  	if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
  	    bp += 3;	/* skip t_xx, xx may be '-' or '>' */
+ 	else if (STRNICMP(bp, "char-", 5) == 0)
+ 	{
+ 	    vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL);
+ 	    bp += l + 5;
+ 	    break;
+ 	}
      }
  
      if (*bp == '>')	/* found matching '>' */
***************
*** 2810,2836 ****
  	    {
  		/* <Char-123> or <Char-033> or <Char-0x33> */
  		vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
! 		*modp = modifiers;
! 		*srcp = end_of_name;
! 		return (int)n;
  	    }
- 
- 	    /*
- 	     * Modifier with single letter, or special key name.
- 	     */
- #ifdef FEAT_MBYTE
- 	    if (has_mbyte)
- 		l = mb_ptr2len(last_dash + 1);
- 	    else
- #endif
- 		l = 1;
- 	    if (modifiers != 0 && last_dash[l + 1] == '>')
- 		key = PTR2CHAR(last_dash + 1);
  	    else
  	    {
! 		key = get_special_key_code(last_dash + 1);
! 		if (!keep_x_key)
! 		    key = handle_x_keys(key);
  	    }
  
  	    /*
--- 2816,2842 ----
  	    {
  		/* <Char-123> or <Char-033> or <Char-0x33> */
  		vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
! 		key = (int)n;
  	    }
  	    else
  	    {
! 		/*
! 		 * Modifier with single letter, or special key name.
! 		 */
! #ifdef FEAT_MBYTE
! 		if (has_mbyte)
! 		    l = mb_ptr2len(last_dash + 1);
! 		else
! #endif
! 		    l = 1;
! 		if (modifiers != 0 && last_dash[l + 1] == '>')
! 		    key = PTR2CHAR(last_dash + 1);
! 		else
! 		{
! 		    key = get_special_key_code(last_dash + 1);
! 		    if (!keep_x_key)
! 			key = handle_x_keys(key);
! 		}
  	    }
  
  	    /*
*** ../vim-7.3.284/src/testdir/test75.in	2010-10-20 21:22:17.000000000 +0200
--- src/testdir/test75.in	2011-08-19 22:05:13.000000000 +0200
***************
*** 2,7 ****
--- 2,8 ----
  
  STARTTEST
  :so small.vim
+ :set cpo-=<
  :" Test maparg() with a string result
  :map foo<C-V> is<F4>foo
  :vnoremap <script> <buffer> <expr> <silent> bar isbar
***************
*** 9,14 ****
--- 10,20 ----
  :call append('$', string(maparg('foo<C-V>', '', 0, 1)))
  :call append('$', string(maparg('bar', '', 0, 1)))
  :"
+ :map abc x<char-114>x
+ :call append('$', maparg('abc'))
+ :map abc y<S-char-114>y
+ :call append('$', maparg('abc'))
+ :"
  :/^eof/+1,$w! test.out
  :qa!
  ENDTEST
*** ../vim-7.3.284/src/testdir/test75.ok	2010-10-20 21:22:17.000000000 +0200
--- src/testdir/test75.ok	2011-08-19 21:53:26.000000000 +0200
***************
*** 1,3 ****
--- 1,5 ----
  is<F4>foo
  {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
  {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1}
+ xrx
+ yRy
*** ../vim-7.3.284/src/version.c	2011-08-17 20:33:18.000000000 +0200
--- src/version.c	2011-08-19 22:15:22.000000000 +0200
***************
*** 711,712 ****
--- 711,714 ----
  {   /* Add new patch number below this line */
+ /**/
+     285,
  /**/


-- 
No man may purchase alcohol without written consent from his wife.
		[real standing law in Pennsylvania, United States of America]

 /// 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    ///
