mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-12 05:15:00 +00:00
Merge pull request #2298 from zed-industries/fix-deadlock
Fix deadlock while initializing JSON language server
This commit is contained in:
commit
3464961aa4
1 changed files with 18 additions and 13 deletions
|
@ -567,20 +567,25 @@ impl LanguageRegistry {
|
|||
}
|
||||
|
||||
pub fn workspace_configuration(&self, cx: &mut MutableAppContext) -> Task<serde_json::Value> {
|
||||
let state = self.state.read();
|
||||
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() {
|
||||
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);
|
||||
}
|
||||
for adapter in &lsp_adapters {
|
||||
if let Some(language_config) = adapter.workspace_configuration(cx) {
|
||||
language_configs.push(language_config);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue