diff options
author | GabrielDertoni | 2022-10-09 03:23:02 +0000 |
---|---|---|
committer | Michael Davis | 2022-10-26 01:24:44 +0000 |
commit | 9fae4b81189e9ba02718595a09840535f6fb558b (patch) | |
tree | 95d3529519e6bfbe651afc0a2fee31b0827d7c59 | |
parent | c47ca331374b28a70c8bb9fd0fe991c478c696a1 (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.
-rw-r--r-- | helix-term/src/commands.rs | 2 |
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() { |