mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +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()?,
|
Ok(ref v) if v == "1" => logger.log_to_file().directory("log").start()?,
|
||||||
_ => logger.start()?,
|
_ => logger.start()?,
|
||||||
};
|
};
|
||||||
let prof_depth = match std::env::var("RA_PROFILE_DEPTH") {
|
// Filtering syntax
|
||||||
Ok(ref d) => d.parse()?,
|
// env RA_PROFILE=* // dump everything
|
||||||
_ => 0,
|
// 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") {
|
ra_prof::set_filter(filter);
|
||||||
Ok(ref p) => p.split(";").map(String::from).collect(),
|
|
||||||
_ => Vec::new(),
|
|
||||||
};
|
|
||||||
ra_prof::set_filter(ra_prof::Filter::new(prof_depth, profile_allowed));
|
|
||||||
log::info!("lifecycle: server started");
|
log::info!("lifecycle: server started");
|
||||||
match ::std::panic::catch_unwind(main_inner) {
|
match ::std::panic::catch_unwind(main_inner) {
|
||||||
Ok(res) => {
|
Ok(res) => {
|
||||||
|
|
|
@ -104,6 +104,10 @@ pub struct Filter {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Filter {
|
impl Filter {
|
||||||
|
pub fn disabled() -> Filter {
|
||||||
|
Filter::new(0, Vec::new())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn new(depth: usize, allowed: Vec<String>) -> Filter {
|
pub fn new(depth: usize, allowed: Vec<String>) -> Filter {
|
||||||
Filter { depth, allowed }
|
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`.
|
There's an alias for this: `cargo jinstall-lsp`.
|
||||||
|
|
||||||
* `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection.
|
* `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