@@ -712,64 +712,64 @@ impl Project {
}
fn on_settings_changed(&mut self, cx: &mut ModelContext<'_, Self>) {
- // let settings = cx.global::<Settings>();
- // 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()));
- // }
- // }
- // }
- // }
- // }
-
- // 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);
- // }
-
- // cx.notify();
- // });
- // }))
-
- // TODO(isaac): uncomment the above
- todo!()
+ let settings = cx.global::<Settings>();
+ 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()));
+ }
+ }
+ }
+ }
+ }
+
+ 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);
+ }
+
+ cx.notify();
+ });
+ }))
+
+ // // TODO(isaac): uncomment the above
+ // todo!()
}
pub fn buffer_for_id(&self, remote_id: u64, cx: &AppContext) -> Option<ModelHandle<Buffer>> {