mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-19 00:31:19 +00:00
Fixing naming from graph to list
This commit is contained in:
parent
e2535926e9
commit
1b8288ff96
7 changed files with 52 additions and 48 deletions
|
@ -22,16 +22,21 @@ pub(crate) fn fetch_crates(db: &RootDatabase) -> Vec<CrateInfo> {
|
|||
.iter()
|
||||
.map(|crate_id| &crate_graph[crate_id])
|
||||
.filter(|&data| !matches!(data.origin, CrateOrigin::Local { .. }))
|
||||
.map(|data| {
|
||||
let crate_name = crate_name(data);
|
||||
let version = data.version.clone().unwrap_or_else(|| "".to_owned());
|
||||
let crate_path = crate_path(db, data, &crate_name);
|
||||
|
||||
CrateInfo { name: crate_name, version, path: crate_path }
|
||||
})
|
||||
.filter_map(|data| crate_info(data, db))
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn crate_info(data: &ide_db::base_db::CrateData, db: &RootDatabase) -> Option<CrateInfo> {
|
||||
let crate_name = crate_name(data);
|
||||
let crate_path = crate_path(db, data, &crate_name);
|
||||
if let Some(crate_path) = crate_path {
|
||||
let version = data.version.clone().unwrap_or_else(|| "".to_owned());
|
||||
Some(CrateInfo { name: crate_name, version, path: crate_path })
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
fn crate_name(data: &ide_db::base_db::CrateData) -> String {
|
||||
data.display_name
|
||||
.clone()
|
||||
|
@ -39,27 +44,28 @@ fn crate_name(data: &ide_db::base_db::CrateData) -> String {
|
|||
.unwrap_or("unknown".to_string())
|
||||
}
|
||||
|
||||
fn crate_path(db: &RootDatabase, data: &ide_db::base_db::CrateData, crate_name: &str) -> String {
|
||||
fn crate_path(
|
||||
db: &RootDatabase,
|
||||
data: &ide_db::base_db::CrateData,
|
||||
crate_name: &str,
|
||||
) -> Option<String> {
|
||||
let source_root_id = db.file_source_root(data.root_file_id);
|
||||
let source_root = db.source_root(source_root_id);
|
||||
let source_root_path = source_root.path_for_file(&data.root_file_id);
|
||||
match source_root_path.cloned() {
|
||||
Some(mut root_path) => {
|
||||
let mut crate_path = "".to_string();
|
||||
while let Some(vfs_path) = root_path.parent() {
|
||||
match vfs_path.name_and_extension() {
|
||||
Some((name, _)) => {
|
||||
if name.starts_with(crate_name) {
|
||||
crate_path = vfs_path.to_string();
|
||||
break;
|
||||
}
|
||||
source_root_path.cloned().and_then(|mut root_path| {
|
||||
let mut crate_path = None;
|
||||
while let Some(vfs_path) = root_path.parent() {
|
||||
match vfs_path.name_and_extension() {
|
||||
Some((name, _)) => {
|
||||
if name.starts_with(crate_name) {
|
||||
crate_path = Some(vfs_path.to_string());
|
||||
break;
|
||||
}
|
||||
None => break,
|
||||
}
|
||||
root_path = vfs_path;
|
||||
None => break,
|
||||
}
|
||||
crate_path
|
||||
root_path = vfs_path;
|
||||
}
|
||||
None => "".to_owned(),
|
||||
}
|
||||
crate_path
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue