Patch 7.4.427
Problem:    When an InsertCharPre autocommand executes system() typeahead may
            be echoed and messes up the display. (Jacob Niehus)
Solution:   Do not set cooked mode when invoked from ":silent".
Files:      src/eval.c, runtime/doc/eval.txt


*** ../vim-7.4.426/src/eval.c   2014-08-29 09:46:04.262404970 +0200
--- src/eval.c  2014-08-29 15:37:57.034451088 +0200
***************
*** 18594,18599 ****
--- 18594,18600 ----
      int               err = FALSE;
      FILE      *fd;
      list_T    *list = NULL;
+     int               flags = SHELL_SILENT;
  
      rettv->v_type = VAR_STRING;
      rettv->vval.v_string = NULL;
***************
*** 18643,18648 ****
--- 18644,18654 ----
        }
      }
  
+     /* Omit SHELL_COOKED when invoked with ":silent".  Avoids that the shell
+      * echoes typeahead, that messes up the display. */
+     if (!msg_silent)
+       flags += SHELL_COOKED;
+ 
      if (retlist)
      {
        int             len;
***************
*** 18652,18659 ****
        char_u          *end;
        int             i;
  
!       res = get_cmd_output(get_tv_string(&argvars[0]), infile,
!                                          SHELL_SILENT | SHELL_COOKED, &len);
        if (res == NULL)
            goto errret;
  
--- 18658,18664 ----
        char_u          *end;
        int             i;
  
!       res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, &len);
        if (res == NULL)
            goto errret;
  
***************
*** 18694,18701 ****
      }
      else
      {
!       res = get_cmd_output(get_tv_string(&argvars[0]), infile,
!                                          SHELL_SILENT | SHELL_COOKED, NULL);
  #ifdef USE_CR
        /* translate <CR> into <NL> */
        if (res != NULL)
--- 18699,18705 ----
      }
      else
      {
!       res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, NULL);
  #ifdef USE_CR
        /* translate <CR> into <NL> */
        if (res != NULL)
*** ../vim-7.4.426/runtime/doc/eval.txt 2014-08-06 14:52:05.035236174 +0200
--- runtime/doc/eval.txt        2014-08-29 15:49:48.918452643 +0200
***************
*** 6071,6076 ****
--- 6093,6104 ----
                list items converted to NULs).  
                Pipes are not used.
  
+               When prepended by |:silent| the shell will not be set to
+               cooked mode.  This is meant to be used for commands that do
+               not need the user to type.  It avoids stray characters showing
+               up on the screen which require |CTRL-L| to remove. >
+                       :silent let f = system('ls *.vim')
+ <
                Note: Use |shellescape()| or |::S| with |expand()| or 
                |fnamemodify()| to escape special characters in a command 
                argument.  Newlines in {expr} may cause the command to fail.  
*** ../vim-7.4.426/src/version.c        2014-08-29 15:12:50.950447798 +0200
--- src/version.c       2014-08-29 15:39:07.862451242 +0200
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     427,
  /**/

-- 
How many light bulbs does it take to change a person?

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