diff options
author | DJMcNab <[email protected]> | 2018-12-21 17:00:31 +0000 |
---|---|---|
committer | DJMcNab <[email protected]> | 2018-12-21 17:00:31 +0000 |
commit | 380733d6d0361271620ece87ed970c994fb8b226 (patch) | |
tree | 5ce8e1c4b820f06f599ea1b1f53faef0161e842b | |
parent | 70e5fb98a007c49e2f2a1d2f58c31008385c9754 (diff) |
Undo the previous mistaken change and make publish_decorations optional
See https://github.com/Microsoft/language-server-protocol/issues/567
for motivations to not require `InitializationOptions`
TODO: Check if there are any other protocol extensions
which should be disabled if not implemented on the client
-rw-r--r-- | crates/ra_lsp_server/src/main.rs | 11 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop.rs | 8 |
2 files changed, 11 insertions, 8 deletions
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs index 4877e4827..038912de0 100644 --- a/crates/ra_lsp_server/src/main.rs +++ b/crates/ra_lsp_server/src/main.rs | |||
@@ -27,7 +27,10 @@ fn main() -> Result<()> { | |||
27 | #[derive(Deserialize)] | 27 | #[derive(Deserialize)] |
28 | #[serde(rename_all = "camelCase")] | 28 | #[serde(rename_all = "camelCase")] |
29 | struct InitializationOptions { | 29 | struct InitializationOptions { |
30 | highlighting_on: bool, | 30 | // Whether the client supports our custom highlighting publishing decorations. |
31 | // This is different to the highlightingOn setting, which is whether the client | ||
32 | // wants highlighting to be used or sent. | ||
33 | publish_decorations: Option<bool>, | ||
31 | } | 34 | } |
32 | 35 | ||
33 | fn main_inner() -> Result<()> { | 36 | fn main_inner() -> Result<()> { |
@@ -42,12 +45,12 @@ fn main_inner() -> Result<()> { | |||
42 | .root_uri | 45 | .root_uri |
43 | .and_then(|it| it.to_file_path().ok()) | 46 | .and_then(|it| it.to_file_path().ok()) |
44 | .unwrap_or(cwd); | 47 | .unwrap_or(cwd); |
45 | let publish_decorations = params | 48 | let supports_decorations = params |
46 | .initialization_options | 49 | .initialization_options |
47 | .and_then(|v| InitializationOptions::deserialize(v).ok()) | 50 | .and_then(|v| InitializationOptions::deserialize(v).ok()) |
48 | .map(|it| it.highlighting_on) | 51 | .and_then(|it| it.publish_decorations) |
49 | == Some(true); | 52 | == Some(true); |
50 | ra_lsp_server::main_loop(false, root, publish_decorations, r, s) | 53 | ra_lsp_server::main_loop(false, root, supports_decorations, r, s) |
51 | }, | 54 | }, |
52 | )?; | 55 | )?; |
53 | log::info!("shutting down IO..."); | 56 | log::info!("shutting down IO..."); |
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 1d6e3e5d6..8b787c329 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -53,7 +53,7 @@ enum Task { | |||
53 | pub fn main_loop( | 53 | pub fn main_loop( |
54 | internal_mode: bool, | 54 | internal_mode: bool, |
55 | ws_root: PathBuf, | 55 | ws_root: PathBuf, |
56 | publish_decorations: bool, | 56 | supports_decorations: bool, |
57 | msg_receiver: &Receiver<RawMessage>, | 57 | msg_receiver: &Receiver<RawMessage>, |
58 | msg_sender: &Sender<RawMessage>, | 58 | msg_sender: &Sender<RawMessage>, |
59 | ) -> Result<()> { | 59 | ) -> Result<()> { |
@@ -82,7 +82,7 @@ pub fn main_loop( | |||
82 | let mut subs = Subscriptions::new(); | 82 | let mut subs = Subscriptions::new(); |
83 | let main_res = main_loop_inner( | 83 | let main_res = main_loop_inner( |
84 | internal_mode, | 84 | internal_mode, |
85 | publish_decorations, | 85 | supports_decorations, |
86 | &pool, | 86 | &pool, |
87 | msg_sender, | 87 | msg_sender, |
88 | msg_receiver, | 88 | msg_receiver, |
@@ -111,7 +111,7 @@ pub fn main_loop( | |||
111 | 111 | ||
112 | fn main_loop_inner( | 112 | fn main_loop_inner( |
113 | internal_mode: bool, | 113 | internal_mode: bool, |
114 | publish_decorations: bool, | 114 | supports_decorations: bool, |
115 | pool: &ThreadPool, | 115 | pool: &ThreadPool, |
116 | msg_sender: &Sender<RawMessage>, | 116 | msg_sender: &Sender<RawMessage>, |
117 | msg_receiver: &Receiver<RawMessage>, | 117 | msg_receiver: &Receiver<RawMessage>, |
@@ -201,7 +201,7 @@ fn main_loop_inner( | |||
201 | update_file_notifications_on_threadpool( | 201 | update_file_notifications_on_threadpool( |
202 | pool, | 202 | pool, |
203 | state.snapshot(), | 203 | state.snapshot(), |
204 | publish_decorations, | 204 | supports_decorations, |
205 | task_sender.clone(), | 205 | task_sender.clone(), |
206 | subs.subscriptions(), | 206 | subs.subscriptions(), |
207 | ) | 207 | ) |