diff options
Diffstat (limited to 'crates/rust-analyzer/src/bin/main.rs')
-rw-r--r-- | crates/rust-analyzer/src/bin/main.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/bin/main.rs b/crates/rust-analyzer/src/bin/main.rs index bee2eedbc..088b17b03 100644 --- a/crates/rust-analyzer/src/bin/main.rs +++ b/crates/rust-analyzer/src/bin/main.rs | |||
@@ -21,6 +21,7 @@ static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; | |||
21 | 21 | ||
22 | fn main() { | 22 | fn main() { |
23 | if let Err(err) = try_main() { | 23 | if let Err(err) = try_main() { |
24 | log::error!("Unexpected error: {}", err); | ||
24 | eprintln!("{}", err); | 25 | eprintln!("{}", err); |
25 | process::exit(101); | 26 | process::exit(101); |
26 | } | 27 | } |
@@ -28,7 +29,17 @@ fn main() { | |||
28 | 29 | ||
29 | fn try_main() -> Result<()> { | 30 | fn try_main() -> Result<()> { |
30 | let args = args::Args::parse()?; | 31 | let args = args::Args::parse()?; |
31 | setup_logging(args.log_file)?; | 32 | |
33 | #[cfg(debug_assertions)] | ||
34 | if args.wait_dbg || env::var("RA_WAIT_DBG").is_ok() { | ||
35 | #[allow(unused_mut)] | ||
36 | let mut d = 4; | ||
37 | while d == 4 { | ||
38 | d = 4; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | setup_logging(args.log_file, args.no_buffering)?; | ||
32 | match args.command { | 43 | match args.command { |
33 | args::Command::RunServer => run_server()?, | 44 | args::Command::RunServer => run_server()?, |
34 | args::Command::PrintConfigSchema => { | 45 | args::Command::PrintConfigSchema => { |
@@ -56,7 +67,7 @@ fn try_main() -> Result<()> { | |||
56 | Ok(()) | 67 | Ok(()) |
57 | } | 68 | } |
58 | 69 | ||
59 | fn setup_logging(log_file: Option<PathBuf>) -> Result<()> { | 70 | fn setup_logging(log_file: Option<PathBuf>, no_buffering: bool) -> Result<()> { |
60 | env::set_var("RUST_BACKTRACE", "short"); | 71 | env::set_var("RUST_BACKTRACE", "short"); |
61 | 72 | ||
62 | let log_file = match log_file { | 73 | let log_file = match log_file { |
@@ -69,7 +80,7 @@ fn setup_logging(log_file: Option<PathBuf>) -> Result<()> { | |||
69 | None => None, | 80 | None => None, |
70 | }; | 81 | }; |
71 | let filter = env::var("RA_LOG").ok(); | 82 | let filter = env::var("RA_LOG").ok(); |
72 | logger::Logger::new(log_file, filter.as_deref()).install(); | 83 | logger::Logger::new(log_file, no_buffering, filter.as_deref()).install(); |
73 | 84 | ||
74 | tracing_setup::setup_tracing()?; | 85 | tracing_setup::setup_tracing()?; |
75 | 86 | ||