lsp: Use available workspace folders in initialize params (#25753)

Closes https://github.com/zed-industries/zed/issues/25743
Closes https://github.com/biomejs/biome-zed/issues/73

Release Notes:

- Fixed issues with launching Svelte/Biome language servers
This commit is contained in:
Piotr Osiewicz 2025-02-27 16:45:59 +01:00 committed by GitHub
parent 5c400dac8d
commit 2e98bc17cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 34 additions and 19 deletions

View file

@ -206,14 +206,14 @@ impl LocalLspStore {
);
let binary = self.get_language_server_binary(adapter.clone(), delegate.clone(), true, cx);
let pending_workspace_folders: Arc<Mutex<BTreeSet<Url>>> = Default::default();
let pending_server = cx.spawn({
let adapter = adapter.clone();
let server_name = adapter.name.clone();
let stderr_capture = stderr_capture.clone();
#[cfg(any(test, feature = "test-support"))]
let lsp_store = self.weak.clone();
let pending_workspace_folders = pending_workspace_folders.clone();
move |cx| async move {
let binary = binary.await?;
#[cfg(any(test, feature = "test-support"))]
@ -239,12 +239,12 @@ impl LocalLspStore {
binary,
&root_path,
adapter.code_action_kinds(),
pending_workspace_folders,
cx,
)
}
});
let pending_workspace_folders: Arc<Mutex<BTreeSet<Url>>> = Default::default();
let startup = {
let server_name = adapter.name.0.clone();
let delegate = delegate as Arc<dyn LspAdapterDelegate>;
@ -7551,10 +7551,11 @@ impl LspStore {
// Update language_servers collection with Running variant of LanguageServerState
// indicating that the server is up and running and ready
let workspace_folders = workspace_folders.lock().clone();
local.language_servers.insert(
server_id,
LanguageServerState::running(
workspace_folders.lock().clone(),
workspace_folders,
adapter.clone(),
language_server.clone(),
None,