summaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/commands/typed.rs36
1 files changed, 18 insertions, 18 deletions
diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs
index 6fbdc0d7..2c72686d 100644
--- a/helix-term/src/commands/typed.rs
+++ b/helix-term/src/commands/typed.rs
@@ -2060,18 +2060,14 @@ fn run_shell_command(
return Ok(());
}
- let shell = &cx.editor.config().shell;
- let (output, success) = shell_impl(shell, &args.join(" "), None)?;
- if success {
- cx.editor.set_status("Command succeeded");
- } else {
- cx.editor.set_error("Command failed");
- }
+ let shell = cx.editor.config().shell.clone();
+ let args = args.join(" ");
- if !output.is_empty() {
- let callback = async move {
- let call: job::Callback = Callback::EditorCompositor(Box::new(
- move |editor: &mut Editor, compositor: &mut Compositor| {
+ let callback = async move {
+ let (output, success) = shell_impl_async(&shell, &args, None).await?;
+ let call: job::Callback = Callback::EditorCompositor(Box::new(
+ move |editor: &mut Editor, compositor: &mut Compositor| {
+ if !output.is_empty() {
let contents = ui::Markdown::new(
format!("```sh\n{}\n```", output),
editor.syn_loader.clone(),
@@ -2080,13 +2076,17 @@ fn run_shell_command(
helix_core::Position::new(editor.cursor().0.unwrap_or_default().row, 2),
));
compositor.replace_or_push("shell", popup);
- },
- ));
- Ok(call)
- };
-
- cx.jobs.callback(callback);
- }
+ }
+ if success {
+ editor.set_status("Command succeeded");
+ } else {
+ editor.set_error("Command failed");
+ }
+ },
+ ));
+ Ok(call)
+ };
+ cx.jobs.callback(callback);
Ok(())
}