diff --git a/crates/copilot/src/copilot.rs b/crates/copilot/src/copilot.rs index 13aa904b5c8e8da95023ddc7d7c3a2f5453a8824..a5d26f8254fd046ed3b695ceb0ceae546d14020f 100644 --- a/crates/copilot/src/copilot.rs +++ b/crates/copilot/src/copilot.rs @@ -24,6 +24,7 @@ use std::{ mem, ops::Range, path::{Path, PathBuf}, + pin::Pin, sync::Arc, }; use util::{ @@ -271,6 +272,20 @@ pub struct Copilot { impl Entity for Copilot { type Event = (); + + fn app_will_quit( + &mut self, + _: &mut AppContext, + ) -> Option>>> { + match mem::replace(&mut self.server, CopilotServer::Disabled) { + CopilotServer::Running(server) => Some(Box::pin(async move { + if let Some(shutdown) = server.lsp.shutdown() { + shutdown.await; + } + })), + _ => None, + } + } } impl Copilot {