on master help sign in
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
1 file changed+2
helix-term/src/commands.rs+2
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() {