(&self, message: Message)
| 21 | } |
| 22 | |
| 23 | fn handle(&self, message: Message) -> Option<Message> { |
| 24 | let span = trace_span!("Handling request", "{:#?}", message); |
| 25 | let _ = span.enter(); |
| 26 | let id = message.id().unwrap_or_default(); |
| 27 | if message.is_exit_notification() { |
| 28 | return None; |
| 29 | } |
| 30 | let initialize_request = message.is_initialize_request(); |
| 31 | if !self.initialized() && !initialize_request { |
| 32 | debug!("Skipping message {:?} before initialization", message); |
| 33 | return None; |
| 34 | } |
| 35 | match message.method().unwrap_or_default() { |
| 36 | ApplyWorkspaceEdit::METHOD => { |
| 37 | Some(message.from_value::<lsp_types::ApplyWorkspaceEditParams>().map_or_else( |
| 38 | |_| self.invalid_params(id.clone()), |
| 39 | |p| Message::from_result(id.clone(), self.apply_workspace_edit(p)), |
| 40 | )) |
| 41 | } |
| 42 | CallHierarchyIncomingCalls::METHOD => { |
| 43 | Some(message.from_value::<lsp_types::CallHierarchyIncomingCallsParams>().map_or_else( |
| 44 | |_| self.invalid_params(id.clone()), |
| 45 | |p| Message::from_result(id.clone(), self.call_hierarchy_incoming_calls(p)), |
| 46 | )) |
| 47 | } |
| 48 | CallHierarchyOutgoingCalls::METHOD => { |
| 49 | Some(message.from_value::<lsp_types::CallHierarchyOutgoingCallsParams>().map_or_else( |
| 50 | |_| self.invalid_params(id.clone()), |
| 51 | |p| Message::from_result(id.clone(), self.call_hierarchy_outgoing_calls(p)), |
| 52 | )) |
| 53 | } |
| 54 | CallHierarchyPrepare::METHOD => { |
| 55 | Some(message.from_value::<lsp_types::CallHierarchyPrepareParams>().map_or_else( |
| 56 | |_| self.invalid_params(id.clone()), |
| 57 | |p| Message::from_result(id.clone(), self.call_hierarchy_prepare(p)), |
| 58 | )) |
| 59 | } |
| 60 | CodeActionRequest::METHOD => Some(message.from_value::<lsp_types::CodeActionParams>().map_or_else( |
| 61 | |_| self.invalid_params(id.clone()), |
| 62 | |p| Message::from_result(id.clone(), self.code_action_request(p)), |
| 63 | )), |
| 64 | CodeActionResolveRequest::METHOD => Some(message.from_value::<lsp_types::CodeAction>().map_or_else( |
| 65 | |_| self.invalid_params(id.clone()), |
| 66 | |p| Message::from_result(id.clone(), self.code_action_resolve_request(p)), |
| 67 | )), |
| 68 | CodeLensRefresh::METHOD => Some(Message::from_result(id.clone(), self.code_lens_refresh())), |
| 69 | CodeLensRequest::METHOD => Some(message.from_value::<lsp_types::CodeLensParams>().map_or_else( |
| 70 | |_| self.invalid_params(id.clone()), |
| 71 | |p| Message::from_result(id.clone(), self.code_lens_request(p)), |
| 72 | )), |
| 73 | CodeLensResolve::METHOD => Some(message.from_value::<lsp_types::CodeLens>().map_or_else( |
| 74 | |_| self.invalid_params(id.clone()), |
| 75 | |p| Message::from_result(id.clone(), self.code_lens_resolve(p)), |
| 76 | )), |
| 77 | ColorPresentationRequest::METHOD => { |
| 78 | Some(message.from_value::<lsp_types::ColorPresentationParams>().map_or_else( |
| 79 | |_| self.invalid_params(id.clone()), |
| 80 | |p| Message::from_result(id.clone(), self.color_presentation_request(p)), |
no test coverage detected