fix(commands): change pipe-like output trimming (#11183)

This commit is contained in:
RoloEdits 2024-07-15 20:29:44 -07:00 committed by GitHub
parent 850c9f691e
commit 535351067c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5745,14 +5745,20 @@ fn shell(cx: &mut compositor::Context, cmd: &str, behavior: &ShellBehavior) {
let output = if let Some(output) = shell_output.as_ref() { let output = if let Some(output) = shell_output.as_ref() {
output.clone() output.clone()
} else { } else {
let fragment = range.slice(text); let input = range.slice(text);
match shell_impl(shell, cmd, pipe.then(|| fragment.into())) { match shell_impl(shell, cmd, pipe.then(|| input.into())) {
Ok(result) => { Ok(mut output) => {
let result = Tendril::from(result.trim_end()); if !input.ends_with("\n") && !output.is_empty() && output.ends_with('\n') {
if !pipe { output.pop();
shell_output = Some(result.clone()); if output.ends_with('\r') {
output.pop();
} }
result }
if !pipe {
shell_output = Some(output.clone());
}
output
} }
Err(err) => { Err(err) => {
cx.editor.set_error(err.to_string()); cx.editor.set_error(err.to_string());