Uncommented previously commented sections

Isaac Clayton created

Change summary

crates/project/src/project.rs | 116 ++++++++++++++++++------------------
1 file changed, 58 insertions(+), 58 deletions(-)

Detailed changes

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::<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>> {