Simplify

Kirill Bulatov created

Change summary

crates/project/src/project.rs | 81 ++++++++++++------------------------
1 file changed, 27 insertions(+), 54 deletions(-)

Detailed changes

crates/project/src/project.rs 🔗

@@ -8448,7 +8448,8 @@ impl Project {
                         {
                             Ok(None) => {
                                 let new_task = project.update(&mut cx, |project, cx| {
-                                    let new_task = spawn_default_prettier(node, cx);
+                                    let new_task =
+                                        start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), cx);
                                     project
                                         .default_prettier
                                         .get_or_insert_with(|| DefaultPrettier {
@@ -8480,35 +8481,13 @@ impl Project {
                                 }
 
                                 log::info!("Found prettier in {prettier_dir:?}, starting.");
-                                let task_prettier_dir = prettier_dir.clone();
-                                let task_project = project.clone();
-                                let new_server_id = project.update(&mut cx, |this, _| {
-                                    this.languages.next_language_server_id()
-                                });
-                                let new_prettier_task = cx
-                                    .spawn(|mut cx| async move {
-                                        let prettier = Prettier::start(
-                                            new_server_id,
-                                            task_prettier_dir,
-                                            node,
-                                            cx.clone(),
-                                        )
-                                        .await
-                                        .context("prettier start")
-                                        .map_err(Arc::new)?;
-                                        register_new_prettier(
-                                            &task_project,
-                                            &prettier,
-                                            new_server_id,
-                                            &mut cx,
-                                        );
-                                        Ok(Arc::new(prettier)).map_err(Arc::new)
-                                    })
-                                    .shared();
-                                project.update(&mut cx, |project, _| {
+                                let new_prettier_task = project.update(&mut cx, |project, cx| {
+                                    let new_prettier_task =
+                                        start_prettier(node, prettier_dir.clone(), cx);
                                     project
                                         .prettier_instances
                                         .insert(prettier_dir.clone(), new_prettier_task.clone());
+                                    new_prettier_task
                                 });
                                 Some((Some(prettier_dir), new_prettier_task))
                             }
@@ -8516,7 +8495,7 @@ impl Project {
                     });
                 }
                 None => {
-                    let new_task = spawn_default_prettier(node, cx);
+                    let new_task = start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), cx);
                     self.default_prettier
                         .get_or_insert_with(|| DefaultPrettier {
                             instance: None,
@@ -8657,6 +8636,26 @@ impl Project {
     }
 }
 
+fn start_prettier(
+    node: Arc<dyn NodeRuntime>,
+    prettier_dir: PathBuf,
+    cx: &mut ModelContext<'_, Project>,
+) -> Shared<Task<Result<Arc<Prettier>, Arc<anyhow::Error>>>> {
+    cx.spawn(|project, mut cx| async move {
+        let new_server_id = project.update(&mut cx, |project, _| {
+            project.languages.next_language_server_id()
+        });
+        let new_prettier = Prettier::start(new_server_id, prettier_dir, node, cx.clone())
+            .await
+            .context("default prettier spawn")
+            .map(Arc::new)
+            .map_err(Arc::new)?;
+        register_new_prettier(&project, &new_prettier, new_server_id, &mut cx);
+        Ok(new_prettier)
+    })
+    .shared()
+}
+
 fn register_new_prettier(
     project: &ModelHandle<Project>,
     prettier: &Prettier,
@@ -8682,32 +8681,6 @@ fn register_new_prettier(
     }
 }
 
-fn spawn_default_prettier(
-    node: Arc<dyn NodeRuntime>,
-    cx: &mut ModelContext<'_, Project>,
-) -> Shared<Task<Result<Arc<Prettier>, Arc<anyhow::Error>>>> {
-    cx.spawn(|project, mut cx| async move {
-        let new_server_id = project.update(&mut cx, |project, _| {
-            project.languages.next_language_server_id()
-        });
-        let new_prettier = Prettier::start(
-            new_server_id,
-            DEFAULT_PRETTIER_DIR.clone(),
-            node,
-            cx.clone(),
-        )
-        .await
-        .context("default prettier spawn")
-        .map(Arc::new)
-        .map_err(Arc::new)?;
-
-        register_new_prettier(&project, &new_prettier, new_server_id, &mut cx);
-
-        Ok(new_prettier)
-    })
-    .shared()
-}
-
 #[cfg(not(any(test, feature = "test-support")))]
 async fn install_default_prettier(
     plugins_to_install: HashSet<&'static str>,