diff options
Diffstat (limited to 'crates/ra_lsp_server/src/main.rs')
-rw-r--r-- | crates/ra_lsp_server/src/main.rs | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs index 33aa30d70..03f83c7be 100644 --- a/crates/ra_lsp_server/src/main.rs +++ b/crates/ra_lsp_server/src/main.rs | |||
@@ -36,23 +36,15 @@ struct InitializationOptions { | |||
36 | fn main_inner() -> Result<()> { | 36 | fn main_inner() -> Result<()> { |
37 | let (receiver, sender, threads) = stdio_transport(); | 37 | let (receiver, sender, threads) = stdio_transport(); |
38 | let cwd = ::std::env::current_dir()?; | 38 | let cwd = ::std::env::current_dir()?; |
39 | run_server( | 39 | run_server(ra_lsp_server::server_capabilities(), receiver, sender, |params, r, s| { |
40 | ra_lsp_server::server_capabilities(), | 40 | let root = params.root_uri.and_then(|it| it.to_file_path().ok()).unwrap_or(cwd); |
41 | receiver, | 41 | let supports_decorations = params |
42 | sender, | 42 | .initialization_options |
43 | |params, r, s| { | 43 | .and_then(|v| InitializationOptions::deserialize(v).ok()) |
44 | let root = params | 44 | .and_then(|it| it.publish_decorations) |
45 | .root_uri | 45 | == Some(true); |
46 | .and_then(|it| it.to_file_path().ok()) | 46 | ra_lsp_server::main_loop(false, root, supports_decorations, r, s) |
47 | .unwrap_or(cwd); | 47 | })?; |
48 | let supports_decorations = params | ||
49 | .initialization_options | ||
50 | .and_then(|v| InitializationOptions::deserialize(v).ok()) | ||
51 | .and_then(|it| it.publish_decorations) | ||
52 | == Some(true); | ||
53 | ra_lsp_server::main_loop(false, root, supports_decorations, r, s) | ||
54 | }, | ||
55 | )?; | ||
56 | log::info!("shutting down IO..."); | 48 | log::info!("shutting down IO..."); |
57 | threads.join()?; | 49 | threads.join()?; |
58 | log::info!("... IO is down"); | 50 | log::info!("... IO is down"); |