aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorGabrielDertoni2022-10-09 03:23:02 +0000
committerMichael Davis2022-10-26 01:24:44 +0000
commit9fae4b81189e9ba02718595a09840535f6fb558b (patch)
tree95d3529519e6bfbe651afc0a2fee31b0827d7c59 /helix-term
parentc47ca331374b28a70c8bb9fd0fe991c478c696a1 (diff)
fix: terminal freezing on `shell_insert_output`
This bug occurs on `shell_insert_output` and `shell_append_output` commands. The previous implementation would create a child process using the Rust stdlib's `Command` builder. However, when nothing should be piped in from the editor, the default value for `stdin` would be used. According to the Rust stdlib documentation that is `Stdio::inherit` which will make the child process inherit the parent process' stdin. This would cause the terminal to freeze. This change will set the child process' stdin to `Stdio::null` whenever it doesn't pipe it. In the `if` statement where this change was made there was an extra condition for windows that I am not sure if would require some special treatment.
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/commands.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 468e9814..69870a27 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -4665,6 +4665,8 @@ fn shell_impl(
if input.is_some() || cfg!(windows) {
process.stdin(Stdio::piped());
+ } else {
+ process.stdin(Stdio::null());
}
let mut process = match process.spawn() {