Patch 7.3.338
Problem:    Using getchar() in an expression mapping doesn't work well.
Solution:   Don't save and restore the typeahead. (James Vega)
Files:      src/getchar.c, src/testdir/test34.ok


*** ../vim-7.3.337/src/getchar.c        2011-08-17 20:33:18.000000000 +0200
--- src/getchar.c       2011-10-12 21:53:27.000000000 +0200
***************
*** 2460,2486 ****
  
                        /*
                         * Handle ":map <expr>": evaluate the {rhs} as an
!                        * expression.  Save and restore the typeahead so that
!                        * getchar() can be used.  Also save and restore the
!                        * command line for "normal :".
                         */
                        if (mp->m_expr)
                        {
-                           tasave_T    tabuf;
                            int         save_vgetc_busy = vgetc_busy;
  
!                           save_typeahead(&tabuf);
!                           if (tabuf.typebuf_valid)
!                           {
!                               vgetc_busy = 0;
!                               save_m_keys = vim_strsave(mp->m_keys);
!                               save_m_str = vim_strsave(mp->m_str);
!                               s = eval_map_expr(save_m_str, NUL);
!                               vgetc_busy = save_vgetc_busy;
!                           }
!                           else
!                               s = NULL;
!                           restore_typeahead(&tabuf);
                        }
                        else
  #endif
--- 2460,2477 ----
  
                        /*
                         * Handle ":map <expr>": evaluate the {rhs} as an
!                        * expression.  Also save and restore the command line
!                        * for "normal :".
                         */
                        if (mp->m_expr)
                        {
                            int         save_vgetc_busy = vgetc_busy;
  
!                           vgetc_busy = 0;
!                           save_m_keys = vim_strsave(mp->m_keys);
!                           save_m_str = vim_strsave(mp->m_str);
!                           s = eval_map_expr(save_m_str, NUL);
!                           vgetc_busy = save_vgetc_busy;
                        }
                        else
  #endif
*** ../vim-7.3.337/src/testdir/test34.ok        2010-08-15 21:57:29.000000000 
+0200
--- src/testdir/test34.ok       2011-10-12 21:59:39.000000000 +0200
***************
*** 1,5 ****
  xxx4asdf fail nop ok 9 333
! XX111XX
  ---222---
  1. one
  2. two
--- 1,5 ----
  xxx4asdf fail nop ok 9 333
! XX111-XX
  ---222---
  1. one
  2. two
*** ../vim-7.3.337/src/version.c        2011-10-12 21:04:15.000000000 +0200
--- src/version.c       2011-10-12 21:20:31.000000000 +0200
***************
*** 711,712 ****
--- 711,714 ----
  {   /* Add new patch number below this line */
+ /**/
+     338,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
65. The last time you looked at the clock it was 11:30pm, and in what
    seems like only a few seconds later, your sister runs past you to
    catch her 7am school bus.

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

Raspunde prin e-mail lui