MCPcopy Create free account
hub / github.com/csskit/csskit / handle

Method handle

crates/csskit_lsp/src/server/handler.rs:23–474  ·  view source on GitHub ↗
(&self, message: Message)

Source from the content-addressed store, hash-verified

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)),

Callers 1

newMethod · 0.80

Implementers 2

service.rscrates/csskit_lsp/src/service.rs
smoke_testcrates/csskit_lsp/src/server.rs

Calls 15

idMethod · 0.80
is_exit_notificationMethod · 0.80
is_initialize_requestMethod · 0.80
methodMethod · 0.80
invalid_paramsMethod · 0.80
cloneMethod · 0.80
apply_workspace_editMethod · 0.80
code_action_requestMethod · 0.80

Tested by

no test coverage detected