1use crate::jsonrpc::{ErrorCode, Id, Message, Response};
2use lsp_types::{notification::*, request::*};
3use serde_json::Value;
4use tracing::{debug, trace_span};
5
6pub trait Handler: Sized + Send + Sync + 'static {
7 fn invalid_params(&self, id: Id) -> Message {
8 Message::Response(Response::Err(id, ErrorCode::InvalidParams, "InvalidParams".into(), Value::Null))
9 }
10
11 fn method_not_found(&self, id: Id) -> Message {
12 Message::Response(Response::Err(id, ErrorCode::MethodNotFound, "MethodNotFound".into(), Value::Null))
13 }
14
15 fn internal_error(&self, id: Id) -> Message {
16 Message::Response(Response::Err(id, ErrorCode::InternalError, "InternalError".into(), Value::Null))
17 }
18
19 fn initialized(&self) -> bool {
20 false
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)),
81 ))
82 }
83 Completion::METHOD => Some(message.from_value::<lsp_types::CompletionParams>().map_or_else(
84 |_| self.invalid_params(id.clone()),
85 |p| Message::from_result(id.clone(), self.completion(p)),
86 )),
87 DocumentColor::METHOD => Some(message.from_value::<lsp_types::DocumentColorParams>().map_or_else(
88 |_| self.invalid_params(id.clone()),
89 |p| Message::from_result(id.clone(), self.document_color(p)),
90 )),
91 DocumentDiagnosticRequest::METHOD => {
92 Some(message.from_value::<lsp_types::DocumentDiagnosticParams>().map_or_else(
93 |_| self.invalid_params(id.clone()),
94 |p| Message::from_result(id.clone(), self.document_diagnostic_request(p)),
95 ))
96 }
97 DocumentHighlightRequest::METHOD => {
98 Some(message.from_value::<lsp_types::DocumentHighlightParams>().map_or_else(
99 |_| self.invalid_params(id.clone()),
100 |p| Message::from_result(id.clone(), self.document_highlight_request(p)),
101 ))
102 }
103 DocumentLinkRequest::METHOD => Some(message.from_value::<lsp_types::DocumentLinkParams>().map_or_else(
104 |_| self.invalid_params(id.clone()),
105 |p| Message::from_result(id.clone(), self.document_link_request(p)),
106 )),
107 DocumentLinkResolve::METHOD => Some(message.from_value::<lsp_types::DocumentLink>().map_or_else(
108 |_| self.invalid_params(id.clone()),
109 |p| Message::from_result(id.clone(), self.document_link_resolve(p)),
110 )),
111 DocumentSymbolRequest::METHOD => Some(message.from_value::<lsp_types::DocumentSymbolParams>().map_or_else(
112 |_| self.invalid_params(id.clone()),
113 |p| Message::from_result(id.clone(), self.document_symbol_request(p)),
114 )),
115 ExecuteCommand::METHOD => Some(message.from_value::<lsp_types::ExecuteCommandParams>().map_or_else(
116 |_| self.invalid_params(id.clone()),
117 |p| Message::from_result(id.clone(), self.execute_command(p)),
118 )),
119 FoldingRangeRequest::METHOD => Some(message.from_value::<lsp_types::FoldingRangeParams>().map_or_else(
120 |_| self.invalid_params(id.clone()),
121 |p| Message::from_result(id.clone(), self.folding_range_request(p)),
122 )),
123 Formatting::METHOD => Some(message.from_value::<lsp_types::DocumentFormattingParams>().map_or_else(
124 |_| self.invalid_params(id.clone()),
125 |p| Message::from_result(id.clone(), self.formatting(p)),
126 )),
127 GotoDeclaration::METHOD => Some(message.from_value::<lsp_types::GotoDefinitionParams>().map_or_else(
128 |_| self.invalid_params(id.clone()),
129 |p| Message::from_result(id.clone(), self.goto_declaration(p)),
130 )),
131 GotoDefinition::METHOD => Some(message.from_value::<lsp_types::GotoDefinitionParams>().map_or_else(
132 |_| self.invalid_params(id.clone()),
133 |p| Message::from_result(id.clone(), self.goto_definition(p)),
134 )),
135 GotoImplementation::METHOD => Some(message.from_value::<lsp_types::GotoDefinitionParams>().map_or_else(
136 |_| self.invalid_params(id.clone()),
137 |p| Message::from_result(id.clone(), self.goto_implementation(p)),
138 )),
139 GotoTypeDefinition::METHOD => Some(message.from_value::<lsp_types::GotoDefinitionParams>().map_or_else(
140 |_| self.invalid_params(id.clone()),
141 |p| Message::from_result(id.clone(), self.goto_type_definition(p)),
142 )),
143 HoverRequest::METHOD => Some(message.from_value::<lsp_types::HoverParams>().map_or_else(
144 |_| self.invalid_params(id.clone()),
145 |p| Message::from_result(id.clone(), self.hover_request(p)),
146 )),
147 Initialize::METHOD => Some(message.from_value::<lsp_types::InitializeParams>().map_or_else(
148 |_| self.invalid_params(id.clone()),
149 |p| Message::from_result(id.clone(), self.initialize(p)),
150 )),
151 InlayHintRefreshRequest::METHOD => {
152 Some(Message::from_result(id.clone(), self.inlay_hint_refresh_request()))
153 }
154 InlayHintRequest::METHOD => Some(message.from_value::<lsp_types::InlayHintParams>().map_or_else(
155 |_| self.invalid_params(id.clone()),
156 |p| Message::from_result(id.clone(), self.inlay_hint_request(p)),
157 )),
158 InlayHintResolveRequest::METHOD => Some(message.from_value::<lsp_types::InlayHint>().map_or_else(
159 |_| self.invalid_params(id.clone()),
160 |p| Message::from_result(id.clone(), self.inlay_hint_resolve_request(p)),
161 )),
162 InlineValueRefreshRequest::METHOD => {
163 Some(Message::from_result(id.clone(), self.inline_value_refresh_request()))
164 }
165 InlineValueRequest::METHOD => Some(message.from_value::<lsp_types::InlineValueParams>().map_or_else(
166 |_| self.invalid_params(id.clone()),
167 |p| Message::from_result(id.clone(), self.inline_value_request(p)),
168 )),
169 LinkedEditingRange::METHOD => {
170 Some(message.from_value::<lsp_types::LinkedEditingRangeParams>().map_or_else(
171 |_| self.invalid_params(id.clone()),
172 |p| Message::from_result(id.clone(), self.linked_editing_range(p)),
173 ))
174 }
175 MonikerRequest::METHOD => Some(message.from_value::<lsp_types::MonikerParams>().map_or_else(
176 |_| self.invalid_params(id.clone()),
177 |p| Message::from_result(id.clone(), self.moniker_request(p)),
178 )),
179 OnTypeFormatting::METHOD => {
180 Some(message.from_value::<lsp_types::DocumentOnTypeFormattingParams>().map_or_else(
181 |_| self.invalid_params(id.clone()),
182 |p| Message::from_result(id.clone(), self.on_type_formatting(p)),
183 ))
184 }
185 PrepareRenameRequest::METHOD => {
186 Some(message.from_value::<lsp_types::TextDocumentPositionParams>().map_or_else(
187 |_| self.invalid_params(id.clone()),
188 |p| Message::from_result(id.clone(), self.prepare_rename_request(p)),
189 ))
190 }
191 RangeFormatting::METHOD => {
192 Some(message.from_value::<lsp_types::DocumentRangeFormattingParams>().map_or_else(
193 |_| self.invalid_params(id.clone()),
194 |p| Message::from_result(id.clone(), self.range_formatting(p)),
195 ))
196 }
197 References::METHOD => Some(message.from_value::<lsp_types::ReferenceParams>().map_or_else(
198 |_| self.invalid_params(id.clone()),
199 |p| Message::from_result(id.clone(), self.references(p)),
200 )),
201 RegisterCapability::METHOD => Some(message.from_value::<lsp_types::RegistrationParams>().map_or_else(
202 |_| self.invalid_params(id.clone()),
203 |p| Message::from_result(id.clone(), self.register_capability(p)),
204 )),
205 Rename::METHOD => Some(message.from_value::<lsp_types::RenameParams>().map_or_else(
206 |_| self.invalid_params(id.clone()),
207 |p| Message::from_result(id.clone(), self.rename(p)),
208 )),
209 ResolveCompletionItem::METHOD => Some(message.from_value::<lsp_types::CompletionItem>().map_or_else(
210 |_| self.invalid_params(id.clone()),
211 |p| Message::from_result(id.clone(), self.resolve_completion_item(p)),
212 )),
213 SelectionRangeRequest::METHOD => Some(message.from_value::<lsp_types::SelectionRangeParams>().map_or_else(
214 |_| self.invalid_params(id.clone()),
215 |p| Message::from_result(id.clone(), self.selection_range_request(p)),
216 )),
217 SemanticTokensFullDeltaRequest::METHOD => {
218 Some(message.from_value::<lsp_types::SemanticTokensDeltaParams>().map_or_else(
219 |_| self.invalid_params(id.clone()),
220 |p| Message::from_result(id.clone(), self.semantic_tokens_full_delta_request(p)),
221 ))
222 }
223 SemanticTokensFullRequest::METHOD => {
224 Some(message.from_value::<lsp_types::SemanticTokensParams>().map_or_else(
225 |_| self.invalid_params(id.clone()),
226 |p| Message::from_result(id.clone(), self.semantic_tokens_full_request(p)),
227 ))
228 }
229 SemanticTokensRangeRequest::METHOD => {
230 Some(message.from_value::<lsp_types::SemanticTokensRangeParams>().map_or_else(
231 |_| self.invalid_params(id.clone()),
232 |p| Message::from_result(id.clone(), self.semantic_tokens_range_request(p)),
233 ))
234 }
235 SemanticTokensRefresh::METHOD => Some(Message::from_result(id.clone(), self.semantic_tokens_refresh())),
236 ShowDocument::METHOD => Some(message.from_value::<lsp_types::ShowDocumentParams>().map_or_else(
237 |_| self.invalid_params(id.clone()),
238 |p| Message::from_result(id.clone(), self.show_document(p)),
239 )),
240 ShowMessageRequest::METHOD => Some(message.from_value::<lsp_types::ShowMessageParams>().map_or_else(
241 |_| self.invalid_params(id.clone()),
242 |p| Message::from_result(id.clone(), self.show_message_request(p)),
243 )),
244 Shutdown::METHOD => Some(Message::from_result(id.clone(), self.shutdown())),
245 SignatureHelpRequest::METHOD => Some(message.from_value::<lsp_types::SignatureHelpParams>().map_or_else(
246 |_| self.invalid_params(id.clone()),
247 |p| Message::from_result(id.clone(), self.signature_help_request(p)),
248 )),
249 TypeHierarchyPrepare::METHOD => {
250 Some(message.from_value::<lsp_types::TypeHierarchyPrepareParams>().map_or_else(
251 |_| self.invalid_params(id.clone()),
252 |p| Message::from_result(id.clone(), self.type_hierarchy_prepare(p)),
253 ))
254 }
255 TypeHierarchySubtypes::METHOD => {
256 Some(message.from_value::<lsp_types::TypeHierarchySubtypesParams>().map_or_else(
257 |_| self.invalid_params(id.clone()),
258 |p| Message::from_result(id.clone(), self.type_hierarchy_subtypes(p)),
259 ))
260 }
261 TypeHierarchySupertypes::METHOD => {
262 Some(message.from_value::<lsp_types::TypeHierarchySupertypesParams>().map_or_else(
263 |_| self.invalid_params(id.clone()),
264 |p| Message::from_result(id.clone(), self.type_hierarchy_supertypes(p)),
265 ))
266 }
267 UnregisterCapability::METHOD => Some(message.from_value::<lsp_types::UnregistrationParams>().map_or_else(
268 |_| self.invalid_params(id.clone()),
269 |p| Message::from_result(id.clone(), self.unregister_capability(p)),
270 )),
271 WillCreateFiles::METHOD => Some(message.from_value::<lsp_types::CreateFilesParams>().map_or_else(
272 |_| self.invalid_params(id.clone()),
273 |p| Message::from_result(id.clone(), self.will_create_files(p)),
274 )),
275 WillDeleteFiles::METHOD => Some(message.from_value::<lsp_types::DeleteFilesParams>().map_or_else(
276 |_| self.invalid_params(id.clone()),
277 |p| Message::from_result(id.clone(), self.will_delete_files(p)),
278 )),
279 WillRenameFiles::METHOD => Some(message.from_value::<lsp_types::RenameFilesParams>().map_or_else(
280 |_| self.invalid_params(id.clone()),
281 |p| Message::from_result(id.clone(), self.will_rename_files(p)),
282 )),
283 WillSaveWaitUntil::METHOD => {
284 Some(message.from_value::<lsp_types::WillSaveTextDocumentParams>().map_or_else(
285 |_| self.invalid_params(id.clone()),
286 |p| Message::from_result(id.clone(), self.will_save_wait_until(p)),
287 ))
288 }
289 WorkDoneProgressCreate::METHOD => {
290 Some(message.from_value::<lsp_types::WorkDoneProgressCreateParams>().map_or_else(
291 |_| self.invalid_params(id.clone()),
292 |p| Message::from_result(id.clone(), self.work_done_progress_create(p)),
293 ))
294 }
295 WorkspaceConfiguration::METHOD => Some(message.from_value::<lsp_types::ConfigurationParams>().map_or_else(
296 |_| self.invalid_params(id.clone()),
297 |p| Message::from_result(id.clone(), self.workspace_configuration(p)),
298 )),
299 WorkspaceDiagnosticRefresh::METHOD => {
300 Some(Message::from_result(id.clone(), self.workspace_diagnostic_refresh()))
301 }
302 WorkspaceDiagnosticRequest::METHOD => {
303 Some(message.from_value::<lsp_types::WorkspaceDiagnosticParams>().map_or_else(
304 |_| self.invalid_params(id.clone()),
305 |p| Message::from_result(id.clone(), self.workspace_diagnostic_request(p)),
306 ))
307 }
308 WorkspaceFoldersRequest::METHOD => Some(Message::from_result(id.clone(), self.workspace_folders_request())),
309 WorkspaceSymbolRequest::METHOD => {
310 Some(message.from_value::<lsp_types::WorkspaceSymbolParams>().map_or_else(
311 |_| self.invalid_params(id.clone()),
312 |p| Message::from_result(id.clone(), self.workspace_symbol_request(p)),
313 ))
314 }
315 WorkspaceSymbolResolve::METHOD => Some(message.from_value::<lsp_types::WorkspaceSymbol>().map_or_else(
316 |_| self.invalid_params(id.clone()),
317 |p| Message::from_result(id.clone(), self.workspace_symbol_resolve(p)),
318 )),
319
320 Cancel::METHOD => {
322 message.from_value::<lsp_types::CancelParams>().map(|p| self.on_cancel(p)).ok();
323 None
324 }
325 DidChangeConfiguration::METHOD => {
326 message
327 .from_value::<lsp_types::DidChangeConfigurationParams>()
328 .map(|p| self.on_did_change_configuration(p))
329 .ok();
330 None
331 }
332 DidChangeNotebookDocument::METHOD => {
333 message
334 .from_value::<lsp_types::DidChangeNotebookDocumentParams>()
335 .map(|p| self.on_did_change_notebook_document(p))
336 .ok();
337 None
338 }
339 DidChangeTextDocument::METHOD => {
340 message
341 .from_value::<lsp_types::DidChangeTextDocumentParams>()
342 .map(|p| self.on_did_change_text_document(p))
343 .ok();
344 None
345 }
346 DidChangeWatchedFiles::METHOD => {
347 message
348 .from_value::<lsp_types::DidChangeWatchedFilesParams>()
349 .map(|p| self.on_did_change_watched_files(p))
350 .ok();
351 None
352 }
353 DidChangeWorkspaceFolders::METHOD => {
354 message
355 .from_value::<lsp_types::DidChangeWorkspaceFoldersParams>()
356 .map(|p| self.on_did_change_workspace_folders(p))
357 .ok();
358 None
359 }
360 DidCloseNotebookDocument::METHOD => {
361 message
362 .from_value::<lsp_types::DidCloseNotebookDocumentParams>()
363 .map(|p| self.on_did_close_notebook_document(p))
364 .ok();
365 None
366 }
367 DidCloseTextDocument::METHOD => {
368 message
369 .from_value::<lsp_types::DidCloseTextDocumentParams>()
370 .map(|p| self.on_did_close_text_document(p))
371 .ok();
372 None
373 }
374 DidCreateFiles::METHOD => {
375 message.from_value::<lsp_types::CreateFilesParams>().map(|p| self.on_did_create_files(p)).ok();
376 None
377 }
378 DidDeleteFiles::METHOD => {
379 message.from_value::<lsp_types::DeleteFilesParams>().map(|p| self.on_did_delete_files(p)).ok();
380 None
381 }
382 DidOpenNotebookDocument::METHOD => {
383 message
384 .from_value::<lsp_types::DidOpenNotebookDocumentParams>()
385 .map(|p| self.on_did_open_notebook_document(p))
386 .ok();
387 None
388 }
389 DidOpenTextDocument::METHOD => {
390 message
391 .from_value::<lsp_types::DidOpenTextDocumentParams>()
392 .map(|p| self.on_did_open_text_document(p))
393 .ok();
394 None
395 }
396 DidRenameFiles::METHOD => {
397 message.from_value::<lsp_types::RenameFilesParams>().map(|p| self.on_did_rename_files(p)).ok();
398 None
399 }
400 DidSaveNotebookDocument::METHOD => {
401 message
402 .from_value::<lsp_types::DidSaveNotebookDocumentParams>()
403 .map(|p| self.on_did_save_notebook_document(p))
404 .ok();
405 None
406 }
407 DidSaveTextDocument::METHOD => {
408 message
409 .from_value::<lsp_types::DidSaveTextDocumentParams>()
410 .map(|p| self.on_did_save_text_document(p))
411 .ok();
412 None
413 }
414 Initialized::METHOD => {
415 message.from_value::<lsp_types::InitializedParams>().map(|p| self.on_initialized(p)).ok();
416 None
417 }
418 LogMessage::METHOD => {
419 message.from_value::<lsp_types::LogMessageParams>().map(|p| self.on_log_message(p)).ok();
420 None
421 }
422 LogTrace::METHOD => {
423 message.from_value::<lsp_types::LogTraceParams>().map(|p| self.on_log_trace(p)).ok();
424 None
425 }
426 Progress::METHOD => {
427 message.from_value::<lsp_types::ProgressParams>().map(|p| self.on_progress(p)).ok();
428 None
429 }
430 PublishDiagnostics::METHOD => {
431 message
432 .from_value::<lsp_types::PublishDiagnosticsParams>()
433 .map(|p| self.on_publish_diagnostics(p))
434 .ok();
435 None
436 }
437 SetTrace::METHOD => {
438 message.from_value::<lsp_types::SetTraceParams>().map(|p| self.on_set_trace(p)).ok();
439 None
440 }
441 ShowMessage::METHOD => {
442 message.from_value::<lsp_types::ShowMessageParams>().map(|p| self.on_show_message(p)).ok();
443 None
444 }
445 TelemetryEvent::METHOD => {
446 message
447 .from_value::<lsp_types::OneOf<lsp_types::LSPObject, lsp_types::LSPArray>>()
448 .map(|p| self.on_telemetry_event(p))
449 .ok();
450 None
451 }
452 WillSaveTextDocument::METHOD => {
453 message
454 .from_value::<lsp_types::WillSaveTextDocumentParams>()
455 .map(|p| self.on_will_save_text_document(p))
456 .ok();
457 None
458 }
459 WorkDoneProgressCancel::METHOD => {
460 message
461 .from_value::<lsp_types::WorkDoneProgressCancelParams>()
462 .map(|p| self.on_work_done_progress_cance(p))
463 .ok();
464 None
465 }
466 _ => {
467 if let Message::Request(crate::jsonrpc::Request { id, .. }) = message {
468 Some(self.method_not_found(id.clone()))
469 } else {
470 None
471 }
472 }
473 }
474 }
475
476 fn apply_workspace_edit(
479 &self,
480 _req: lsp_types::ApplyWorkspaceEditParams,
481 ) -> Result<lsp_types::ApplyWorkspaceEditResponse, ErrorCode> {
482 Err(ErrorCode::MethodNotFound)
483 }
484
485 fn call_hierarchy_incoming_calls(
486 &self,
487 _req: lsp_types::CallHierarchyIncomingCallsParams,
488 ) -> Result<Option<Vec<lsp_types::CallHierarchyIncomingCall>>, ErrorCode> {
489 Err(ErrorCode::MethodNotFound)
490 }
491
492 fn call_hierarchy_outgoing_calls(
493 &self,
494 _req: lsp_types::CallHierarchyOutgoingCallsParams,
495 ) -> Result<Option<Vec<lsp_types::CallHierarchyOutgoingCall>>, ErrorCode> {
496 Err(ErrorCode::MethodNotFound)
497 }
498
499 fn call_hierarchy_prepare(
500 &self,
501 _req: lsp_types::CallHierarchyPrepareParams,
502 ) -> Result<Option<Vec<lsp_types::CallHierarchyItem>>, ErrorCode> {
503 Err(ErrorCode::MethodNotFound)
504 }
505
506 fn code_action_request(
507 &self,
508 _req: lsp_types::CodeActionParams,
509 ) -> Result<Option<lsp_types::CodeActionResponse>, ErrorCode> {
510 Err(ErrorCode::MethodNotFound)
511 }
512
513 fn code_action_resolve_request(&self, _req: lsp_types::CodeAction) -> Result<lsp_types::CodeAction, ErrorCode> {
514 Err(ErrorCode::MethodNotFound)
515 }
516
517 fn code_lens_refresh(&self) -> Result<(), ErrorCode> {
518 Err(ErrorCode::MethodNotFound)
519 }
520
521 fn code_lens_request(
522 &self,
523 _req: lsp_types::CodeLensParams,
524 ) -> Result<Option<Vec<lsp_types::CodeLens>>, ErrorCode> {
525 Err(ErrorCode::MethodNotFound)
526 }
527
528 fn code_lens_resolve(&self, _req: lsp_types::CodeLens) -> Result<lsp_types::CodeLens, ErrorCode> {
529 Err(ErrorCode::MethodNotFound)
530 }
531
532 fn color_presentation_request(
533 &self,
534 _req: lsp_types::ColorPresentationParams,
535 ) -> Result<Vec<lsp_types::ColorPresentation>, ErrorCode> {
536 Err(ErrorCode::MethodNotFound)
537 }
538
539 fn completion(
540 &self,
541 _req: lsp_types::CompletionParams,
542 ) -> Result<Option<lsp_types::CompletionResponse>, ErrorCode> {
543 Err(ErrorCode::MethodNotFound)
544 }
545
546 fn document_color(
547 &self,
548 _req: lsp_types::DocumentColorParams,
549 ) -> Result<Vec<lsp_types::ColorInformation>, ErrorCode> {
550 Err(ErrorCode::MethodNotFound)
551 }
552
553 fn document_diagnostic_request(
554 &self,
555 _req: lsp_types::DocumentDiagnosticParams,
556 ) -> Result<lsp_types::DocumentDiagnosticReportResult, ErrorCode> {
557 Err(ErrorCode::MethodNotFound)
558 }
559
560 fn document_highlight_request(
561 &self,
562 _req: lsp_types::DocumentHighlightParams,
563 ) -> Result<Option<Vec<lsp_types::DocumentHighlight>>, ErrorCode> {
564 Err(ErrorCode::MethodNotFound)
565 }
566
567 fn document_link_request(
568 &self,
569 _req: lsp_types::DocumentLinkParams,
570 ) -> Result<Option<Vec<lsp_types::DocumentLink>>, ErrorCode> {
571 Err(ErrorCode::MethodNotFound)
572 }
573
574 fn document_link_resolve(&self, _req: lsp_types::DocumentLink) -> Result<lsp_types::DocumentLink, ErrorCode> {
575 Err(ErrorCode::MethodNotFound)
576 }
577
578 fn document_symbol_request(
579 &self,
580 _req: lsp_types::DocumentSymbolParams,
581 ) -> Result<Option<lsp_types::DocumentSymbolResponse>, ErrorCode> {
582 Err(ErrorCode::MethodNotFound)
583 }
584
585 fn execute_command(&self, _req: lsp_types::ExecuteCommandParams) -> Result<Option<Value>, ErrorCode> {
586 Err(ErrorCode::MethodNotFound)
587 }
588
589 fn folding_range_request(
590 &self,
591 _req: lsp_types::FoldingRangeParams,
592 ) -> Result<Option<Vec<lsp_types::FoldingRange>>, ErrorCode> {
593 Err(ErrorCode::MethodNotFound)
594 }
595
596 fn formatting(
597 &self,
598 _req: lsp_types::DocumentFormattingParams,
599 ) -> Result<Option<Vec<lsp_types::TextEdit>>, ErrorCode> {
600 Err(ErrorCode::MethodNotFound)
601 }
602
603 fn goto_declaration(
604 &self,
605 _req: lsp_types::GotoDefinitionParams,
606 ) -> Result<lsp_types::GotoDefinitionResponse, ErrorCode> {
607 Err(ErrorCode::MethodNotFound)
608 }
609
610 fn goto_definition(
611 &self,
612 _req: lsp_types::GotoDefinitionParams,
613 ) -> Result<lsp_types::GotoDefinitionResponse, ErrorCode> {
614 Err(ErrorCode::MethodNotFound)
615 }
616
617 fn goto_implementation(
618 &self,
619 _req: lsp_types::GotoDefinitionParams,
620 ) -> Result<lsp_types::GotoDefinitionResponse, ErrorCode> {
621 Err(ErrorCode::MethodNotFound)
622 }
623
624 fn goto_type_definition(
625 &self,
626 _req: lsp_types::GotoDefinitionParams,
627 ) -> Result<lsp_types::GotoDefinitionResponse, ErrorCode> {
628 Err(ErrorCode::MethodNotFound)
629 }
630
631 fn hover_request(&self, _req: lsp_types::HoverParams) -> Result<Option<lsp_types::Hover>, ErrorCode> {
632 Err(ErrorCode::MethodNotFound)
633 }
634
635 fn initialize(&self, _req: lsp_types::InitializeParams) -> Result<lsp_types::InitializeResult, ErrorCode> {
636 Err(ErrorCode::MethodNotFound)
637 }
638
639 fn inlay_hint_refresh_request(&self) -> Result<(), ErrorCode> {
640 Err(ErrorCode::MethodNotFound)
641 }
642
643 fn inlay_hint_request(
644 &self,
645 _req: lsp_types::InlayHintParams,
646 ) -> Result<Option<Vec<lsp_types::InlayHint>>, ErrorCode> {
647 Err(ErrorCode::MethodNotFound)
648 }
649
650 fn inlay_hint_resolve_request(&self, _req: lsp_types::InlayHint) -> Result<lsp_types::InlayHint, ErrorCode> {
651 Err(ErrorCode::MethodNotFound)
652 }
653
654 fn inline_value_refresh_request(&self) -> Result<(), ErrorCode> {
655 Err(ErrorCode::MethodNotFound)
656 }
657
658 fn inline_value_request(
659 &self,
660 _req: lsp_types::InlineValueParams,
661 ) -> Result<Option<Vec<lsp_types::InlineValue>>, ErrorCode> {
662 Err(ErrorCode::MethodNotFound)
663 }
664
665 fn linked_editing_range(
666 &self,
667 _req: lsp_types::LinkedEditingRangeParams,
668 ) -> Result<Option<lsp_types::LinkedEditingRanges>, ErrorCode> {
669 Err(ErrorCode::MethodNotFound)
670 }
671
672 fn moniker_request(&self, _req: lsp_types::MonikerParams) -> Result<Option<Vec<lsp_types::Moniker>>, ErrorCode> {
673 Err(ErrorCode::MethodNotFound)
674 }
675
676 fn on_type_formatting(
677 &self,
678 _req: lsp_types::DocumentOnTypeFormattingParams,
679 ) -> Result<Option<Vec<lsp_types::TextEdit>>, ErrorCode> {
680 Err(ErrorCode::MethodNotFound)
681 }
682
683 fn prepare_rename_request(
684 &self,
685 _req: lsp_types::TextDocumentPositionParams,
686 ) -> Result<Option<lsp_types::PrepareRenameResponse>, ErrorCode> {
687 Err(ErrorCode::MethodNotFound)
688 }
689
690 fn range_formatting(
691 &self,
692 _req: lsp_types::DocumentRangeFormattingParams,
693 ) -> Result<Option<Vec<lsp_types::TextEdit>>, ErrorCode> {
694 Err(ErrorCode::MethodNotFound)
695 }
696
697 fn references(&self, _req: lsp_types::ReferenceParams) -> Result<Option<Vec<lsp_types::Location>>, ErrorCode> {
698 Err(ErrorCode::MethodNotFound)
699 }
700
701 fn register_capability(&self, _req: lsp_types::RegistrationParams) -> Result<(), ErrorCode> {
702 Err(ErrorCode::MethodNotFound)
703 }
704
705 fn rename(&self, _req: lsp_types::RenameParams) -> Result<Option<lsp_types::WorkspaceEdit>, ErrorCode> {
706 Err(ErrorCode::MethodNotFound)
707 }
708
709 fn resolve_completion_item(&self, _req: lsp_types::CompletionItem) -> Result<lsp_types::CompletionItem, ErrorCode> {
710 Err(ErrorCode::MethodNotFound)
711 }
712
713 fn selection_range_request(
714 &self,
715 _req: lsp_types::SelectionRangeParams,
716 ) -> Result<Option<Vec<lsp_types::SelectionRange>>, ErrorCode> {
717 Err(ErrorCode::MethodNotFound)
718 }
719
720 fn semantic_tokens_full_delta_request(
721 &self,
722 _req: lsp_types::SemanticTokensDeltaParams,
723 ) -> Result<Option<lsp_types::SemanticTokensFullDeltaResult>, ErrorCode> {
724 Err(ErrorCode::MethodNotFound)
725 }
726
727 fn semantic_tokens_full_request(
728 &self,
729 _req: lsp_types::SemanticTokensParams,
730 ) -> Result<Option<lsp_types::SemanticTokensResult>, ErrorCode> {
731 Err(ErrorCode::MethodNotFound)
732 }
733
734 fn semantic_tokens_range_request(
735 &self,
736 _req: lsp_types::SemanticTokensRangeParams,
737 ) -> Result<Option<lsp_types::SemanticTokensRangeResult>, ErrorCode> {
738 Err(ErrorCode::MethodNotFound)
739 }
740
741 fn semantic_tokens_refresh(&self) -> Result<(), ErrorCode> {
742 Err(ErrorCode::MethodNotFound)
743 }
744
745 fn show_document(&self, _req: lsp_types::ShowDocumentParams) -> Result<lsp_types::ShowDocumentResult, ErrorCode> {
746 Err(ErrorCode::MethodNotFound)
747 }
748
749 fn show_message_request(
750 &self,
751 _req: lsp_types::ShowMessageParams,
752 ) -> Result<Option<lsp_types::MessageActionItem>, ErrorCode> {
753 Err(ErrorCode::MethodNotFound)
754 }
755
756 fn shutdown(&self) -> Result<(), ErrorCode> {
757 Err(ErrorCode::MethodNotFound)
758 }
759
760 fn signature_help_request(
761 &self,
762 _req: lsp_types::SignatureHelpParams,
763 ) -> Result<Option<lsp_types::SignatureHelp>, ErrorCode> {
764 Err(ErrorCode::MethodNotFound)
765 }
766
767 fn type_hierarchy_prepare(
768 &self,
769 _req: lsp_types::TypeHierarchyPrepareParams,
770 ) -> Result<Option<Vec<lsp_types::TypeHierarchyItem>>, ErrorCode> {
771 Err(ErrorCode::MethodNotFound)
772 }
773
774 fn type_hierarchy_subtypes(
775 &self,
776 _req: lsp_types::TypeHierarchySubtypesParams,
777 ) -> Result<Option<Vec<lsp_types::TypeHierarchyItem>>, ErrorCode> {
778 Err(ErrorCode::MethodNotFound)
779 }
780
781 fn type_hierarchy_supertypes(
782 &self,
783 _req: lsp_types::TypeHierarchySupertypesParams,
784 ) -> Result<Option<Vec<lsp_types::TypeHierarchyItem>>, ErrorCode> {
785 Err(ErrorCode::MethodNotFound)
786 }
787
788 fn unregister_capability(&self, _req: lsp_types::UnregistrationParams) -> Result<(), ErrorCode> {
789 Err(ErrorCode::MethodNotFound)
790 }
791
792 fn will_create_files(
793 &self,
794 _req: lsp_types::CreateFilesParams,
795 ) -> Result<Option<lsp_types::WorkspaceEdit>, ErrorCode> {
796 Err(ErrorCode::MethodNotFound)
797 }
798
799 fn will_delete_files(
800 &self,
801 _req: lsp_types::DeleteFilesParams,
802 ) -> Result<Option<lsp_types::WorkspaceEdit>, ErrorCode> {
803 Err(ErrorCode::MethodNotFound)
804 }
805
806 fn will_rename_files(
807 &self,
808 _req: lsp_types::RenameFilesParams,
809 ) -> Result<Option<lsp_types::WorkspaceEdit>, ErrorCode> {
810 Err(ErrorCode::MethodNotFound)
811 }
812
813 fn will_save_wait_until(
814 &self,
815 _req: lsp_types::WillSaveTextDocumentParams,
816 ) -> Result<Option<Vec<lsp_types::TextEdit>>, ErrorCode> {
817 Err(ErrorCode::MethodNotFound)
818 }
819
820 fn work_done_progress_create(&self, _req: lsp_types::WorkDoneProgressCreateParams) -> Result<(), ErrorCode> {
821 Err(ErrorCode::MethodNotFound)
822 }
823
824 fn workspace_configuration(&self, _req: lsp_types::ConfigurationParams) -> Result<Vec<Value>, ErrorCode> {
825 Err(ErrorCode::MethodNotFound)
826 }
827
828 fn workspace_diagnostic_refresh(&self) -> Result<(), ErrorCode> {
829 Err(ErrorCode::MethodNotFound)
830 }
831
832 fn workspace_diagnostic_request(
833 &self,
834 _req: lsp_types::WorkspaceDiagnosticParams,
835 ) -> Result<lsp_types::WorkspaceDiagnosticReportResult, ErrorCode> {
836 Err(ErrorCode::MethodNotFound)
837 }
838
839 fn workspace_folders_request(&self) -> Result<Option<Vec<lsp_types::WorkspaceFolder>>, ErrorCode> {
840 Err(ErrorCode::MethodNotFound)
841 }
842
843 fn workspace_symbol_request(
844 &self,
845 _req: lsp_types::WorkspaceSymbolParams,
846 ) -> Result<Option<lsp_types::WorkspaceSymbolResponse>, ErrorCode> {
847 Err(ErrorCode::MethodNotFound)
848 }
849
850 fn workspace_symbol_resolve(
851 &self,
852 _req: lsp_types::WorkspaceSymbol,
853 ) -> Result<lsp_types::WorkspaceSymbol, ErrorCode> {
854 Err(ErrorCode::MethodNotFound)
855 }
856
857 fn on_cancel(&self, _req: lsp_types::CancelParams) {}
860 fn on_did_change_configuration(&self, _req: lsp_types::DidChangeConfigurationParams) {}
861 fn on_did_change_notebook_document(&self, _req: lsp_types::DidChangeNotebookDocumentParams) {}
862 fn on_did_change_text_document(&self, _req: lsp_types::DidChangeTextDocumentParams) {}
863 fn on_did_change_watched_files(&self, _req: lsp_types::DidChangeWatchedFilesParams) {}
864 fn on_did_change_workspace_folders(&self, _req: lsp_types::DidChangeWorkspaceFoldersParams) {}
865 fn on_did_close_notebook_document(&self, _req: lsp_types::DidCloseNotebookDocumentParams) {}
866 fn on_did_close_text_document(&self, _req: lsp_types::DidCloseTextDocumentParams) {}
867 fn on_did_create_files(&self, _req: lsp_types::CreateFilesParams) {}
868 fn on_did_delete_files(&self, _req: lsp_types::DeleteFilesParams) {}
869 fn on_did_open_notebook_document(&self, _req: lsp_types::DidOpenNotebookDocumentParams) {}
870 fn on_did_open_text_document(&self, _req: lsp_types::DidOpenTextDocumentParams) {}
871 fn on_did_rename_files(&self, _req: lsp_types::RenameFilesParams) {}
872 fn on_did_save_notebook_document(&self, _req: lsp_types::DidSaveNotebookDocumentParams) {}
873 fn on_did_save_text_document(&self, _req: lsp_types::DidSaveTextDocumentParams) {}
874 fn on_initialized(&self, _req: lsp_types::InitializedParams) {}
875 fn on_log_message(&self, _req: lsp_types::LogMessageParams) {}
876 fn on_log_trace(&self, _req: lsp_types::LogTraceParams) {}
877 fn on_progress(&self, _req: lsp_types::ProgressParams) {}
878 fn on_publish_diagnostics(&self, _req: lsp_types::PublishDiagnosticsParams) {}
879 fn on_set_trace(&self, _req: lsp_types::SetTraceParams) {}
880 fn on_show_message(&self, _req: lsp_types::ShowMessageParams) {}
881 fn on_telemetry_event(&self, _req: lsp_types::OneOf<lsp_types::LSPObject, lsp_types::LSPArray>) {}
882 fn on_will_save_text_document(&self, _req: lsp_types::WillSaveTextDocumentParams) {}
883 fn on_work_done_progress_cance(&self, _req: lsp_types::WorkDoneProgressCancelParams) {}
884}