From ead7155b0f61886e510a5b81d0e05b97bc5d9964 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Thu, 21 Sep 2023 10:59:19 +0300 Subject: [PATCH 1/3] Make LSP panel scrollable co-authored-by: Max --- crates/language_tools/src/lsp_log.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/language_tools/src/lsp_log.rs b/crates/language_tools/src/lsp_log.rs index 48be24e22fccacd1d0626ea7c03b2e22587330da..d0e9e9383941cfe39af543a98fb3188fcb917c1a 100644 --- a/crates/language_tools/src/lsp_log.rs +++ b/crates/language_tools/src/lsp_log.rs @@ -647,6 +647,7 @@ impl View for LspLogToolbarItemView { Overlay::new( MouseEventHandler::new::(0, cx, move |_, cx| { Flex::column() + .scrollable::(0, None, cx) .with_children(menu_rows.into_iter().map(|row| { Self::render_language_server_menu_item( row.server_id, From a2ac5ae47866e2d3af65df87251170dce92b0477 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Wed, 20 Sep 2023 14:35:56 +0300 Subject: [PATCH 2/3] Fix RPC logs not being displayed for supplementary servers --- crates/project/src/project.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 7b6aba72c4c7e914a8b45952e935ebff75a001ef..83aba85bd3b4f3120f48da9ea7ae7fc4f37b07e8 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -7968,7 +7968,7 @@ impl Project { } pub fn language_server_for_id(&self, id: LanguageServerId) -> Option> { - if let LanguageServerState::Running { server, .. } = self.language_servers.get(&id)? { + if let Some(LanguageServerState::Running { server, .. }) = self.language_servers.get(&id) { Some(server.clone()) } else if let Some((_, server)) = self.supplementary_language_servers.get(&id) { Some(Arc::clone(server)) From 1c53b0a1c0d0afb7a5e15d62f63d512822a1fe3f Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Wed, 20 Sep 2023 12:39:08 +0300 Subject: [PATCH 3/3] Properly re-add Copilot LSP server --- crates/project/src/project.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 83aba85bd3b4f3120f48da9ea7ae7fc4f37b07e8..e4858587ad46fb5a7eef8baa52cdb18c2692ce4c 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -8039,11 +8039,9 @@ fn subscribe_for_copilot_events( copilot, |project, copilot, copilot_event, cx| match copilot_event { copilot::Event::CopilotLanguageServerStarted => { - if let Some((name, copilot_server)) = copilot.read(cx).language_server() { - let new_server_id = copilot_server.server_id(); - if let hash_map::Entry::Vacant(v) = - project.supplementary_language_servers.entry(new_server_id) - { + match copilot.read(cx).language_server() { + Some((name, copilot_server)) => { + let new_server_id = copilot_server.server_id(); let weak_project = cx.weak_handle(); let copilot_log_subscription = copilot_server .on_notification::( @@ -8058,10 +8056,11 @@ fn subscribe_for_copilot_events( } }, ); + project.supplementary_language_servers.insert(new_server_id, (name.clone(), Arc::clone(copilot_server))); project.copilot_log_subscription = Some(copilot_log_subscription); - v.insert((name.clone(), Arc::clone(copilot_server))); cx.emit(Event::LanguageServerAdded(new_server_id)); } + None => debug_panic!("Received Copilot language server started event, but no language server is running"), } } },