do_shell, do_filter: Remove "clear screen", "wait for return" calls

The output from shell commands is already handled by the messages.c/UI
layer.
This commit is contained in:
Justin M. Keyes 2018-09-12 08:07:58 +02:00
parent 31c3d54668
commit 90b7d25882
3 changed files with 13 additions and 52 deletions

View File

@ -1185,19 +1185,8 @@ static void do_filter(
}
read_linecount = curbuf->b_ml.ml_line_count;
// When call_shell() fails wait_return() is called to give the user a chance
// to read the error messages. Otherwise errors are ignored, so you can see
// the error messages from the command that appear on stdout; use 'u' to fix
// the text.
// Pass on the kShellOptDoOut flag when the output is being redirected.
if (call_shell(
cmd_buf,
kShellOptFilter | shell_flags,
NULL
)) {
redraw_later_clear();
wait_return(FALSE);
}
call_shell(cmd_buf, kShellOptFilter | shell_flags, NULL);
xfree(cmd_buf);
did_check_timestamps = FALSE;
@ -1298,23 +1287,17 @@ filterend:
xfree(otmp);
}
/*
* Call a shell to execute a command.
* When "cmd" is NULL start an interactive shell.
*/
// Call a shell to execute a command.
// When "cmd" is NULL start an interactive shell.
void
do_shell(
char_u *cmd,
int flags // may be SHELL_DOOUT when output is redirected
)
{
int save_nwr;
/*
* Disallow shell commands in restricted mode (-Z)
* Disallow shell commands from .exrc and .vimrc in current directory for
* security reasons.
*/
// Disallow shell commands in restricted mode (-Z)
// Disallow shell commands from .exrc and .vimrc in current directory for
// security reasons.
if (check_restricted() || check_secure()) {
msg_end();
return;
@ -1352,33 +1335,7 @@ do_shell(
msg_row = Rows - 1;
msg_col = 0;
if (autocmd_busy) {
if (msg_silent == 0)
redraw_later_clear();
} else {
/*
* For ":sh" there is no need to call wait_return(), just redraw.
* Also for the Win32 GUI (the output is in a console window).
* Otherwise there is probably text on the screen that the user wants
* to read before redrawing, so call wait_return().
*/
if (cmd == NULL
) {
if (msg_silent == 0)
redraw_later_clear();
need_wait_return = FALSE;
} else {
/*
* If we switch screens when starttermcap() is called, we really
* want to wait for "hit return to continue".
*/
save_nwr = no_wait_return;
wait_return(msg_silent == 0);
no_wait_return = save_nwr;
}
}
/* display any error messages now */
// display any error messages now
display_errors();
apply_autocmds(EVENT_SHELLCMDPOST, NULL, NULL, FALSE, curbuf);

View File

@ -2707,8 +2707,10 @@ void fast_breakcheck(void)
}
}
// os_call_shell wrapper. Handles 'verbose', :profile, and v:shell_error.
// Invalidates cached tags.
/// os_call_shell() wrapper. Handles 'verbose', :profile, and v:shell_error.
/// Invalidates cached tags.
///
/// @return shell command exit code
int call_shell(char_u *cmd, ShellOpts opts, char_u *extra_shell_arg)
{
int retval;

View File

@ -101,6 +101,8 @@ void shell_free_argv(char **argv)
/// @param cmd The command to execute, or NULL to run an interactive shell.
/// @param opts Options that control how the shell will work.
/// @param extra_args Extra arguments to the shell, or NULL.
///
/// @return shell command exit code
int os_call_shell(char_u *cmd, ShellOpts opts, char_u *extra_args)
{
DynamicBuffer input = DYNAMIC_BUFFER_INIT;