0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 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".
This commit is contained in:
Bram Moolenaar
2014-08-29 15:53:52 +02:00
parent 96f3a49b3b
commit 52a7246f01
3 changed files with 16 additions and 4 deletions

View File

@@ -6093,6 +6093,12 @@ system({expr} [, {input}]) *system()* *E677*
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.

View File

@@ -18594,6 +18594,7 @@ get_cmd_output_as_rettv(argvars, rettv, retlist)
int err = FALSE;
FILE *fd;
list_T *list = NULL;
int flags = SHELL_SILENT;
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
@@ -18643,6 +18644,11 @@ get_cmd_output_as_rettv(argvars, rettv, retlist)
}
}
/* 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,8 +18658,7 @@ get_cmd_output_as_rettv(argvars, rettv, retlist)
char_u *end;
int i;
res = get_cmd_output(get_tv_string(&argvars[0]), infile,
SHELL_SILENT | SHELL_COOKED, &len);
res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, &len);
if (res == NULL)
goto errret;
@@ -18694,8 +18699,7 @@ get_cmd_output_as_rettv(argvars, rettv, retlist)
}
else
{
res = get_cmd_output(get_tv_string(&argvars[0]), infile,
SHELL_SILENT | SHELL_COOKED, NULL);
res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, NULL);
#ifdef USE_CR
/* translate <CR> into <NL> */
if (res != NULL)

View File

@@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
427,
/**/
426,
/**/