9269: Recreate status page r=lnicola a=Milo123459

I'm working on redesigning the status page.

Co-authored-by: Milo <50248166+Milo123459@users.noreply.github.com>
This commit is contained in:
bors[bot] 2021-06-29 19:53:19 +00:00 committed by GitHub
commit 11b9233fc4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 19 deletions

View file

@ -12,6 +12,7 @@ use ide_db::{
use itertools::Itertools; use itertools::Itertools;
use profile::{memory_usage, Bytes}; use profile::{memory_usage, Bytes};
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use std::env;
use stdx::format_to; use stdx::format_to;
use syntax::{ast, Parse, SyntaxNode}; use syntax::{ast, Parse, SyntaxNode};
@ -37,12 +38,14 @@ pub(crate) fn status(db: &RootDatabase, file_id: Option<FileId>) -> String {
format_to!(buf, "{}\n", FileTextQuery.in_db(db).entries::<FilesStats>()); format_to!(buf, "{}\n", FileTextQuery.in_db(db).entries::<FilesStats>());
format_to!(buf, "{}\n", LibrarySymbolsQuery.in_db(db).entries::<LibrarySymbolsStats>()); format_to!(buf, "{}\n", LibrarySymbolsQuery.in_db(db).entries::<LibrarySymbolsStats>());
format_to!(buf, "{}\n", syntax_tree_stats(db)); format_to!(buf, "{}\n", syntax_tree_stats(db));
format_to!(buf, "{} (macros)\n", macro_syntax_tree_stats(db)); format_to!(buf, "{} (Macros)\n", macro_syntax_tree_stats(db));
format_to!(buf, "{} total\n", memory_usage()); format_to!(buf, "{} in total\n", memory_usage());
format_to!(buf, "\ncounts:\n{}", profile::countme::get_all()); if env::var("RA_COUNT").is_ok() {
format_to!(buf, "\nCounts:\n{}", profile::countme::get_all());
}
if let Some(file_id) = file_id { if let Some(file_id) = file_id {
format_to!(buf, "\nfile info:\n"); format_to!(buf, "\nFile info:\n");
let krate = crate::parent_module::crate_for(db, file_id).pop(); let krate = crate::parent_module::crate_for(db, file_id).pop();
match krate { match krate {
Some(krate) => { Some(krate) => {
@ -51,19 +54,19 @@ pub(crate) fn status(db: &RootDatabase, file_id: Option<FileId>) -> String {
Some(it) => format!("{}({:?})", it, krate), Some(it) => format!("{}({:?})", it, krate),
None => format!("{:?}", krate), None => format!("{:?}", krate),
}; };
format_to!(buf, "crate: {}\n", display_crate(krate)); format_to!(buf, "Crate: {}\n", display_crate(krate));
let deps = crate_graph[krate] let deps = crate_graph[krate]
.dependencies .dependencies
.iter() .iter()
.map(|dep| format!("{}={:?}", dep.name, dep.crate_id)) .map(|dep| format!("{}={:?}", dep.name, dep.crate_id))
.format(", "); .format(", ");
format_to!(buf, "deps: {}\n", deps); format_to!(buf, "Dependencies: {}\n", deps);
} }
None => format_to!(buf, "does not belong to any crate"), None => format_to!(buf, "Does not belong to any crate"),
} }
} }
buf buf.trim().to_string()
} }
#[derive(Default)] #[derive(Default)]
@ -74,7 +77,7 @@ struct FilesStats {
impl fmt::Display for FilesStats { impl fmt::Display for FilesStats {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "{} ({}) files", self.total, self.size) write!(fmt, "{} of files", self.size)
} }
} }
@ -100,7 +103,7 @@ pub(crate) struct SyntaxTreeStats {
impl fmt::Display for SyntaxTreeStats { impl fmt::Display for SyntaxTreeStats {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "{} trees, {} retained", self.total, self.retained) write!(fmt, "{} trees, {} preserved", self.total, self.retained)
} }
} }
@ -142,7 +145,7 @@ struct LibrarySymbolsStats {
impl fmt::Display for LibrarySymbolsStats { impl fmt::Display for LibrarySymbolsStats {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "{} ({}) index symbols", self.total, self.size) write!(fmt, "{} of index symbols ({})", self.size, self.total)
} }
} }

View file

@ -38,7 +38,6 @@ tracing = "0.1"
tracing-subscriber = { version = "0.2", default-features = false, features = ["env-filter", "registry"] } tracing-subscriber = { version = "0.2", default-features = false, features = ["env-filter", "registry"] }
tracing-tree = { version = "0.1.4" } tracing-tree = { version = "0.1.4" }
always-assert = "0.1" always-assert = "0.1"
stdx = { path = "../stdx", version = "0.0.0" } stdx = { path = "../stdx", version = "0.0.0" }
flycheck = { path = "../flycheck", version = "0.0.0" } flycheck = { path = "../flycheck", version = "0.0.0" }
ide = { path = "../ide", version = "0.0.0" } ide = { path = "../ide", version = "0.0.0" }

View file

@ -60,21 +60,25 @@ pub(crate) fn handle_analyzer_status(
} }
if snap.workspaces.is_empty() { if snap.workspaces.is_empty() {
buf.push_str("no workspaces\n") buf.push_str("No workspaces\n")
} else { } else {
buf.push_str("workspaces:\n"); buf.push_str("Workspaces:\n");
for w in snap.workspaces.iter() { format_to!(
format_to!(buf, "{} packages loaded\n", w.n_packages()); buf,
"Loaded {:?} packages across {} workspace{}.\n",
snap.workspaces.iter().map(|w| w.n_packages()).sum::<usize>(),
snap.workspaces.len(),
if snap.workspaces.len() == 1 { "" } else { "s" }
);
} }
} buf.push_str("\nAnalysis:\n");
buf.push_str("\nanalysis:\n");
buf.push_str( buf.push_str(
&snap &snap
.analysis .analysis
.status(file_id) .status(file_id)
.unwrap_or_else(|_| "Analysis retrieval was cancelled".to_owned()), .unwrap_or_else(|_| "Analysis retrieval was cancelled".to_owned()),
); );
format_to!(buf, "\n\nrequests:\n"); format_to!(buf, "\n\nRequests:\n");
let requests = snap.latest_requests.read(); let requests = snap.latest_requests.read();
for (is_last, r) in requests.iter() { for (is_last, r) in requests.iter() {
let mark = if is_last { "*" } else { " " }; let mark = if is_last { "*" } else { " " };