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