From 3121353c6ab2fbc5fced28f075c7fc45b53b661e Mon Sep 17 00:00:00 2001 From: Dario Oddenino Date: Fri, 5 Aug 2022 04:15:50 +0200 Subject: [PATCH] Avoid setting stdin handle when not necessary (#3248) * Avoid setting stdin handle when not necessary Avoid setting the stdin handle in `shell_impl` when the input argument is None. This permits to run commands with no stdin with :sh * refactoring to avoid code duplication * making clippy happy * Process variable name fix --- helix-term/src/commands.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index cd79cfb8..32f28004 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -4552,14 +4552,18 @@ fn shell_impl( use std::process::{Command, Stdio}; ensure!(!shell.is_empty(), "No shell set"); - let mut process = match Command::new(&shell[0]) + let mut process = Command::new(&shell[0]); + process .args(&shell[1..]) .arg(cmd) - .stdin(Stdio::piped()) .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn() - { + .stderr(Stdio::piped()); + + if input.is_some() { + process.stdin(Stdio::piped()); + } + + let mut process = match process.spawn() { Ok(process) => process, Err(e) => { log::error!("Failed to start shell: {}", e);