diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index ca7052cb8b..c1bfa7f318 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -712,64 +712,64 @@ impl Project { } fn on_settings_changed(&mut self, cx: &mut ModelContext<'_, Self>) { - // let settings = cx.global::(); - // self.lsp_settings_changed = Some(cx.spawn(|project, cx| async { - // let language_servers_to_start = project.update(&mut cx, |project, cx| { - // let mut language_servers_to_start = Vec::new(); - // for buffer in self.opened_buffers.values() { - // if let Some(buffer) = buffer.upgrade(cx) { - // let buffer = buffer.read(cx); - // if let Some((file, language)) = - // File::from_dyn(buffer.file()).zip(buffer.language()) - // { - // if settings.enable_language_server(Some(&language.name())) { - // let worktree = file.worktree.read(cx); - // language_servers_to_start.push(( - // worktree.id(), - // worktree.as_local().unwrap().abs_path().clone(), - // language.clone(), - // )); - // } - // } - // } - // } - // language_servers_to_start - // }); + let settings = cx.global::(); + self.lsp_settings_changed = Some(cx.spawn(|project, cx| async { + let language_servers_to_start = project.update(&mut cx, |project, cx| { + let mut language_servers_to_start = Vec::new(); + for buffer in self.opened_buffers.values() { + if let Some(buffer) = buffer.upgrade(cx) { + let buffer = buffer.read(cx); + if let Some((file, language)) = + File::from_dyn(buffer.file()).zip(buffer.language()) + { + if settings.enable_language_server(Some(&language.name())) { + let worktree = file.worktree.read(cx); + language_servers_to_start.push(( + worktree.id(), + worktree.as_local().unwrap().abs_path().clone(), + language.clone(), + )); + } + } + } + } + language_servers_to_start + }); - // let mut language_servers_to_stop = Vec::new(); - // for language in self.languages.to_vec() { - // if let Some(lsp_adapter) = language.lsp_adapter() { - // if !settings.enable_language_server(Some(&language.name())) { - // let lsp_name = lsp_adapter.name().await; - // for (worktree_id, started_lsp_name) in self.started_language_servers.keys() - // { - // if lsp_name == *started_lsp_name { - // language_servers_to_stop - // .push((*worktree_id, started_lsp_name.clone())); - // } - // } - // } - // } - // } + let mut language_servers_to_stop = Vec::new(); + for language in self.languages.to_vec() { + if let Some(lsp_adapter) = language.lsp_adapter() { + if !settings.enable_language_server(Some(&language.name())) { + let lsp_name = lsp_adapter.name().await; + for (worktree_id, started_lsp_name) in self.started_language_servers.keys() + { + if lsp_name == *started_lsp_name { + language_servers_to_stop + .push((*worktree_id, started_lsp_name.clone())); + } + } + } + } + } - // project.update(&mut cx, |project, cx| { - // // Stop all newly-disabled language servers. - // for (worktree_id, adapter_name) in language_servers_to_stop { - // self.stop_language_server(worktree_id, adapter_name, cx) - // .detach(); - // } + project.update(&mut cx, |project, cx| { + // Stop all newly-disabled language servers. + for (worktree_id, adapter_name) in language_servers_to_stop { + self.stop_language_server(worktree_id, adapter_name, cx) + .detach(); + } - // // Start all the newly-enabled language servers. - // for (worktree_id, worktree_path, language) in language_servers_to_start { - // self.start_language_server(worktree_id, worktree_path, language, cx); - // } + // Start all the newly-enabled language servers. + for (worktree_id, worktree_path, language) in language_servers_to_start { + self.start_language_server(worktree_id, worktree_path, language, cx); + } - // cx.notify(); - // }); - // })) + cx.notify(); + }); + })) - // TODO(isaac): uncomment the above - todo!() + // // TODO(isaac): uncomment the above + // todo!() } pub fn buffer_for_id(&self, remote_id: u64, cx: &AppContext) -> Option> {