fix: Respect workspace-lsp-roots on doc opening (#12223)

When a new language server is started, find_lsp_workspace is called
with LanguageConfiguration::workspace_lsp_roots as the root_dirs.

This behavior is different when a new document is opened.
find_lsp_workspace is called with editor::Config::workspace_lsp_roots
which is never set.

This leads to a bug where workspace-lsp-roots is not respected when
opening a new document. This commit fixes this bug.
This commit is contained in:
Maurice Hieronymus 2024-12-22 15:08:41 +01:00 committed by GitHub
parent ba6e6dc3dd
commit b946b21b01
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -701,7 +701,11 @@ impl Registry {
}
if let Some((_, client)) = clients.iter().enumerate().find(|(i, client)| {
client.try_add_doc(&language_config.roots, root_dirs, doc_path, *i == 0)
let manual_roots = language_config
.workspace_lsp_roots
.as_deref()
.unwrap_or(root_dirs);
client.try_add_doc(&language_config.roots, manual_roots, doc_path, *i == 0)
}) {
return Some((name.to_owned(), Ok(client.clone())));
}