This commit is contained in:
Kirill Bulatov 2023-11-02 21:50:47 +02:00
parent ff144def63
commit b75d8a60a8

View file

@ -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>,