diff options
-rw-r--r-- | src/nvim/ex_cmds.c | 57 | ||||
-rw-r--r-- | src/nvim/misc1.c | 6 | ||||
-rw-r--r-- | src/nvim/os/shell.c | 2 |
3 files changed, 13 insertions, 52 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index b97df801e3..3e06b079ba 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -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); diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index cb53421bb5..ad0a8d409f 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -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; diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c index f42005f392..aa4e7d307b 100644 --- a/src/nvim/os/shell.c +++ b/src/nvim/os/shell.c @@ -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; |