Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r--helix-term/src/commands.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 23490288..7e0bee92 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -5745,14 +5745,20 @@ fn shell(cx: &mut compositor::Context, cmd: &str, behavior: &ShellBehavior) {
let output = if let Some(output) = shell_output.as_ref() {
output.clone()
} else {
- let fragment = range.slice(text);
- match shell_impl(shell, cmd, pipe.then(|| fragment.into())) {
- Ok(result) => {
- let result = Tendril::from(result.trim_end());
+ let input = range.slice(text);
+ match shell_impl(shell, cmd, pipe.then(|| input.into())) {
+ Ok(mut output) => {
+ if !input.ends_with("\n") && !output.is_empty() && output.ends_with('\n') {
+ output.pop();
+ if output.ends_with('\r') {
+ output.pop();
+ }
+ }
+
if !pipe {
- shell_output = Some(result.clone());
+ shell_output = Some(output.clone());
}
- result
+ output
}
Err(err) => {
cx.editor.set_error(err.to_string());