From 213b31607c02f2f18fb9f080a47f6c1698809f6a Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 9 Jun 2022 10:59:02 +0200 Subject: [PATCH] Remove language server statuses synchronously when stopping a server --- crates/project/src/project.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 8c5d18f79f0c2fd81ad704dd7cb16d3085d2f3b4..243ac5dcd5fed00b90b6059a4239bcb43928683e 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -2130,10 +2130,15 @@ impl Project { cx: &mut ModelContext, ) -> Task<()> { let key = (worktree_id, adapter_name); - self.language_servers.remove(&key); - if let Some(language_server) = self.started_language_servers.remove(&key) { + if let Some((_, language_server)) = self.language_servers.remove(&key) { + self.language_server_statuses + .remove(&language_server.server_id()); + cx.notify(); + } + + if let Some(started_language_server) = self.started_language_servers.remove(&key) { cx.spawn_weak(|this, mut cx| async move { - if let Some(language_server) = language_server.await { + if let Some(language_server) = started_language_server.await { if let Some(shutdown) = language_server.shutdown() { shutdown.await; }