Skip to main content

gen_lsp_types/generated/
requests.rs

1#[allow(clippy::wildcard_imports)]
2use super::*;
3
4/// A request to resolve the implementation locations of a symbol at a given text
5/// document position. The request's parameter is of type [`TextDocumentPositionParams`]
6/// the response is of type [`Definition`] or a Thenable that resolves to such.
7#[derive(Debug)]
8pub enum ImplementationRequest {}
9impl Request for ImplementationRequest {
10    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentImplementation;
11    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
12    type Params = ImplementationParams;
13    type Result = Option<ImplementationResponse>;
14}
15impl RequestWithPartialResults for ImplementationRequest {
16    type PartialResult = ImplementationPartialResponse;
17}
18
19/// A request to resolve the type definition locations of a symbol at a given text
20/// document position. The request's parameter is of type [`TextDocumentPositionParams`]
21/// the response is of type [`Definition`] or a Thenable that resolves to such.
22#[derive(Debug)]
23pub enum TypeDefinitionRequest {}
24impl Request for TypeDefinitionRequest {
25    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentTypeDefinition;
26    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
27    type Params = TypeDefinitionParams;
28    type Result = Option<TypeDefinitionResponse>;
29}
30impl RequestWithPartialResults for TypeDefinitionRequest {
31    type PartialResult = TypeDefinitionPartialResponse;
32}
33
34/// The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.
35#[derive(Debug)]
36pub enum WorkspaceFoldersRequest {}
37impl Request for WorkspaceFoldersRequest {
38    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceWorkspaceFolders;
39    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
40    type Params = ();
41    type Result = Option<Vec<WorkspaceFolder>>;
42}
43
44/// The 'workspace/configuration' request is sent from the server to the client to fetch a certain
45/// configuration setting.
46///
47/// This pull model replaces the old push model were the client signaled configuration change via an
48/// event. If the server still needs to react to configuration changes (since the server caches the
49/// result of `workspace/configuration` requests) the server should register for an empty configuration
50/// change event and empty the cache if such an event is received.
51#[derive(Debug)]
52pub enum ConfigurationRequest {}
53impl Request for ConfigurationRequest {
54    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceConfiguration;
55    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
56    type Params = ConfigurationParams;
57    type Result = Vec<LspAny>;
58}
59
60/// A request to list all color symbols found in a given text document. The request's
61/// parameter is of type [`DocumentColorParams`] the
62/// response is of type [ColorInformation[]][ColorInformation] or a Thenable
63/// that resolves to such.
64#[derive(Debug)]
65pub enum DocumentColorRequest {}
66impl Request for DocumentColorRequest {
67    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDocumentColor;
68    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
69    type Params = DocumentColorParams;
70    type Result = Vec<ColorInformation>;
71}
72impl RequestWithPartialResults for DocumentColorRequest {
73    type PartialResult = Vec<ColorInformation>;
74}
75
76/// A request to list all presentation for a color. The request's
77/// parameter is of type [`ColorPresentationParams`] the
78/// response is of type [ColorPresentation[]][ColorPresentation] or a Thenable
79/// that resolves to such.
80#[derive(Debug)]
81pub enum ColorPresentationRequest {}
82impl Request for ColorPresentationRequest {
83    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentColorPresentation;
84    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
85    type Params = ColorPresentationParams;
86    type Result = Vec<ColorPresentation>;
87}
88impl RequestWithPartialResults for ColorPresentationRequest {
89    type PartialResult = Vec<ColorPresentation>;
90}
91
92/// A request to provide folding ranges in a document. The request's
93/// parameter is of type [`FoldingRangeParams`], the
94/// response is of type [`FoldingRangeList`] or a Thenable
95/// that resolves to such.
96#[derive(Debug)]
97pub enum FoldingRangeRequest {}
98impl Request for FoldingRangeRequest {
99    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentFoldingRange;
100    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
101    type Params = FoldingRangeParams;
102    type Result = Option<Vec<FoldingRange>>;
103}
104impl RequestWithPartialResults for FoldingRangeRequest {
105    type PartialResult = Vec<FoldingRange>;
106}
107
108/// A request to refresh the folding ranges in a document.
109///
110/// @since 3.18.0
111#[derive(Debug)]
112pub enum FoldingRangeRefreshRequest {}
113impl Request for FoldingRangeRefreshRequest {
114    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceFoldingRangeRefresh;
115    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
116    type Params = ();
117    type Result = ();
118}
119
120/// A request to resolve the type definition locations of a symbol at a given text
121/// document position. The request's parameter is of type [`TextDocumentPositionParams`]
122/// the response is of type [`Declaration`] or a typed array of [`DeclarationLink`]
123/// or a Thenable that resolves to such.
124#[derive(Debug)]
125pub enum DeclarationRequest {}
126impl Request for DeclarationRequest {
127    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDeclaration;
128    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
129    type Params = DeclarationParams;
130    type Result = Option<DeclarationResponse>;
131}
132impl RequestWithPartialResults for DeclarationRequest {
133    type PartialResult = DeclarationPartialResponse;
134}
135
136/// A request to provide selection ranges in a document. The request's
137/// parameter is of type [`SelectionRangeParams`], the
138/// response is of type [SelectionRange[]][SelectionRange] or a Thenable
139/// that resolves to such.
140#[derive(Debug)]
141pub enum SelectionRangeRequest {}
142impl Request for SelectionRangeRequest {
143    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentSelectionRange;
144    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
145    type Params = SelectionRangeParams;
146    type Result = Option<Vec<SelectionRange>>;
147}
148impl RequestWithPartialResults for SelectionRangeRequest {
149    type PartialResult = Vec<SelectionRange>;
150}
151
152/// The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress
153/// reporting from the server.
154#[derive(Debug)]
155pub enum WorkDoneProgressCreateRequest {}
156impl Request for WorkDoneProgressCreateRequest {
157    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WindowWorkDoneProgressCreate;
158    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
159    type Params = WorkDoneProgressCreateParams;
160    type Result = ();
161}
162
163/// A request to result a `CallHierarchyItem` in a document at a given position.
164/// Can be used as an input to an incoming or outgoing call hierarchy.
165///
166/// @since 3.16.0
167#[derive(Debug)]
168pub enum CallHierarchyPrepareRequest {}
169impl Request for CallHierarchyPrepareRequest {
170    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentPrepareCallHierarchy;
171    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
172    type Params = CallHierarchyPrepareParams;
173    type Result = Option<Vec<CallHierarchyItem>>;
174}
175
176/// A request to resolve the incoming calls for a given `CallHierarchyItem`.
177///
178/// @since 3.16.0
179#[derive(Debug)]
180pub enum CallHierarchyIncomingCallsRequest {}
181impl Request for CallHierarchyIncomingCallsRequest {
182    const METHOD: LspRequestMethod<'static> = LspRequestMethod::CallHierarchyIncomingCalls;
183    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
184    type Params = CallHierarchyIncomingCallsParams;
185    type Result = Option<Vec<CallHierarchyIncomingCall>>;
186}
187impl RequestWithPartialResults for CallHierarchyIncomingCallsRequest {
188    type PartialResult = Vec<CallHierarchyIncomingCall>;
189}
190
191/// A request to resolve the outgoing calls for a given `CallHierarchyItem`.
192///
193/// @since 3.16.0
194#[derive(Debug)]
195pub enum CallHierarchyOutgoingCallsRequest {}
196impl Request for CallHierarchyOutgoingCallsRequest {
197    const METHOD: LspRequestMethod<'static> = LspRequestMethod::CallHierarchyOutgoingCalls;
198    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
199    type Params = CallHierarchyOutgoingCallsParams;
200    type Result = Option<Vec<CallHierarchyOutgoingCall>>;
201}
202impl RequestWithPartialResults for CallHierarchyOutgoingCallsRequest {
203    type PartialResult = Vec<CallHierarchyOutgoingCall>;
204}
205
206/// @since 3.16.0
207#[derive(Debug)]
208pub enum SemanticTokensRequest {}
209impl Request for SemanticTokensRequest {
210    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentSemanticTokensFull;
211    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
212    type Params = SemanticTokensParams;
213    type Result = Option<SemanticTokens>;
214}
215impl RequestWithPartialResults for SemanticTokensRequest {
216    type PartialResult = SemanticTokensPartialResult;
217}
218
219/// @since 3.16.0
220#[derive(Debug)]
221pub enum SemanticTokensDeltaRequest {}
222impl Request for SemanticTokensDeltaRequest {
223    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentSemanticTokensFullDelta;
224    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
225    type Params = SemanticTokensDeltaParams;
226    type Result = Option<SemanticTokensDeltaResponse>;
227}
228impl RequestWithPartialResults for SemanticTokensDeltaRequest {
229    type PartialResult = SemanticTokensDeltaPartialResponse;
230}
231
232/// @since 3.16.0
233#[derive(Debug)]
234pub enum SemanticTokensRangeRequest {}
235impl Request for SemanticTokensRangeRequest {
236    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentSemanticTokensRange;
237    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
238    type Params = SemanticTokensRangeParams;
239    type Result = Option<SemanticTokens>;
240}
241impl RequestWithPartialResults for SemanticTokensRangeRequest {
242    type PartialResult = SemanticTokensPartialResult;
243}
244
245/// @since 3.16.0
246#[derive(Debug)]
247pub enum SemanticTokensRefreshRequest {}
248impl Request for SemanticTokensRefreshRequest {
249    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceSemanticTokensRefresh;
250    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
251    type Params = ();
252    type Result = ();
253}
254
255/// A request to show a document. This request might open an
256/// external program depending on the value of the URI to open.
257/// For example a request to open `https://code.visualstudio.com/`
258/// will very likely open the URI in a WEB browser.
259///
260/// @since 3.16.0
261#[derive(Debug)]
262pub enum ShowDocumentRequest {}
263impl Request for ShowDocumentRequest {
264    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WindowShowDocument;
265    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
266    type Params = ShowDocumentParams;
267    type Result = ShowDocumentResult;
268}
269
270/// A request to provide ranges that can be edited together.
271///
272/// @since 3.16.0
273#[derive(Debug)]
274pub enum LinkedEditingRangeRequest {}
275impl Request for LinkedEditingRangeRequest {
276    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentLinkedEditingRange;
277    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
278    type Params = LinkedEditingRangeParams;
279    type Result = Option<LinkedEditingRanges>;
280}
281
282/// The will create files request is sent from the client to the server before files are actually
283/// created as long as the creation is triggered from within the client.
284///
285/// The request can return a `WorkspaceEdit` which will be applied to workspace before the
286/// files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file
287/// to be created.
288///
289/// @since 3.16.0
290#[derive(Debug)]
291pub enum WillCreateFilesRequest {}
292impl Request for WillCreateFilesRequest {
293    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceWillCreateFiles;
294    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
295    type Params = CreateFilesParams;
296    type Result = Option<WorkspaceEdit>;
297}
298
299/// The will rename files request is sent from the client to the server before files are actually
300/// renamed as long as the rename is triggered from within the client.
301///
302/// @since 3.16.0
303#[derive(Debug)]
304pub enum WillRenameFilesRequest {}
305impl Request for WillRenameFilesRequest {
306    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceWillRenameFiles;
307    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
308    type Params = RenameFilesParams;
309    type Result = Option<WorkspaceEdit>;
310}
311
312/// The did delete files notification is sent from the client to the server when
313/// files were deleted from within the client.
314///
315/// @since 3.16.0
316#[derive(Debug)]
317pub enum WillDeleteFilesRequest {}
318impl Request for WillDeleteFilesRequest {
319    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceWillDeleteFiles;
320    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
321    type Params = DeleteFilesParams;
322    type Result = Option<WorkspaceEdit>;
323}
324
325/// A request to get the moniker of a symbol at a given text document position.
326/// The request parameter is of type [`TextDocumentPositionParams`].
327/// The response is of type [Moniker[]][Moniker] or `null`.
328#[derive(Debug)]
329pub enum MonikerRequest {}
330impl Request for MonikerRequest {
331    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentMoniker;
332    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
333    type Params = MonikerParams;
334    type Result = Option<Vec<Moniker>>;
335}
336impl RequestWithPartialResults for MonikerRequest {
337    type PartialResult = Vec<Moniker>;
338}
339
340/// A request to result a `TypeHierarchyItem` in a document at a given position.
341/// Can be used as an input to a subtypes or supertypes type hierarchy.
342///
343/// @since 3.17.0
344#[derive(Debug)]
345pub enum TypeHierarchyPrepareRequest {}
346impl Request for TypeHierarchyPrepareRequest {
347    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentPrepareTypeHierarchy;
348    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
349    type Params = TypeHierarchyPrepareParams;
350    type Result = Option<Vec<TypeHierarchyItem>>;
351}
352
353/// A request to resolve the supertypes for a given `TypeHierarchyItem`.
354///
355/// @since 3.17.0
356#[derive(Debug)]
357pub enum TypeHierarchySupertypesRequest {}
358impl Request for TypeHierarchySupertypesRequest {
359    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TypeHierarchySupertypes;
360    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
361    type Params = TypeHierarchySupertypesParams;
362    type Result = Option<Vec<TypeHierarchyItem>>;
363}
364impl RequestWithPartialResults for TypeHierarchySupertypesRequest {
365    type PartialResult = Vec<TypeHierarchyItem>;
366}
367
368/// A request to resolve the subtypes for a given `TypeHierarchyItem`.
369///
370/// @since 3.17.0
371#[derive(Debug)]
372pub enum TypeHierarchySubtypesRequest {}
373impl Request for TypeHierarchySubtypesRequest {
374    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TypeHierarchySubtypes;
375    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
376    type Params = TypeHierarchySubtypesParams;
377    type Result = Option<Vec<TypeHierarchyItem>>;
378}
379impl RequestWithPartialResults for TypeHierarchySubtypesRequest {
380    type PartialResult = Vec<TypeHierarchyItem>;
381}
382
383/// A request to provide inline values in a document. The request's parameter is of
384/// type [`InlineValueParams`], the response is of type
385/// [InlineValue[]][InlineValue] or a Thenable that resolves to such.
386///
387/// @since 3.17.0
388#[derive(Debug)]
389pub enum InlineValueRequest {}
390impl Request for InlineValueRequest {
391    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentInlineValue;
392    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
393    type Params = InlineValueParams;
394    type Result = Option<Vec<InlineValue>>;
395}
396impl RequestWithPartialResults for InlineValueRequest {
397    type PartialResult = Vec<InlineValue>;
398}
399
400/// @since 3.17.0
401#[derive(Debug)]
402pub enum InlineValueRefreshRequest {}
403impl Request for InlineValueRefreshRequest {
404    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceInlineValueRefresh;
405    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
406    type Params = ();
407    type Result = ();
408}
409
410/// A request to provide inlay hints in a document. The request's parameter is of
411/// type [`InlayHintsParams`], the response is of type
412/// [InlayHint[]][InlayHint] or a Thenable that resolves to such.
413///
414/// @since 3.17.0
415#[derive(Debug)]
416pub enum InlayHintRequest {}
417impl Request for InlayHintRequest {
418    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentInlayHint;
419    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
420    type Params = InlayHintParams;
421    type Result = Option<Vec<InlayHint>>;
422}
423impl RequestWithPartialResults for InlayHintRequest {
424    type PartialResult = Vec<InlayHint>;
425}
426
427/// A request to resolve additional properties for an inlay hint.
428/// The request's parameter is of type [`InlayHint`], the response is
429/// of type [`InlayHint`] or a Thenable that resolves to such.
430///
431/// @since 3.17.0
432#[derive(Debug)]
433pub enum InlayHintResolveRequest {}
434impl Request for InlayHintResolveRequest {
435    const METHOD: LspRequestMethod<'static> = LspRequestMethod::InlayHintResolve;
436    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
437    type Params = InlayHint;
438    type Result = InlayHint;
439}
440
441/// @since 3.17.0
442#[derive(Debug)]
443pub enum InlayHintRefreshRequest {}
444impl Request for InlayHintRefreshRequest {
445    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceInlayHintRefresh;
446    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
447    type Params = ();
448    type Result = ();
449}
450
451/// The document diagnostic request definition.
452///
453///
454/// @since 3.17.0
455#[derive(Debug)]
456pub enum DocumentDiagnosticRequest {}
457impl Request for DocumentDiagnosticRequest {
458    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDiagnostic;
459    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
460    type Params = DocumentDiagnosticParams;
461    type Result = DocumentDiagnosticReport;
462}
463impl RequestWithPartialResults for DocumentDiagnosticRequest {
464    type PartialResult = DocumentDiagnosticReportProgress;
465}
466
467/// The workspace diagnostic request definition.
468///
469/// @since 3.17.0
470#[derive(Debug)]
471pub enum WorkspaceDiagnosticRequest {}
472impl Request for WorkspaceDiagnosticRequest {
473    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceDiagnostic;
474    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
475    type Params = WorkspaceDiagnosticParams;
476    type Result = WorkspaceDiagnosticReport;
477}
478impl RequestWithPartialResults for WorkspaceDiagnosticRequest {
479    type PartialResult = WorkspaceDiagnosticReportPartialResult;
480}
481
482/// The diagnostic refresh request definition.
483///
484/// @since 3.17.0
485#[derive(Debug)]
486pub enum DiagnosticRefreshRequest {}
487impl Request for DiagnosticRefreshRequest {
488    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceDiagnosticRefresh;
489    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
490    type Params = ();
491    type Result = ();
492}
493
494/// A request to provide inline completions in a document. The request's parameter is of
495/// type [`InlineCompletionParams`], the response is of type
496/// [InlineCompletion[]][InlineCompletion] or a Thenable that resolves to such.
497///
498/// @since 3.18.0
499#[derive(Debug)]
500pub enum InlineCompletionRequest {}
501impl Request for InlineCompletionRequest {
502    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentInlineCompletion;
503    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
504    type Params = InlineCompletionParams;
505    type Result = Option<InlineCompletionResponse>;
506}
507impl RequestWithPartialResults for InlineCompletionRequest {
508    type PartialResult = Vec<InlineCompletionItem>;
509}
510
511/// The `workspace/textDocumentContent` request is sent from the client to the
512/// server to request the content of a text document.
513///
514/// @since 3.18.0
515#[derive(Debug)]
516pub enum TextDocumentContentRequest {}
517impl Request for TextDocumentContentRequest {
518    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceTextDocumentContent;
519    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
520    type Params = TextDocumentContentParams;
521    type Result = TextDocumentContentResult;
522}
523
524/// The `workspace/textDocumentContent` request is sent from the server to the client to refresh
525/// the content of a specific text document.
526///
527/// @since 3.18.0
528#[derive(Debug)]
529pub enum TextDocumentContentRefreshRequest {}
530impl Request for TextDocumentContentRefreshRequest {
531    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceTextDocumentContentRefresh;
532    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
533    type Params = TextDocumentContentRefreshParams;
534    type Result = ();
535}
536
537/// The `client/registerCapability` request is sent from the server to the client to register a new capability
538/// handler on the client side.
539#[derive(Debug)]
540pub enum RegistrationRequest {}
541impl Request for RegistrationRequest {
542    const METHOD: LspRequestMethod<'static> = LspRequestMethod::ClientRegisterCapability;
543    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
544    type Params = RegistrationParams;
545    type Result = ();
546}
547
548/// The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability
549/// handler on the client side.
550#[derive(Debug)]
551pub enum UnregistrationRequest {}
552impl Request for UnregistrationRequest {
553    const METHOD: LspRequestMethod<'static> = LspRequestMethod::ClientUnregisterCapability;
554    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
555    type Params = UnregistrationParams;
556    type Result = ();
557}
558
559/// The initialize request is sent from the client to the server.
560/// It is sent once as the request after starting up the server.
561/// The requests parameter is of type [`InitializeParams`]
562/// the response if of type [`InitializeResult`] of a Thenable that
563/// resolves to such.
564#[derive(Debug)]
565pub enum InitializeRequest {}
566impl Request for InitializeRequest {
567    const METHOD: LspRequestMethod<'static> = LspRequestMethod::Initialize;
568    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
569    type Params = InitializeParams;
570    type Result = InitializeResult;
571}
572
573/// A shutdown request is sent from the client to the server.
574/// It is sent once when the client decides to shutdown the
575/// server. The only notification that is sent after a shutdown request
576/// is the exit event.
577#[derive(Debug)]
578pub enum ShutdownRequest {}
579impl Request for ShutdownRequest {
580    const METHOD: LspRequestMethod<'static> = LspRequestMethod::Shutdown;
581    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
582    type Params = ();
583    type Result = ();
584}
585
586/// The show message request is sent from the server to the client to show a message
587/// and a set of options actions to the user.
588#[derive(Debug)]
589pub enum ShowMessageRequest {}
590impl Request for ShowMessageRequest {
591    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WindowShowMessageRequest;
592    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
593    type Params = ShowMessageRequestParams;
594    type Result = Option<MessageActionItem>;
595}
596
597/// A document will save request is sent from the client to the server before
598/// the document is actually saved. The request can return an array of TextEdits
599/// which will be applied to the text document before it is saved. Please note that
600/// clients might drop results if computing the text edits took too long or if a
601/// server constantly fails on this request. This is done to keep the save fast and
602/// reliable.
603#[derive(Debug)]
604pub enum WillSaveTextDocumentWaitUntilRequest {}
605impl Request for WillSaveTextDocumentWaitUntilRequest {
606    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentWillSaveWaitUntil;
607    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
608    type Params = WillSaveTextDocumentParams;
609    type Result = Option<Vec<TextEdit>>;
610}
611
612/// Request to request completion at a given text document position. The request's
613/// parameter is of type [`TextDocumentPosition`] the response
614/// is of type [CompletionItem[]][CompletionItem] or [`CompletionList`]
615/// or a Thenable that resolves to such.
616///
617/// The request can delay the computation of the [`detail`][`CompletionItem::detail`]
618/// and [`documentation`][`CompletionItem::documentation`] properties to the `completionItem/resolve`
619/// request. However, properties that are needed for the initial sorting and filtering, like `sortText`,
620/// `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.
621#[derive(Debug)]
622pub enum CompletionRequest {}
623impl Request for CompletionRequest {
624    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentCompletion;
625    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
626    type Params = CompletionParams;
627    type Result = Option<CompletionResponse>;
628}
629impl RequestWithPartialResults for CompletionRequest {
630    type PartialResult = Vec<CompletionItem>;
631}
632
633/// Request to resolve additional information for a given completion item.The request's
634/// parameter is of type [`CompletionItem`] the response
635/// is of type [`CompletionItem`] or a Thenable that resolves to such.
636#[derive(Debug)]
637pub enum CompletionResolveRequest {}
638impl Request for CompletionResolveRequest {
639    const METHOD: LspRequestMethod<'static> = LspRequestMethod::CompletionItemResolve;
640    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
641    type Params = CompletionItem;
642    type Result = CompletionItem;
643}
644
645/// Request to request hover information at a given text document position. The request's
646/// parameter is of type [`TextDocumentPosition`] the response is of
647/// type [`Hover`] or a Thenable that resolves to such.
648#[derive(Debug)]
649pub enum HoverRequest {}
650impl Request for HoverRequest {
651    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentHover;
652    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
653    type Params = HoverParams;
654    type Result = Option<Hover>;
655}
656
657#[derive(Debug)]
658pub enum SignatureHelpRequest {}
659impl Request for SignatureHelpRequest {
660    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentSignatureHelp;
661    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
662    type Params = SignatureHelpParams;
663    type Result = Option<SignatureHelp>;
664}
665
666/// A request to resolve the definition location of a symbol at a given text
667/// document position. The request's parameter is of type [`TextDocumentPosition`]
668/// the response is of either type [`Definition`] or a typed array of
669/// [`DefinitionLink`] or a Thenable that resolves to such.
670#[derive(Debug)]
671pub enum DefinitionRequest {}
672impl Request for DefinitionRequest {
673    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDefinition;
674    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
675    type Params = DefinitionParams;
676    type Result = Option<DefinitionResponse>;
677}
678impl RequestWithPartialResults for DefinitionRequest {
679    type PartialResult = DefinitionPartialResponse;
680}
681
682/// A request to resolve project-wide references for the symbol denoted
683/// by the given text document position. The request's parameter is of
684/// type [`ReferenceParams`] the response is of type
685/// [Location[]][Location] or a Thenable that resolves to such.
686#[derive(Debug)]
687pub enum ReferencesRequest {}
688impl Request for ReferencesRequest {
689    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentReferences;
690    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
691    type Params = ReferenceParams;
692    type Result = Option<Vec<Location>>;
693}
694impl RequestWithPartialResults for ReferencesRequest {
695    type PartialResult = Vec<Location>;
696}
697
698/// Request to resolve a [`DocumentHighlight`] for a given
699/// text document position. The request's parameter is of type [`TextDocumentPosition`]
700/// the request response is an array of type [`DocumentHighlight`]
701/// or a Thenable that resolves to such.
702#[derive(Debug)]
703pub enum DocumentHighlightRequest {}
704impl Request for DocumentHighlightRequest {
705    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDocumentHighlight;
706    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
707    type Params = DocumentHighlightParams;
708    type Result = Option<Vec<DocumentHighlight>>;
709}
710impl RequestWithPartialResults for DocumentHighlightRequest {
711    type PartialResult = Vec<DocumentHighlight>;
712}
713
714/// A request to list all symbols found in a given text document. The request's
715/// parameter is of type [`TextDocumentIdentifier`] the
716/// response is of type [SymbolInformation[]][SymbolInformation] or a Thenable
717/// that resolves to such.
718#[derive(Debug)]
719pub enum DocumentSymbolRequest {}
720impl Request for DocumentSymbolRequest {
721    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDocumentSymbol;
722    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
723    type Params = DocumentSymbolParams;
724    type Result = Option<DocumentSymbolResponse>;
725}
726impl RequestWithPartialResults for DocumentSymbolRequest {
727    type PartialResult = DocumentSymbolPartialResponse;
728}
729
730/// A request to provide commands for the given text document and range.
731#[derive(Debug)]
732pub enum CodeActionRequest {}
733impl Request for CodeActionRequest {
734    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentCodeAction;
735    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
736    type Params = CodeActionParams;
737    type Result = Option<Vec<CodeActionResponse>>;
738}
739impl RequestWithPartialResults for CodeActionRequest {
740    type PartialResult = Vec<CodeActionPartialResponse>;
741}
742
743/// Request to resolve additional information for a given code action.The request's
744/// parameter is of type [`CodeAction`] the response
745/// is of type [`CodeAction`] or a Thenable that resolves to such.
746#[derive(Debug)]
747pub enum CodeActionResolveRequest {}
748impl Request for CodeActionResolveRequest {
749    const METHOD: LspRequestMethod<'static> = LspRequestMethod::CodeActionResolve;
750    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
751    type Params = CodeAction;
752    type Result = CodeAction;
753}
754
755/// A request to list project-wide symbols matching the query string given
756/// by the [`WorkspaceSymbolParams`]. The response is
757/// of type [SymbolInformation[]][SymbolInformation] or a Thenable that
758/// resolves to such.
759///
760/// @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients
761///  need to advertise support for WorkspaceSymbols via the client capability
762///  `workspace.symbol.resolveSupport`.
763///
764#[derive(Debug)]
765pub enum WorkspaceSymbolRequest {}
766impl Request for WorkspaceSymbolRequest {
767    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceSymbol;
768    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
769    type Params = WorkspaceSymbolParams;
770    type Result = Option<WorkspaceSymbolResponse>;
771}
772impl RequestWithPartialResults for WorkspaceSymbolRequest {
773    type PartialResult = WorkspaceSymbolPartialResponse;
774}
775
776/// A request to resolve the range inside the workspace
777/// symbol's location.
778///
779/// @since 3.17.0
780#[derive(Debug)]
781pub enum WorkspaceSymbolResolveRequest {}
782impl Request for WorkspaceSymbolResolveRequest {
783    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceSymbolResolve;
784    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
785    type Params = WorkspaceSymbol;
786    type Result = WorkspaceSymbol;
787}
788
789/// A request to provide code lens for the given text document.
790#[derive(Debug)]
791pub enum CodeLensRequest {}
792impl Request for CodeLensRequest {
793    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentCodeLens;
794    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
795    type Params = CodeLensParams;
796    type Result = Option<Vec<CodeLens>>;
797}
798impl RequestWithPartialResults for CodeLensRequest {
799    type PartialResult = Vec<CodeLens>;
800}
801
802/// A request to resolve a command for a given code lens.
803#[derive(Debug)]
804pub enum CodeLensResolveRequest {}
805impl Request for CodeLensResolveRequest {
806    const METHOD: LspRequestMethod<'static> = LspRequestMethod::CodeLensResolve;
807    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
808    type Params = CodeLens;
809    type Result = CodeLens;
810}
811
812/// A request to refresh all code actions
813///
814/// @since 3.16.0
815#[derive(Debug)]
816pub enum CodeLensRefreshRequest {}
817impl Request for CodeLensRefreshRequest {
818    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceCodeLensRefresh;
819    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
820    type Params = ();
821    type Result = ();
822}
823
824/// A request to provide document links
825#[derive(Debug)]
826pub enum DocumentLinkRequest {}
827impl Request for DocumentLinkRequest {
828    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentDocumentLink;
829    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
830    type Params = DocumentLinkParams;
831    type Result = Option<Vec<DocumentLink>>;
832}
833impl RequestWithPartialResults for DocumentLinkRequest {
834    type PartialResult = Vec<DocumentLink>;
835}
836
837/// Request to resolve additional information for a given document link. The request's
838/// parameter is of type [`DocumentLink`] the response
839/// is of type [`DocumentLink`] or a Thenable that resolves to such.
840#[derive(Debug)]
841pub enum DocumentLinkResolveRequest {}
842impl Request for DocumentLinkResolveRequest {
843    const METHOD: LspRequestMethod<'static> = LspRequestMethod::DocumentLinkResolve;
844    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
845    type Params = DocumentLink;
846    type Result = DocumentLink;
847}
848
849/// A request to format a whole document.
850#[derive(Debug)]
851pub enum DocumentFormattingRequest {}
852impl Request for DocumentFormattingRequest {
853    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentFormatting;
854    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
855    type Params = DocumentFormattingParams;
856    type Result = Option<Vec<TextEdit>>;
857}
858
859/// A request to format a range in a document.
860#[derive(Debug)]
861pub enum DocumentRangeFormattingRequest {}
862impl Request for DocumentRangeFormattingRequest {
863    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentRangeFormatting;
864    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
865    type Params = DocumentRangeFormattingParams;
866    type Result = Option<Vec<TextEdit>>;
867}
868
869/// A request to format ranges in a document.
870///
871/// @since 3.18.0
872#[derive(Debug)]
873pub enum DocumentRangesFormattingRequest {}
874impl Request for DocumentRangesFormattingRequest {
875    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentRangesFormatting;
876    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
877    type Params = DocumentRangesFormattingParams;
878    type Result = Option<Vec<TextEdit>>;
879}
880
881/// A request to format a document on type.
882#[derive(Debug)]
883pub enum DocumentOnTypeFormattingRequest {}
884impl Request for DocumentOnTypeFormattingRequest {
885    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentOnTypeFormatting;
886    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
887    type Params = DocumentOnTypeFormattingParams;
888    type Result = Option<Vec<TextEdit>>;
889}
890
891/// A request to rename a symbol.
892#[derive(Debug)]
893pub enum RenameRequest {}
894impl Request for RenameRequest {
895    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentRename;
896    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
897    type Params = RenameParams;
898    type Result = Option<WorkspaceEdit>;
899}
900
901/// A request to test and perform the setup necessary for a rename.
902///
903/// @since 3.16 - support for default behavior
904#[derive(Debug)]
905pub enum PrepareRenameRequest {}
906impl Request for PrepareRenameRequest {
907    const METHOD: LspRequestMethod<'static> = LspRequestMethod::TextDocumentPrepareRename;
908    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
909    type Params = PrepareRenameParams;
910    type Result = Option<PrepareRenameResult>;
911}
912
913/// A request send from the client to the server to execute a command. The request might return
914/// a workspace edit which the client will apply to the workspace.
915#[derive(Debug)]
916pub enum ExecuteCommandRequest {}
917impl Request for ExecuteCommandRequest {
918    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceExecuteCommand;
919    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
920    type Params = ExecuteCommandParams;
921    type Result = Option<LspAny>;
922}
923
924/// A request sent from the server to the client to modified certain resources.
925#[derive(Debug)]
926pub enum ApplyWorkspaceEditRequest {}
927impl Request for ApplyWorkspaceEditRequest {
928    const METHOD: LspRequestMethod<'static> = LspRequestMethod::WorkspaceApplyEdit;
929    const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
930    type Params = ApplyWorkspaceEditParams;
931    type Result = ApplyWorkspaceEditResult;
932}