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.
commit9fae4b81189e9ba02718595a09840535f6fb558b
authorGabrielDertoni <gab.dertoni@gmail.com>
dateSun 9 Oct 2022, 00:23 (4 years ago)
parentc47ca33
helix-term/src/commands.rs+2
@@ -4665,6 +4665,8 @@ fn shell_impl(
46654665
46664666 if input.is_some() || cfg!(windows) {
46674667 process.stdin(Stdio::piped());
4668+ } else {
4669+ process.stdin(Stdio::null());
46684670 }
46694671
46704672 let mut process = match process.spawn() {