mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-19 18:41:56 +03:00
Fix the bugs
This commit is contained in:
parent
6bbb79a9f5
commit
ff144def63
@ -63,6 +63,15 @@ impl Prettier {
|
|||||||
.components()
|
.components()
|
||||||
.take_while(|component| !is_node_modules(component))
|
.take_while(|component| !is_node_modules(component))
|
||||||
.collect::<PathBuf>();
|
.collect::<PathBuf>();
|
||||||
|
let path_to_check_metadata = fs
|
||||||
|
.metadata(&path_to_check)
|
||||||
|
.await
|
||||||
|
.with_context(|| format!("failed to get metadata for initial path {path_to_check:?}"))?
|
||||||
|
.with_context(|| format!("empty metadata for initial path {path_to_check:?}"))?;
|
||||||
|
if !path_to_check_metadata.is_dir {
|
||||||
|
path_to_check.pop();
|
||||||
|
}
|
||||||
|
|
||||||
let mut project_path_with_prettier_dependency = None;
|
let mut project_path_with_prettier_dependency = None;
|
||||||
loop {
|
loop {
|
||||||
if installed_prettiers.contains(&path_to_check) {
|
if installed_prettiers.contains(&path_to_check) {
|
||||||
@ -361,7 +370,7 @@ async fn read_package_json(
|
|||||||
if let Some(package_json_metadata) = fs
|
if let Some(package_json_metadata) = fs
|
||||||
.metadata(&possible_package_json)
|
.metadata(&possible_package_json)
|
||||||
.await
|
.await
|
||||||
.with_context(|| format!("Fetching metadata for {possible_package_json:?}"))?
|
.with_context(|| format!("fetching metadata for package json {possible_package_json:?}"))?
|
||||||
{
|
{
|
||||||
if !package_json_metadata.is_dir && !package_json_metadata.is_symlink {
|
if !package_json_metadata.is_dir && !package_json_metadata.is_symlink {
|
||||||
let package_json_contents = fs
|
let package_json_contents = fs
|
||||||
|
@ -8464,9 +8464,9 @@ impl Project {
|
|||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Some((
|
return Some((
|
||||||
None,
|
None,
|
||||||
Task::ready(Err(Arc::new(e.context(
|
Task::ready(Err(Arc::new(
|
||||||
"determining prettier path for worktree {worktree_path:?}",
|
e.context("determining prettier path"),
|
||||||
))))
|
)))
|
||||||
.shared(),
|
.shared(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -8481,7 +8481,7 @@ 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 task_prettier_dir = prettier_dir.clone();
|
||||||
let weak_project = project.downgrade();
|
let task_project = project.clone();
|
||||||
let new_server_id = project.update(&mut cx, |this, _| {
|
let new_server_id = project.update(&mut cx, |this, _| {
|
||||||
this.languages.next_language_server_id()
|
this.languages.next_language_server_id()
|
||||||
});
|
});
|
||||||
@ -8496,33 +8496,12 @@ impl Project {
|
|||||||
.await
|
.await
|
||||||
.context("prettier start")
|
.context("prettier start")
|
||||||
.map_err(Arc::new)?;
|
.map_err(Arc::new)?;
|
||||||
log::info!(
|
register_new_prettier(
|
||||||
"Started prettier in {:?}",
|
&task_project,
|
||||||
prettier.prettier_dir()
|
&prettier,
|
||||||
|
new_server_id,
|
||||||
|
&mut cx,
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some((project, prettier_server)) =
|
|
||||||
weak_project.upgrade(&mut cx).zip(prettier.server())
|
|
||||||
{
|
|
||||||
project.update(&mut cx, |project, cx| {
|
|
||||||
let name = if prettier.is_default() {
|
|
||||||
LanguageServerName(Arc::from(
|
|
||||||
"prettier (default)",
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
LanguageServerName(Arc::from(format!(
|
|
||||||
"prettier ({})",
|
|
||||||
prettier.prettier_dir().display(),
|
|
||||||
)))
|
|
||||||
};
|
|
||||||
|
|
||||||
project.supplementary_language_servers.insert(
|
|
||||||
new_server_id,
|
|
||||||
(name, Arc::clone(prettier_server)),
|
|
||||||
);
|
|
||||||
cx.emit(Event::LanguageServerAdded(new_server_id));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Ok(Arc::new(prettier)).map_err(Arc::new)
|
Ok(Arc::new(prettier)).map_err(Arc::new)
|
||||||
})
|
})
|
||||||
.shared();
|
.shared();
|
||||||
@ -8678,6 +8657,31 @@ impl Project {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn register_new_prettier(
|
||||||
|
project: &ModelHandle<Project>,
|
||||||
|
prettier: &Prettier,
|
||||||
|
new_server_id: LanguageServerId,
|
||||||
|
cx: &mut AsyncAppContext,
|
||||||
|
) {
|
||||||
|
log::info!("Started prettier in {:?}", prettier.prettier_dir());
|
||||||
|
if let Some(prettier_server) = prettier.server() {
|
||||||
|
project.update(cx, |project, cx| {
|
||||||
|
let name = if prettier.is_default() {
|
||||||
|
LanguageServerName(Arc::from("prettier (default)"))
|
||||||
|
} else {
|
||||||
|
LanguageServerName(Arc::from(format!(
|
||||||
|
"prettier ({})",
|
||||||
|
prettier.prettier_dir().display(),
|
||||||
|
)))
|
||||||
|
};
|
||||||
|
project
|
||||||
|
.supplementary_language_servers
|
||||||
|
.insert(new_server_id, (name, Arc::clone(prettier_server)));
|
||||||
|
cx.emit(Event::LanguageServerAdded(new_server_id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn spawn_default_prettier(
|
fn spawn_default_prettier(
|
||||||
node: Arc<dyn NodeRuntime>,
|
node: Arc<dyn NodeRuntime>,
|
||||||
cx: &mut ModelContext<'_, Project>,
|
cx: &mut ModelContext<'_, Project>,
|
||||||
@ -8686,7 +8690,7 @@ fn spawn_default_prettier(
|
|||||||
let new_server_id = project.update(&mut cx, |project, _| {
|
let new_server_id = project.update(&mut cx, |project, _| {
|
||||||
project.languages.next_language_server_id()
|
project.languages.next_language_server_id()
|
||||||
});
|
});
|
||||||
Prettier::start(
|
let new_prettier = Prettier::start(
|
||||||
new_server_id,
|
new_server_id,
|
||||||
DEFAULT_PRETTIER_DIR.clone(),
|
DEFAULT_PRETTIER_DIR.clone(),
|
||||||
node,
|
node,
|
||||||
@ -8695,7 +8699,11 @@ fn spawn_default_prettier(
|
|||||||
.await
|
.await
|
||||||
.context("default prettier spawn")
|
.context("default prettier spawn")
|
||||||
.map(Arc::new)
|
.map(Arc::new)
|
||||||
.map_err(Arc::new)
|
.map_err(Arc::new)?;
|
||||||
|
|
||||||
|
register_new_prettier(&project, &new_prettier, new_server_id, &mut cx);
|
||||||
|
|
||||||
|
Ok(new_prettier)
|
||||||
})
|
})
|
||||||
.shared()
|
.shared()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user