diff options
-rw-r--r-- | src/os/shell.h | 15 | ||||
-rw-r--r-- | src/os_unix.c | 14 |
2 files changed, 16 insertions, 13 deletions
diff --git a/src/os/shell.h b/src/os/shell.h index 8cee4b8a90..6da43a863b 100644 --- a/src/os/shell.h +++ b/src/os/shell.h @@ -7,13 +7,14 @@ // Flags for mch_call_shell() second argument typedef enum { - kShellOptFilter = 1, // filtering text - kShellOptExpand = 2, // expanding wildcards - kShellOptCooked = 4, // set term to cooked mode - kShellOptDoOut = 8, // redirecting output - kShellOptSilent = 16, // don't print error returned by command - kShellOptRead = 32, // read lines and insert into buffer - kShellOptWrite = 64 // write lines from buffer + kShellOptFilter = 1, // filtering text + kShellOptExpand = 2, // expanding wildcards + kShellOptCooked = 4, // set term to cooked mode + kShellOptDoOut = 8, // redirecting output + kShellOptSilent = 16, // don't print error returned by command + kShellOptRead = 32, // read lines and insert into buffer + kShellOptWrite = 64, // write lines from buffer + kShellOptHideMess = 128, // previously a global variable from os_unix.c } ShellOpts; char ** shell_build_argv(char_u *cmd, char_u *extra_shell_arg); diff --git a/src/os_unix.c b/src/os_unix.c index 0a6a8a2794..18d724a629 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -143,7 +143,6 @@ static int save_patterns(int num_pat, char_u **pat, int *num_file, /* volatile because it is used in signal handler sig_winch(). */ static volatile int do_resize = FALSE; -static int show_shell_mess = TRUE; /* volatile because it is used in signal handler deathtrap(). */ static volatile int deadly_signal = 0; /* The signal we caught */ @@ -1754,7 +1753,7 @@ int mch_call_shell(char_u *cmd, ShellOpts opts, char_u *extra_shell_arg) } else if (pid == 0) { /* child */ reset_signals(); /* handle signals normally */ - if (!show_shell_mess || (opts & kShellOptExpand)) { + if (opts & (kShellOptHideMess | kShellOptExpand)) { int fd; /* @@ -2459,6 +2458,7 @@ int flags; /* EW_* flags */ char_u *p; int dir; char_u *extra_shell_arg = NULL; + ShellOpts shellopts = kShellOptExpand | kShellOptSilent; /* * This is the non-OS/2 implementation (really Unix). */ @@ -2635,8 +2635,11 @@ int flags; /* EW_* flags */ } *p = NUL; } - if (flags & EW_SILENT) - show_shell_mess = FALSE; + + if (flags & EW_SILENT) { + shellopts |= kShellOptHideMess; + } + if (ampersent) STRCAT(command, "&"); /* put the '&' after the redirection */ @@ -2661,7 +2664,7 @@ int flags; /* EW_* flags */ */ i = call_shell( command, - kShellOptExpand | kShellOptSilent, + shellopts, extra_shell_arg ); @@ -2670,7 +2673,6 @@ int flags; /* EW_* flags */ if (ampersent) os_delay(10L, TRUE); - show_shell_mess = TRUE; vim_free(command); if (i != 0) { /* mch_call_shell() failed */ |