Simplify
This commit is contained in:
parent
ff144def63
commit
b75d8a60a8
1 changed files with 27 additions and 54 deletions
|
@ -8448,7 +8448,8 @@ impl Project {
|
||||||
{
|
{
|
||||||
Ok(None) => {
|
Ok(None) => {
|
||||||
let new_task = project.update(&mut cx, |project, cx| {
|
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
|
project
|
||||||
.default_prettier
|
.default_prettier
|
||||||
.get_or_insert_with(|| DefaultPrettier {
|
.get_or_insert_with(|| DefaultPrettier {
|
||||||
|
@ -8480,35 +8481,13 @@ impl Project {
|
||||||
}
|
}
|
||||||
|
|
||||||
log::info!("Found prettier in {prettier_dir:?}, starting.");
|
log::info!("Found prettier in {prettier_dir:?}, starting.");
|
||||||
let task_prettier_dir = prettier_dir.clone();
|
let new_prettier_task = project.update(&mut cx, |project, cx| {
|
||||||
let task_project = project.clone();
|
let new_prettier_task =
|
||||||
let new_server_id = project.update(&mut cx, |this, _| {
|
start_prettier(node, prettier_dir.clone(), cx);
|
||||||
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, _| {
|
|
||||||
project
|
project
|
||||||
.prettier_instances
|
.prettier_instances
|
||||||
.insert(prettier_dir.clone(), new_prettier_task.clone());
|
.insert(prettier_dir.clone(), new_prettier_task.clone());
|
||||||
|
new_prettier_task
|
||||||
});
|
});
|
||||||
Some((Some(prettier_dir), new_prettier_task))
|
Some((Some(prettier_dir), new_prettier_task))
|
||||||
}
|
}
|
||||||
|
@ -8516,7 +8495,7 @@ impl Project {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
let new_task = spawn_default_prettier(node, cx);
|
let new_task = start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), cx);
|
||||||
self.default_prettier
|
self.default_prettier
|
||||||
.get_or_insert_with(|| DefaultPrettier {
|
.get_or_insert_with(|| DefaultPrettier {
|
||||||
instance: None,
|
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(
|
fn register_new_prettier(
|
||||||
project: &ModelHandle<Project>,
|
project: &ModelHandle<Project>,
|
||||||
prettier: &Prettier,
|
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")))]
|
#[cfg(not(any(test, feature = "test-support")))]
|
||||||
async fn install_default_prettier(
|
async fn install_default_prettier(
|
||||||
plugins_to_install: HashSet<&'static str>,
|
plugins_to_install: HashSet<&'static str>,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue