mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 20:43:21 +00:00
cleanup syntax
This commit is contained in:
parent
e6f32c6d3a
commit
b228947b68
3 changed files with 34 additions and 8 deletions
|
@ -12,15 +12,27 @@ fn main() -> Result<()> {
|
|||
Ok(ref v) if v == "1" => logger.log_to_file().directory("log").start()?,
|
||||
_ => logger.start()?,
|
||||
};
|
||||
let prof_depth = match std::env::var("RA_PROFILE_DEPTH") {
|
||||
Ok(ref d) => d.parse()?,
|
||||
_ => 0,
|
||||
// Filtering syntax
|
||||
// env RA_PROFILE=* // dump everything
|
||||
// env RA_PROFILE=foo|bar|baz // enabled only selected entries
|
||||
// env RA_PROFILE=*@3 // dump everything, up to depth 3
|
||||
let filter = match std::env::var("RA_PROFILE") {
|
||||
Ok(p) => {
|
||||
let mut p = p.as_str();
|
||||
let depth = if let Some(idx) = p.rfind("@") {
|
||||
let depth: usize = p[idx + 1..].parse().expect("invalid profile depth");
|
||||
p = &p[..idx];
|
||||
depth
|
||||
} else {
|
||||
999
|
||||
};
|
||||
let allowed =
|
||||
if p == "*" { Vec::new() } else { p.split(";").map(String::from).collect() };
|
||||
ra_prof::Filter::new(depth, allowed)
|
||||
}
|
||||
Err(_) => ra_prof::Filter::disabled(),
|
||||
};
|
||||
let profile_allowed = match std::env::var("RA_PROFILE") {
|
||||
Ok(ref p) => p.split(";").map(String::from).collect(),
|
||||
_ => Vec::new(),
|
||||
};
|
||||
ra_prof::set_filter(ra_prof::Filter::new(prof_depth, profile_allowed));
|
||||
ra_prof::set_filter(filter);
|
||||
log::info!("lifecycle: server started");
|
||||
match ::std::panic::catch_unwind(main_inner) {
|
||||
Ok(res) => {
|
||||
|
|
|
@ -104,6 +104,10 @@ pub struct Filter {
|
|||
}
|
||||
|
||||
impl Filter {
|
||||
pub fn disabled() -> Filter {
|
||||
Filter::new(0, Vec::new())
|
||||
}
|
||||
|
||||
pub fn new(depth: usize, allowed: Vec<String>) -> Filter {
|
||||
Filter { depth, allowed }
|
||||
}
|
||||
|
|
|
@ -135,3 +135,13 @@ There's also two VS Code commands which might be of interest:
|
|||
There's an alias for this: `cargo jinstall-lsp`.
|
||||
|
||||
* `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection.
|
||||
|
||||
# Profiling
|
||||
|
||||
We have a built-in hierarchical profiler, you can enable it by using `RA_PROF` env-var:
|
||||
|
||||
```
|
||||
RA_PROFILE=* // dump everything
|
||||
RA_PROFILE=foo|bar|baz // enabled only selected entries
|
||||
RA_PROFILE=*@3 // dump everything, up to depth 3
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue