aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server/src/main.rs')
-rw-r--r--crates/ra_lsp_server/src/main.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs
index 36d4898bd..ae1392cb5 100644
--- a/crates/ra_lsp_server/src/main.rs
+++ b/crates/ra_lsp_server/src/main.rs
@@ -1,8 +1,7 @@
1use flexi_logger::{Duplicate, Logger}; 1use flexi_logger::{Duplicate, Logger};
2use gen_lsp_server::{run_server, stdio_transport}; 2use gen_lsp_server::{run_server, stdio_transport};
3use serde::Deserialize;
4 3
5use ra_lsp_server::{Result, ServerConfig}; 4use ra_lsp_server::{show_message, Result, ServerConfig};
6use ra_prof; 5use ra_prof;
7 6
8fn main() -> Result<()> { 7fn main() -> Result<()> {
@@ -46,15 +45,23 @@ fn main_inner() -> Result<()> {
46 .filter(|workspaces| !workspaces.is_empty()) 45 .filter(|workspaces| !workspaces.is_empty())
47 .unwrap_or_else(|| vec![root]); 46 .unwrap_or_else(|| vec![root]);
48 47
49 let opts = params 48 let server_config: ServerConfig = params
50 .initialization_options 49 .initialization_options
51 .and_then(|v| { 50 .and_then(|v| {
52 ServerConfig::deserialize(v) 51 serde_json::from_value(v)
53 .map_err(|e| log::error!("failed to deserialize config: {}", e)) 52 .map_err(|e| {
53 log::error!("failed to deserialize config: {}", e);
54 show_message(
55 lsp_types::MessageType::Error,
56 format!("failed to deserialize config: {}", e),
57 s,
58 );
59 })
54 .ok() 60 .ok()
55 }) 61 })
56 .unwrap_or_default(); 62 .unwrap_or_default();
57 ra_lsp_server::main_loop(workspace_roots, params.capabilities, opts, r, s) 63
64 ra_lsp_server::main_loop(workspace_roots, params.capabilities, server_config, r, s)
58 })?; 65 })?;
59 log::info!("shutting down IO..."); 66 log::info!("shutting down IO...");
60 threads.join()?; 67 threads.join()?;