repl: Address simple fixes (#15828)

Kyle Kelley created

Release Notes:

- Added logging in debug mode of raw kernel output from REPL.
- Fixed REPL kernels not being shut down completely on close of Editor

Change summary

crates/repl/src/kernels.rs | 3 ++-
crates/repl/src/session.rs | 6 ++----
2 files changed, 4 insertions(+), 5 deletions(-)

Detailed changes

crates/repl/src/kernels.rs 🔗

@@ -225,6 +225,7 @@ impl RunningKernel {
                 .current_dir(&working_directory)
                 .stdout(std::process::Stdio::piped())
                 .stderr(std::process::Stdio::piped())
+                .stdin(std::process::Stdio::piped())
                 .kill_on_drop(true)
                 .spawn()
                 .context("failed to start the kernel process")?;
@@ -329,8 +330,8 @@ impl RunningKernel {
 impl Drop for RunningKernel {
     fn drop(&mut self) {
         std::fs::remove_file(&self.connection_path).ok();
-
         self.request_tx.close_channel();
+        self.process.kill().ok();
     }
 }
 

crates/repl/src/session.rs 🔗

@@ -220,8 +220,6 @@ impl Session {
                 match kernel {
                     Ok((mut kernel, mut messages_rx)) => {
                         this.update(&mut cx, |session, cx| {
-                            // At this point we can create a new kind of kernel that has the process and our long running background tasks
-
                             let stderr = kernel.process.stderr.take();
 
                             cx.spawn(|_session, mut _cx| async move {
@@ -236,7 +234,7 @@ impl Session {
                             })
                             .detach();
 
-                            let stdout = kernel.process.stderr.take();
+                            let stdout = kernel.process.stdout.take();
 
                             cx.spawn(|_session, mut _cx| async move {
                                 if let None = stdout {
@@ -314,7 +312,7 @@ impl Session {
                                 }
                             });
 
-                            // todo!(kyle): send kernelinforequest once our shell channel read/writes are split
+                            // todo!(@rgbkrk): send kernelinforequest once our shell channel read/writes are split
                             // cx.spawn(|this, mut cx| async move {
                             //     cx.background_executor()
                             //         .timer(Duration::from_millis(120))