Merge pull request #2298 from zed-industries/fix-deadlock

Fix deadlock while initializing JSON language server
This commit is contained in:
Julia 2023-03-16 17:41:54 -04:00 committed by GitHub
commit 3464961aa4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -567,22 +567,27 @@ impl LanguageRegistry {
}
pub fn workspace_configuration(&self, cx: &mut MutableAppContext) -> Task<serde_json::Value> {
let lsp_adapters = {
let state = self.state.read();
state
.available_languages
.iter()
.filter_map(|l| l.lsp_adapter.clone())
.chain(
state
.languages
.iter()
.filter_map(|l| l.adapter.as_ref().map(|a| a.adapter.clone())),
)
.collect::<Vec<_>>()
};
let mut language_configs = Vec::new();
for language in &state.available_languages {
if let Some(adapter) = language.lsp_adapter.as_ref() {
for adapter in &lsp_adapters {
if let Some(language_config) = adapter.workspace_configuration(cx) {
language_configs.push(language_config);
}
}
}
for language in &state.languages {
if let Some(adapter) = language.lsp_adapter() {
if let Some(language_config) = adapter.workspace_configuration(cx) {
language_configs.push(language_config);
}
}
}
cx.background().spawn(async move {
let mut config = serde_json::json!({});