diff options
Diffstat (limited to 'crates/rust-analyzer/src/bin/main.rs')
-rw-r--r-- | crates/rust-analyzer/src/bin/main.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/crates/rust-analyzer/src/bin/main.rs b/crates/rust-analyzer/src/bin/main.rs index 22a84b50c..e82fd57de 100644 --- a/crates/rust-analyzer/src/bin/main.rs +++ b/crates/rust-analyzer/src/bin/main.rs | |||
@@ -60,7 +60,7 @@ fn main() -> Result<()> { | |||
60 | 60 | ||
61 | fn setup_logging() -> Result<()> { | 61 | fn setup_logging() -> Result<()> { |
62 | std::env::set_var("RUST_BACKTRACE", "short"); | 62 | std::env::set_var("RUST_BACKTRACE", "short"); |
63 | env_logger::try_init()?; | 63 | env_logger::try_init_from_env("RA_LOG")?; |
64 | ra_prof::init(); | 64 | ra_prof::init(); |
65 | Ok(()) | 65 | Ok(()) |
66 | } | 66 | } |
@@ -74,12 +74,25 @@ fn run_server() -> Result<()> { | |||
74 | log::info!("lifecycle: server started"); | 74 | log::info!("lifecycle: server started"); |
75 | 75 | ||
76 | let (connection, io_threads) = Connection::stdio(); | 76 | let (connection, io_threads) = Connection::stdio(); |
77 | let server_capabilities = serde_json::to_value(rust_analyzer::server_capabilities()).unwrap(); | ||
78 | 77 | ||
79 | let initialize_params = connection.initialize(server_capabilities)?; | 78 | let (initialize_id, initialize_params) = connection.initialize_start()?; |
80 | let initialize_params = | 79 | let initialize_params = |
81 | from_json::<lsp_types::InitializeParams>("InitializeParams", initialize_params)?; | 80 | from_json::<lsp_types::InitializeParams>("InitializeParams", initialize_params)?; |
82 | 81 | ||
82 | let server_capabilities = rust_analyzer::server_capabilities(&initialize_params.capabilities); | ||
83 | |||
84 | let initialize_result = lsp_types::InitializeResult { | ||
85 | capabilities: server_capabilities, | ||
86 | server_info: Some(lsp_types::ServerInfo { | ||
87 | name: String::from("rust-analyzer"), | ||
88 | version: Some(String::from(env!("REV"))), | ||
89 | }), | ||
90 | }; | ||
91 | |||
92 | let initialize_result = serde_json::to_value(initialize_result).unwrap(); | ||
93 | |||
94 | connection.initialize_finish(initialize_id, initialize_result)?; | ||
95 | |||
83 | if let Some(client_info) = initialize_params.client_info { | 96 | if let Some(client_info) = initialize_params.client_info { |
84 | log::info!("Client '{}' {}", client_info.name, client_info.version.unwrap_or_default()); | 97 | log::info!("Client '{}' {}", client_info.name, client_info.version.unwrap_or_default()); |
85 | } | 98 | } |
@@ -100,9 +113,8 @@ fn run_server() -> Result<()> { | |||
100 | if let Some(value) = &initialize_params.initialization_options { | 113 | if let Some(value) = &initialize_params.initialization_options { |
101 | config.update(value); | 114 | config.update(value); |
102 | } | 115 | } |
103 | if let Some(caps) = &initialize_params.capabilities.text_document { | 116 | config.update_caps(&initialize_params.capabilities); |
104 | config.update_caps(caps); | 117 | |
105 | } | ||
106 | config | 118 | config |
107 | }; | 119 | }; |
108 | 120 | ||