1use serde::{Deserialize, ser::SerializeSeq as _, Serialize};
2use std::collections::HashMap;
3use crate::json_rpc::deserialize_some;
4#[allow(clippy::wildcard_imports)]
5use super::*;
6
7#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8#[serde(rename_all = "camelCase")]
9pub struct ImplementationParams {
10 #[serde(flatten)]
11 pub work_done_progress_params: WorkDoneProgressParams,
12 #[serde(flatten)]
13 pub partial_result_params: PartialResultParams,
14 #[serde(flatten)]
15 pub text_document_position_params: TextDocumentPositionParams,
16}
17impl ImplementationParams {
18 #[must_use]
19 pub const fn new(
20 work_done_progress_params: WorkDoneProgressParams,
21 partial_result_params: PartialResultParams,
22 text_document_position_params: TextDocumentPositionParams,
23 ) -> Self {
24 Self {
25 work_done_progress_params,
26 partial_result_params,
27 text_document_position_params,
28 }
29 }
30}
31
32#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
35#[serde(rename_all = "camelCase")]
36pub struct Location {
37 pub uri: Uri,
38 pub range: Range,
39}
40impl Location {
41 #[must_use]
42 pub const fn new(uri: Uri, range: Range) -> Self {
43 Self { uri, range }
44 }
45}
46
47#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
48#[serde(rename_all = "camelCase")]
49pub struct ImplementationRegistrationOptions {
50 #[serde(flatten)]
51 pub static_registration_options: StaticRegistrationOptions,
52 #[serde(flatten)]
53 pub text_document_registration_options: TextDocumentRegistrationOptions,
54 #[serde(flatten)]
55 pub implementation_options: ImplementationOptions,
56}
57impl ImplementationRegistrationOptions {
58 #[must_use]
59 pub const fn new(
60 static_registration_options: StaticRegistrationOptions,
61 text_document_registration_options: TextDocumentRegistrationOptions,
62 implementation_options: ImplementationOptions,
63 ) -> Self {
64 Self {
65 static_registration_options,
66 text_document_registration_options,
67 implementation_options,
68 }
69 }
70}
71
72#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
73#[serde(rename_all = "camelCase")]
74pub struct TypeDefinitionParams {
75 #[serde(flatten)]
76 pub work_done_progress_params: WorkDoneProgressParams,
77 #[serde(flatten)]
78 pub partial_result_params: PartialResultParams,
79 #[serde(flatten)]
80 pub text_document_position_params: TextDocumentPositionParams,
81}
82impl TypeDefinitionParams {
83 #[must_use]
84 pub const fn new(
85 work_done_progress_params: WorkDoneProgressParams,
86 partial_result_params: PartialResultParams,
87 text_document_position_params: TextDocumentPositionParams,
88 ) -> Self {
89 Self {
90 work_done_progress_params,
91 partial_result_params,
92 text_document_position_params,
93 }
94 }
95}
96
97#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
98#[serde(rename_all = "camelCase")]
99pub struct TypeDefinitionRegistrationOptions {
100 #[serde(flatten)]
101 pub static_registration_options: StaticRegistrationOptions,
102 #[serde(flatten)]
103 pub text_document_registration_options: TextDocumentRegistrationOptions,
104 #[serde(flatten)]
105 pub type_definition_options: TypeDefinitionOptions,
106}
107impl TypeDefinitionRegistrationOptions {
108 #[must_use]
109 pub const fn new(
110 static_registration_options: StaticRegistrationOptions,
111 text_document_registration_options: TextDocumentRegistrationOptions,
112 type_definition_options: TypeDefinitionOptions,
113 ) -> Self {
114 Self {
115 static_registration_options,
116 text_document_registration_options,
117 type_definition_options,
118 }
119 }
120}
121
122#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
124#[serde(rename_all = "camelCase")]
125pub struct WorkspaceFolder {
126 pub uri: Uri,
128 pub name: String,
131}
132impl WorkspaceFolder {
133 #[must_use]
134 pub const fn new(uri: Uri, name: String) -> Self {
135 Self { uri, name }
136 }
137}
138
139#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
141#[serde(rename_all = "camelCase")]
142pub struct DidChangeWorkspaceFoldersParams {
143 pub event: WorkspaceFoldersChangeEvent,
145}
146impl DidChangeWorkspaceFoldersParams {
147 #[must_use]
148 pub const fn new(event: WorkspaceFoldersChangeEvent) -> Self {
149 Self { event }
150 }
151}
152
153#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
155#[serde(rename_all = "camelCase")]
156pub struct ConfigurationParams {
157 pub items: Vec<ConfigurationItem>,
158}
159impl ConfigurationParams {
160 #[must_use]
161 pub const fn new(items: Vec<ConfigurationItem>) -> Self {
162 Self { items }
163 }
164}
165
166#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
168#[serde(rename_all = "camelCase")]
169pub struct DocumentColorParams {
170 pub text_document: TextDocumentIdentifier,
172 #[serde(flatten)]
173 pub work_done_progress_params: WorkDoneProgressParams,
174 #[serde(flatten)]
175 pub partial_result_params: PartialResultParams,
176}
177impl DocumentColorParams {
178 #[must_use]
179 pub const fn new(
180 text_document: TextDocumentIdentifier,
181 work_done_progress_params: WorkDoneProgressParams,
182 partial_result_params: PartialResultParams,
183 ) -> Self {
184 Self {
185 text_document,
186 work_done_progress_params,
187 partial_result_params,
188 }
189 }
190}
191
192#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Default, Copy)]
194#[serde(rename_all = "camelCase")]
195pub struct ColorInformation {
196 pub range: Range,
198 pub color: Color,
200}
201impl ColorInformation {
202 #[must_use]
203 pub const fn new(range: Range, color: Color) -> Self {
204 Self { range, color }
205 }
206}
207
208#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
209#[serde(rename_all = "camelCase")]
210pub struct DocumentColorRegistrationOptions {
211 #[serde(flatten)]
212 pub static_registration_options: StaticRegistrationOptions,
213 #[serde(flatten)]
214 pub text_document_registration_options: TextDocumentRegistrationOptions,
215 #[serde(flatten)]
216 pub document_color_options: DocumentColorOptions,
217}
218impl DocumentColorRegistrationOptions {
219 #[must_use]
220 pub const fn new(
221 static_registration_options: StaticRegistrationOptions,
222 text_document_registration_options: TextDocumentRegistrationOptions,
223 document_color_options: DocumentColorOptions,
224 ) -> Self {
225 Self {
226 static_registration_options,
227 text_document_registration_options,
228 document_color_options,
229 }
230 }
231}
232
233#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
235#[serde(rename_all = "camelCase")]
236pub struct ColorPresentationParams {
237 pub text_document: TextDocumentIdentifier,
239 pub color: Color,
241 pub range: Range,
243 #[serde(flatten)]
244 pub work_done_progress_params: WorkDoneProgressParams,
245 #[serde(flatten)]
246 pub partial_result_params: PartialResultParams,
247}
248impl ColorPresentationParams {
249 #[must_use]
250 pub const fn new(
251 text_document: TextDocumentIdentifier,
252 color: Color,
253 range: Range,
254 work_done_progress_params: WorkDoneProgressParams,
255 partial_result_params: PartialResultParams,
256 ) -> Self {
257 Self {
258 text_document,
259 color,
260 range,
261 work_done_progress_params,
262 partial_result_params,
263 }
264 }
265}
266
267#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
268#[serde(rename_all = "camelCase")]
269pub struct ColorPresentation {
270 pub label: String,
274 #[serde(skip_serializing_if = "Option::is_none")]
278 pub text_edit: Option<TextEdit>,
279 #[serde(skip_serializing_if = "Option::is_none")]
282 pub additional_text_edits: Option<Vec<TextEdit>>,
283}
284impl ColorPresentation {
285 #[must_use]
286 pub const fn new(
287 label: String,
288 text_edit: Option<TextEdit>,
289 additional_text_edits: Option<Vec<TextEdit>>,
290 ) -> Self {
291 Self {
292 label,
293 text_edit,
294 additional_text_edits,
295 }
296 }
297}
298
299#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
301#[serde(rename_all = "camelCase")]
302pub struct FoldingRangeParams {
303 pub text_document: TextDocumentIdentifier,
305 #[serde(flatten)]
306 pub work_done_progress_params: WorkDoneProgressParams,
307 #[serde(flatten)]
308 pub partial_result_params: PartialResultParams,
309}
310impl FoldingRangeParams {
311 #[must_use]
312 pub const fn new(
313 text_document: TextDocumentIdentifier,
314 work_done_progress_params: WorkDoneProgressParams,
315 partial_result_params: PartialResultParams,
316 ) -> Self {
317 Self {
318 text_document,
319 work_done_progress_params,
320 partial_result_params,
321 }
322 }
323}
324
325#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
328#[serde(rename_all = "camelCase")]
329pub struct FoldingRange {
330 pub start_line: u32,
333 #[serde(skip_serializing_if = "Option::is_none")]
335 pub start_character: Option<u32>,
336 pub end_line: u32,
339 #[serde(skip_serializing_if = "Option::is_none")]
341 pub end_character: Option<u32>,
342 #[serde(skip_serializing_if = "Option::is_none")]
346 pub kind: Option<FoldingRangeKind>,
347 #[serde(skip_serializing_if = "Option::is_none")]
353 pub collapsed_text: Option<String>,
354}
355impl FoldingRange {
356 #[must_use]
357 pub const fn new(
358 start_line: u32,
359 start_character: Option<u32>,
360 end_line: u32,
361 end_character: Option<u32>,
362 kind: Option<FoldingRangeKind>,
363 collapsed_text: Option<String>,
364 ) -> Self {
365 Self {
366 start_line,
367 start_character,
368 end_line,
369 end_character,
370 kind,
371 collapsed_text,
372 }
373 }
374}
375
376#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
377#[serde(rename_all = "camelCase")]
378pub struct FoldingRangeRegistrationOptions {
379 #[serde(flatten)]
380 pub static_registration_options: StaticRegistrationOptions,
381 #[serde(flatten)]
382 pub text_document_registration_options: TextDocumentRegistrationOptions,
383 #[serde(flatten)]
384 pub folding_range_options: FoldingRangeOptions,
385}
386impl FoldingRangeRegistrationOptions {
387 #[must_use]
388 pub const fn new(
389 static_registration_options: StaticRegistrationOptions,
390 text_document_registration_options: TextDocumentRegistrationOptions,
391 folding_range_options: FoldingRangeOptions,
392 ) -> Self {
393 Self {
394 static_registration_options,
395 text_document_registration_options,
396 folding_range_options,
397 }
398 }
399}
400
401#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
402#[serde(rename_all = "camelCase")]
403pub struct DeclarationParams {
404 #[serde(flatten)]
405 pub work_done_progress_params: WorkDoneProgressParams,
406 #[serde(flatten)]
407 pub partial_result_params: PartialResultParams,
408 #[serde(flatten)]
409 pub text_document_position_params: TextDocumentPositionParams,
410}
411impl DeclarationParams {
412 #[must_use]
413 pub const fn new(
414 work_done_progress_params: WorkDoneProgressParams,
415 partial_result_params: PartialResultParams,
416 text_document_position_params: TextDocumentPositionParams,
417 ) -> Self {
418 Self {
419 work_done_progress_params,
420 partial_result_params,
421 text_document_position_params,
422 }
423 }
424}
425
426#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
427#[serde(rename_all = "camelCase")]
428pub struct DeclarationRegistrationOptions {
429 #[serde(flatten)]
430 pub static_registration_options: StaticRegistrationOptions,
431 #[serde(flatten)]
432 pub declaration_options: DeclarationOptions,
433 #[serde(flatten)]
434 pub text_document_registration_options: TextDocumentRegistrationOptions,
435}
436impl DeclarationRegistrationOptions {
437 #[must_use]
438 pub const fn new(
439 static_registration_options: StaticRegistrationOptions,
440 declaration_options: DeclarationOptions,
441 text_document_registration_options: TextDocumentRegistrationOptions,
442 ) -> Self {
443 Self {
444 static_registration_options,
445 declaration_options,
446 text_document_registration_options,
447 }
448 }
449}
450
451#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
453#[serde(rename_all = "camelCase")]
454pub struct SelectionRangeParams {
455 pub text_document: TextDocumentIdentifier,
457 pub positions: Vec<Position>,
459 #[serde(flatten)]
460 pub work_done_progress_params: WorkDoneProgressParams,
461 #[serde(flatten)]
462 pub partial_result_params: PartialResultParams,
463}
464impl SelectionRangeParams {
465 #[must_use]
466 pub const fn new(
467 text_document: TextDocumentIdentifier,
468 positions: Vec<Position>,
469 work_done_progress_params: WorkDoneProgressParams,
470 partial_result_params: PartialResultParams,
471 ) -> Self {
472 Self {
473 text_document,
474 positions,
475 work_done_progress_params,
476 partial_result_params,
477 }
478 }
479}
480
481#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
484#[serde(rename_all = "camelCase")]
485pub struct SelectionRange {
486 pub range: Range,
488 #[serde(skip_serializing_if = "Option::is_none")]
490 pub parent: Option<Box<SelectionRange>>,
491}
492impl SelectionRange {
493 #[must_use]
494 pub const fn new(range: Range, parent: Option<Box<SelectionRange>>) -> Self {
495 Self { range, parent }
496 }
497}
498
499#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
500#[serde(rename_all = "camelCase")]
501pub struct SelectionRangeRegistrationOptions {
502 #[serde(flatten)]
503 pub static_registration_options: StaticRegistrationOptions,
504 #[serde(flatten)]
505 pub selection_range_options: SelectionRangeOptions,
506 #[serde(flatten)]
507 pub text_document_registration_options: TextDocumentRegistrationOptions,
508}
509impl SelectionRangeRegistrationOptions {
510 #[must_use]
511 pub const fn new(
512 static_registration_options: StaticRegistrationOptions,
513 selection_range_options: SelectionRangeOptions,
514 text_document_registration_options: TextDocumentRegistrationOptions,
515 ) -> Self {
516 Self {
517 static_registration_options,
518 selection_range_options,
519 text_document_registration_options,
520 }
521 }
522}
523
524#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
525#[serde(rename_all = "camelCase")]
526pub struct WorkDoneProgressCreateParams {
527 pub token: ProgressToken,
529}
530impl WorkDoneProgressCreateParams {
531 #[must_use]
532 pub const fn new(token: ProgressToken) -> Self {
533 Self { token }
534 }
535}
536
537#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
538#[serde(rename_all = "camelCase")]
539pub struct WorkDoneProgressCancelParams {
540 pub token: ProgressToken,
542}
543impl WorkDoneProgressCancelParams {
544 #[must_use]
545 pub const fn new(token: ProgressToken) -> Self {
546 Self { token }
547 }
548}
549
550#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
554#[serde(rename_all = "camelCase")]
555pub struct CallHierarchyPrepareParams {
556 #[serde(flatten)]
557 pub work_done_progress_params: WorkDoneProgressParams,
558 #[serde(flatten)]
559 pub text_document_position_params: TextDocumentPositionParams,
560}
561impl CallHierarchyPrepareParams {
562 #[must_use]
563 pub const fn new(
564 work_done_progress_params: WorkDoneProgressParams,
565 text_document_position_params: TextDocumentPositionParams,
566 ) -> Self {
567 Self {
568 work_done_progress_params,
569 text_document_position_params,
570 }
571 }
572}
573
574#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
579#[serde(rename_all = "camelCase")]
580pub struct CallHierarchyItem {
581 pub name: String,
583 pub kind: SymbolKind,
585 #[serde(skip_serializing_if = "Option::is_none")]
587 pub tags: Option<Vec<SymbolTag>>,
588 #[serde(skip_serializing_if = "Option::is_none")]
590 pub detail: Option<String>,
591 pub uri: Uri,
593 pub range: Range,
595 pub selection_range: Range,
598 #[serde(skip_serializing_if = "Option::is_none")]
601 pub data: Option<LspAny>,
602}
603impl CallHierarchyItem {
604 #[must_use]
605 pub const fn new(
606 name: String,
607 kind: SymbolKind,
608 tags: Option<Vec<SymbolTag>>,
609 detail: Option<String>,
610 uri: Uri,
611 range: Range,
612 selection_range: Range,
613 data: Option<LspAny>,
614 ) -> Self {
615 Self {
616 name,
617 kind,
618 tags,
619 detail,
620 uri,
621 range,
622 selection_range,
623 data,
624 }
625 }
626}
627
628#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
632#[serde(rename_all = "camelCase")]
633pub struct CallHierarchyRegistrationOptions {
634 #[serde(flatten)]
635 pub static_registration_options: StaticRegistrationOptions,
636 #[serde(flatten)]
637 pub text_document_registration_options: TextDocumentRegistrationOptions,
638 #[serde(flatten)]
639 pub call_hierarchy_options: CallHierarchyOptions,
640}
641impl CallHierarchyRegistrationOptions {
642 #[must_use]
643 pub const fn new(
644 static_registration_options: StaticRegistrationOptions,
645 text_document_registration_options: TextDocumentRegistrationOptions,
646 call_hierarchy_options: CallHierarchyOptions,
647 ) -> Self {
648 Self {
649 static_registration_options,
650 text_document_registration_options,
651 call_hierarchy_options,
652 }
653 }
654}
655
656#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
660#[serde(rename_all = "camelCase")]
661pub struct CallHierarchyIncomingCallsParams {
662 pub item: CallHierarchyItem,
663 #[serde(flatten)]
664 pub work_done_progress_params: WorkDoneProgressParams,
665 #[serde(flatten)]
666 pub partial_result_params: PartialResultParams,
667}
668impl CallHierarchyIncomingCallsParams {
669 #[must_use]
670 pub const fn new(
671 item: CallHierarchyItem,
672 work_done_progress_params: WorkDoneProgressParams,
673 partial_result_params: PartialResultParams,
674 ) -> Self {
675 Self {
676 item,
677 work_done_progress_params,
678 partial_result_params,
679 }
680 }
681}
682
683#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
687#[serde(rename_all = "camelCase")]
688pub struct CallHierarchyIncomingCall {
689 pub from: CallHierarchyItem,
691 pub from_ranges: Vec<Range>,
694}
695impl CallHierarchyIncomingCall {
696 #[must_use]
697 pub const fn new(from: CallHierarchyItem, from_ranges: Vec<Range>) -> Self {
698 Self { from, from_ranges }
699 }
700}
701
702#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
706#[serde(rename_all = "camelCase")]
707pub struct CallHierarchyOutgoingCallsParams {
708 pub item: CallHierarchyItem,
709 #[serde(flatten)]
710 pub work_done_progress_params: WorkDoneProgressParams,
711 #[serde(flatten)]
712 pub partial_result_params: PartialResultParams,
713}
714impl CallHierarchyOutgoingCallsParams {
715 #[must_use]
716 pub const fn new(
717 item: CallHierarchyItem,
718 work_done_progress_params: WorkDoneProgressParams,
719 partial_result_params: PartialResultParams,
720 ) -> Self {
721 Self {
722 item,
723 work_done_progress_params,
724 partial_result_params,
725 }
726 }
727}
728
729#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
733#[serde(rename_all = "camelCase")]
734pub struct CallHierarchyOutgoingCall {
735 pub to: CallHierarchyItem,
737 pub from_ranges: Vec<Range>,
741}
742impl CallHierarchyOutgoingCall {
743 #[must_use]
744 pub const fn new(to: CallHierarchyItem, from_ranges: Vec<Range>) -> Self {
745 Self { to, from_ranges }
746 }
747}
748
749#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
751#[serde(rename_all = "camelCase")]
752pub struct SemanticTokensParams {
753 pub text_document: TextDocumentIdentifier,
755 #[serde(flatten)]
756 pub work_done_progress_params: WorkDoneProgressParams,
757 #[serde(flatten)]
758 pub partial_result_params: PartialResultParams,
759}
760impl SemanticTokensParams {
761 #[must_use]
762 pub const fn new(
763 text_document: TextDocumentIdentifier,
764 work_done_progress_params: WorkDoneProgressParams,
765 partial_result_params: PartialResultParams,
766 ) -> Self {
767 Self {
768 text_document,
769 work_done_progress_params,
770 partial_result_params,
771 }
772 }
773}
774
775#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
777#[serde(rename_all = "camelCase")]
778pub struct SemanticTokens {
779 #[serde(skip_serializing_if = "Option::is_none")]
784 pub result_id: Option<String>,
785 #[serde(
787 deserialize_with = "SemanticToken::deserialize_tokens",
788 serialize_with = "SemanticToken::serialize_tokens"
789 )]
790 pub data: Vec<SemanticToken>,
791}
792impl SemanticTokens {
793 #[must_use]
794 pub const fn new(result_id: Option<String>, data: Vec<SemanticToken>) -> Self {
795 Self { result_id, data }
796 }
797}
798
799#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
801#[serde(rename_all = "camelCase")]
802pub struct SemanticTokensPartialResult {
803 #[serde(
804 deserialize_with = "SemanticToken::deserialize_tokens",
805 serialize_with = "SemanticToken::serialize_tokens"
806 )]
807 pub data: Vec<SemanticToken>,
808}
809impl SemanticTokensPartialResult {
810 #[must_use]
811 pub const fn new(data: Vec<SemanticToken>) -> Self {
812 Self { data }
813 }
814}
815
816#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
818#[serde(rename_all = "camelCase")]
819pub struct SemanticTokensRegistrationOptions {
820 #[serde(flatten)]
821 pub static_registration_options: StaticRegistrationOptions,
822 #[serde(flatten)]
823 pub text_document_registration_options: TextDocumentRegistrationOptions,
824 #[serde(flatten)]
825 pub semantic_tokens_options: SemanticTokensOptions,
826}
827impl SemanticTokensRegistrationOptions {
828 #[must_use]
829 pub const fn new(
830 static_registration_options: StaticRegistrationOptions,
831 text_document_registration_options: TextDocumentRegistrationOptions,
832 semantic_tokens_options: SemanticTokensOptions,
833 ) -> Self {
834 Self {
835 static_registration_options,
836 text_document_registration_options,
837 semantic_tokens_options,
838 }
839 }
840}
841
842#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
844#[serde(rename_all = "camelCase")]
845pub struct SemanticTokensDeltaParams {
846 pub text_document: TextDocumentIdentifier,
848 pub previous_result_id: String,
851 #[serde(flatten)]
852 pub work_done_progress_params: WorkDoneProgressParams,
853 #[serde(flatten)]
854 pub partial_result_params: PartialResultParams,
855}
856impl SemanticTokensDeltaParams {
857 #[must_use]
858 pub const fn new(
859 text_document: TextDocumentIdentifier,
860 previous_result_id: String,
861 work_done_progress_params: WorkDoneProgressParams,
862 partial_result_params: PartialResultParams,
863 ) -> Self {
864 Self {
865 text_document,
866 previous_result_id,
867 work_done_progress_params,
868 partial_result_params,
869 }
870 }
871}
872
873#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
875#[serde(rename_all = "camelCase")]
876pub struct SemanticTokensDelta {
877 #[serde(skip_serializing_if = "Option::is_none")]
878 pub result_id: Option<String>,
879 pub edits: Vec<SemanticTokensEdit>,
881}
882impl SemanticTokensDelta {
883 #[must_use]
884 pub const fn new(result_id: Option<String>, edits: Vec<SemanticTokensEdit>) -> Self {
885 Self { result_id, edits }
886 }
887}
888
889#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
891#[serde(rename_all = "camelCase")]
892pub struct SemanticTokensDeltaPartialResult {
893 pub edits: Vec<SemanticTokensEdit>,
894}
895impl SemanticTokensDeltaPartialResult {
896 #[must_use]
897 pub const fn new(edits: Vec<SemanticTokensEdit>) -> Self {
898 Self { edits }
899 }
900}
901
902#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
904#[serde(rename_all = "camelCase")]
905pub struct SemanticTokensRangeParams {
906 pub text_document: TextDocumentIdentifier,
908 pub range: Range,
910 #[serde(flatten)]
911 pub work_done_progress_params: WorkDoneProgressParams,
912 #[serde(flatten)]
913 pub partial_result_params: PartialResultParams,
914}
915impl SemanticTokensRangeParams {
916 #[must_use]
917 pub const fn new(
918 text_document: TextDocumentIdentifier,
919 range: Range,
920 work_done_progress_params: WorkDoneProgressParams,
921 partial_result_params: PartialResultParams,
922 ) -> Self {
923 Self {
924 text_document,
925 range,
926 work_done_progress_params,
927 partial_result_params,
928 }
929 }
930}
931
932#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
936#[serde(rename_all = "camelCase")]
937pub struct ShowDocumentParams {
938 pub uri: Uri,
940 #[serde(skip_serializing_if = "Option::is_none")]
944 pub external: Option<bool>,
945 #[serde(skip_serializing_if = "Option::is_none")]
950 pub take_focus: Option<bool>,
951 #[serde(skip_serializing_if = "Option::is_none")]
956 pub selection: Option<Range>,
957}
958impl ShowDocumentParams {
959 #[must_use]
960 pub const fn new(
961 uri: Uri,
962 external: Option<bool>,
963 take_focus: Option<bool>,
964 selection: Option<Range>,
965 ) -> Self {
966 Self {
967 uri,
968 external,
969 take_focus,
970 selection,
971 }
972 }
973}
974
975#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
979#[serde(rename_all = "camelCase")]
980pub struct ShowDocumentResult {
981 pub success: bool,
983}
984impl ShowDocumentResult {
985 #[must_use]
986 pub const fn new(success: bool) -> Self {
987 Self { success }
988 }
989}
990
991#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
992#[serde(rename_all = "camelCase")]
993pub struct LinkedEditingRangeParams {
994 #[serde(flatten)]
995 pub work_done_progress_params: WorkDoneProgressParams,
996 #[serde(flatten)]
997 pub text_document_position_params: TextDocumentPositionParams,
998}
999impl LinkedEditingRangeParams {
1000 #[must_use]
1001 pub const fn new(
1002 work_done_progress_params: WorkDoneProgressParams,
1003 text_document_position_params: TextDocumentPositionParams,
1004 ) -> Self {
1005 Self {
1006 work_done_progress_params,
1007 text_document_position_params,
1008 }
1009 }
1010}
1011
1012#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1016#[serde(rename_all = "camelCase")]
1017pub struct LinkedEditingRanges {
1018 pub ranges: Vec<Range>,
1021 #[serde(skip_serializing_if = "Option::is_none")]
1025 pub word_pattern: Option<String>,
1026}
1027impl LinkedEditingRanges {
1028 #[must_use]
1029 pub const fn new(ranges: Vec<Range>, word_pattern: Option<String>) -> Self {
1030 Self { ranges, word_pattern }
1031 }
1032}
1033
1034#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1035#[serde(rename_all = "camelCase")]
1036pub struct LinkedEditingRangeRegistrationOptions {
1037 #[serde(flatten)]
1038 pub static_registration_options: StaticRegistrationOptions,
1039 #[serde(flatten)]
1040 pub text_document_registration_options: TextDocumentRegistrationOptions,
1041 #[serde(flatten)]
1042 pub linked_editing_range_options: LinkedEditingRangeOptions,
1043}
1044impl LinkedEditingRangeRegistrationOptions {
1045 #[must_use]
1046 pub const fn new(
1047 static_registration_options: StaticRegistrationOptions,
1048 text_document_registration_options: TextDocumentRegistrationOptions,
1049 linked_editing_range_options: LinkedEditingRangeOptions,
1050 ) -> Self {
1051 Self {
1052 static_registration_options,
1053 text_document_registration_options,
1054 linked_editing_range_options,
1055 }
1056 }
1057}
1058
1059#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1064#[serde(rename_all = "camelCase")]
1065pub struct CreateFilesParams {
1066 pub files: Vec<FileCreate>,
1068}
1069impl CreateFilesParams {
1070 #[must_use]
1071 pub const fn new(files: Vec<FileCreate>) -> Self {
1072 Self { files }
1073 }
1074}
1075
1076#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
1089#[serde(rename_all = "camelCase")]
1090pub struct WorkspaceEdit {
1091 #[serde(skip_serializing_if = "Option::is_none")]
1093 pub changes: Option<HashMap<Uri, Vec<TextEdit>>>,
1094 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub document_changes: Option<Vec<DocumentChange>>,
1106 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub change_annotations: Option<
1114 HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>,
1115 >,
1116}
1117impl WorkspaceEdit {
1118 #[must_use]
1119 pub const fn new(
1120 changes: Option<HashMap<Uri, Vec<TextEdit>>>,
1121 document_changes: Option<Vec<DocumentChange>>,
1122 change_annotations: Option<HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>>,
1123 ) -> Self {
1124 Self {
1125 changes,
1126 document_changes,
1127 change_annotations,
1128 }
1129 }
1130}
1131
1132#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1136#[serde(rename_all = "camelCase")]
1137pub struct FileOperationRegistrationOptions {
1138 pub filters: Vec<FileOperationFilter>,
1140}
1141impl FileOperationRegistrationOptions {
1142 #[must_use]
1143 pub const fn new(filters: Vec<FileOperationFilter>) -> Self {
1144 Self { filters }
1145 }
1146}
1147
1148#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1153#[serde(rename_all = "camelCase")]
1154pub struct RenameFilesParams {
1155 pub files: Vec<FileRename>,
1158}
1159impl RenameFilesParams {
1160 #[must_use]
1161 pub const fn new(files: Vec<FileRename>) -> Self {
1162 Self { files }
1163 }
1164}
1165
1166#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1171#[serde(rename_all = "camelCase")]
1172pub struct DeleteFilesParams {
1173 pub files: Vec<FileDelete>,
1175}
1176impl DeleteFilesParams {
1177 #[must_use]
1178 pub const fn new(files: Vec<FileDelete>) -> Self {
1179 Self { files }
1180 }
1181}
1182
1183#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1184#[serde(rename_all = "camelCase")]
1185pub struct MonikerParams {
1186 #[serde(flatten)]
1187 pub work_done_progress_params: WorkDoneProgressParams,
1188 #[serde(flatten)]
1189 pub partial_result_params: PartialResultParams,
1190 #[serde(flatten)]
1191 pub text_document_position_params: TextDocumentPositionParams,
1192}
1193impl MonikerParams {
1194 #[must_use]
1195 pub const fn new(
1196 work_done_progress_params: WorkDoneProgressParams,
1197 partial_result_params: PartialResultParams,
1198 text_document_position_params: TextDocumentPositionParams,
1199 ) -> Self {
1200 Self {
1201 work_done_progress_params,
1202 partial_result_params,
1203 text_document_position_params,
1204 }
1205 }
1206}
1207
1208#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1212#[serde(rename_all = "camelCase")]
1213pub struct Moniker {
1214 pub scheme: String,
1216 pub identifier: String,
1219 pub unique: UniquenessLevel,
1221 #[serde(skip_serializing_if = "Option::is_none")]
1223 pub kind: Option<MonikerKind>,
1224}
1225impl Moniker {
1226 #[must_use]
1227 pub const fn new(
1228 scheme: String,
1229 identifier: String,
1230 unique: UniquenessLevel,
1231 kind: Option<MonikerKind>,
1232 ) -> Self {
1233 Self {
1234 scheme,
1235 identifier,
1236 unique,
1237 kind,
1238 }
1239 }
1240}
1241
1242#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1243#[serde(rename_all = "camelCase")]
1244pub struct MonikerRegistrationOptions {
1245 #[serde(flatten)]
1246 pub text_document_registration_options: TextDocumentRegistrationOptions,
1247 #[serde(flatten)]
1248 pub moniker_options: MonikerOptions,
1249}
1250impl MonikerRegistrationOptions {
1251 #[must_use]
1252 pub const fn new(
1253 text_document_registration_options: TextDocumentRegistrationOptions,
1254 moniker_options: MonikerOptions,
1255 ) -> Self {
1256 Self {
1257 text_document_registration_options,
1258 moniker_options,
1259 }
1260 }
1261}
1262
1263#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1267#[serde(rename_all = "camelCase")]
1268pub struct TypeHierarchyPrepareParams {
1269 #[serde(flatten)]
1270 pub work_done_progress_params: WorkDoneProgressParams,
1271 #[serde(flatten)]
1272 pub text_document_position_params: TextDocumentPositionParams,
1273}
1274impl TypeHierarchyPrepareParams {
1275 #[must_use]
1276 pub const fn new(
1277 work_done_progress_params: WorkDoneProgressParams,
1278 text_document_position_params: TextDocumentPositionParams,
1279 ) -> Self {
1280 Self {
1281 work_done_progress_params,
1282 text_document_position_params,
1283 }
1284 }
1285}
1286
1287#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1289#[serde(rename_all = "camelCase")]
1290pub struct TypeHierarchyItem {
1291 pub name: String,
1293 pub kind: SymbolKind,
1295 #[serde(skip_serializing_if = "Option::is_none")]
1297 pub tags: Option<Vec<SymbolTag>>,
1298 #[serde(skip_serializing_if = "Option::is_none")]
1300 pub detail: Option<String>,
1301 pub uri: Uri,
1303 pub range: Range,
1306 pub selection_range: Range,
1310 #[serde(skip_serializing_if = "Option::is_none")]
1315 pub data: Option<LspAny>,
1316}
1317impl TypeHierarchyItem {
1318 #[must_use]
1319 pub const fn new(
1320 name: String,
1321 kind: SymbolKind,
1322 tags: Option<Vec<SymbolTag>>,
1323 detail: Option<String>,
1324 uri: Uri,
1325 range: Range,
1326 selection_range: Range,
1327 data: Option<LspAny>,
1328 ) -> Self {
1329 Self {
1330 name,
1331 kind,
1332 tags,
1333 detail,
1334 uri,
1335 range,
1336 selection_range,
1337 data,
1338 }
1339 }
1340}
1341
1342#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1346#[serde(rename_all = "camelCase")]
1347pub struct TypeHierarchyRegistrationOptions {
1348 #[serde(flatten)]
1349 pub static_registration_options: StaticRegistrationOptions,
1350 #[serde(flatten)]
1351 pub text_document_registration_options: TextDocumentRegistrationOptions,
1352 #[serde(flatten)]
1353 pub type_hierarchy_options: TypeHierarchyOptions,
1354}
1355impl TypeHierarchyRegistrationOptions {
1356 #[must_use]
1357 pub const fn new(
1358 static_registration_options: StaticRegistrationOptions,
1359 text_document_registration_options: TextDocumentRegistrationOptions,
1360 type_hierarchy_options: TypeHierarchyOptions,
1361 ) -> Self {
1362 Self {
1363 static_registration_options,
1364 text_document_registration_options,
1365 type_hierarchy_options,
1366 }
1367 }
1368}
1369
1370#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1374#[serde(rename_all = "camelCase")]
1375pub struct TypeHierarchySupertypesParams {
1376 pub item: TypeHierarchyItem,
1377 #[serde(flatten)]
1378 pub work_done_progress_params: WorkDoneProgressParams,
1379 #[serde(flatten)]
1380 pub partial_result_params: PartialResultParams,
1381}
1382impl TypeHierarchySupertypesParams {
1383 #[must_use]
1384 pub const fn new(
1385 item: TypeHierarchyItem,
1386 work_done_progress_params: WorkDoneProgressParams,
1387 partial_result_params: PartialResultParams,
1388 ) -> Self {
1389 Self {
1390 item,
1391 work_done_progress_params,
1392 partial_result_params,
1393 }
1394 }
1395}
1396
1397#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1401#[serde(rename_all = "camelCase")]
1402pub struct TypeHierarchySubtypesParams {
1403 pub item: TypeHierarchyItem,
1404 #[serde(flatten)]
1405 pub work_done_progress_params: WorkDoneProgressParams,
1406 #[serde(flatten)]
1407 pub partial_result_params: PartialResultParams,
1408}
1409impl TypeHierarchySubtypesParams {
1410 #[must_use]
1411 pub const fn new(
1412 item: TypeHierarchyItem,
1413 work_done_progress_params: WorkDoneProgressParams,
1414 partial_result_params: PartialResultParams,
1415 ) -> Self {
1416 Self {
1417 item,
1418 work_done_progress_params,
1419 partial_result_params,
1420 }
1421 }
1422}
1423
1424#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1428#[serde(rename_all = "camelCase")]
1429pub struct InlineValueParams {
1430 pub text_document: TextDocumentIdentifier,
1432 pub range: Range,
1434 pub context: InlineValueContext,
1437 #[serde(flatten)]
1438 pub work_done_progress_params: WorkDoneProgressParams,
1439}
1440impl InlineValueParams {
1441 #[must_use]
1442 pub const fn new(
1443 text_document: TextDocumentIdentifier,
1444 range: Range,
1445 context: InlineValueContext,
1446 work_done_progress_params: WorkDoneProgressParams,
1447 ) -> Self {
1448 Self {
1449 text_document,
1450 range,
1451 context,
1452 work_done_progress_params,
1453 }
1454 }
1455}
1456
1457#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1461#[serde(rename_all = "camelCase")]
1462pub struct InlineValueRegistrationOptions {
1463 #[serde(flatten)]
1464 pub static_registration_options: StaticRegistrationOptions,
1465 #[serde(flatten)]
1466 pub inline_value_options: InlineValueOptions,
1467 #[serde(flatten)]
1468 pub text_document_registration_options: TextDocumentRegistrationOptions,
1469}
1470impl InlineValueRegistrationOptions {
1471 #[must_use]
1472 pub const fn new(
1473 static_registration_options: StaticRegistrationOptions,
1474 inline_value_options: InlineValueOptions,
1475 text_document_registration_options: TextDocumentRegistrationOptions,
1476 ) -> Self {
1477 Self {
1478 static_registration_options,
1479 inline_value_options,
1480 text_document_registration_options,
1481 }
1482 }
1483}
1484
1485#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1489#[serde(rename_all = "camelCase")]
1490pub struct InlayHintParams {
1491 pub text_document: TextDocumentIdentifier,
1493 pub range: Range,
1495 #[serde(flatten)]
1496 pub work_done_progress_params: WorkDoneProgressParams,
1497}
1498impl InlayHintParams {
1499 #[must_use]
1500 pub const fn new(
1501 text_document: TextDocumentIdentifier,
1502 range: Range,
1503 work_done_progress_params: WorkDoneProgressParams,
1504 ) -> Self {
1505 Self {
1506 text_document,
1507 range,
1508 work_done_progress_params,
1509 }
1510 }
1511}
1512
1513#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1517#[serde(rename_all = "camelCase")]
1518pub struct InlayHint {
1519 pub position: Position,
1524 pub label: Label,
1529 #[serde(skip_serializing_if = "Option::is_none")]
1532 pub kind: Option<InlayHintKind>,
1533 #[serde(skip_serializing_if = "Option::is_none")]
1539 pub text_edits: Option<Vec<TextEdit>>,
1540 #[serde(skip_serializing_if = "Option::is_none")]
1542 pub tooltip: Option<Tooltip>,
1543 #[serde(skip_serializing_if = "Option::is_none")]
1549 pub padding_left: Option<bool>,
1550 #[serde(skip_serializing_if = "Option::is_none")]
1556 pub padding_right: Option<bool>,
1557 #[serde(skip_serializing_if = "Option::is_none")]
1560 pub data: Option<LspAny>,
1561}
1562impl InlayHint {
1563 #[must_use]
1564 pub const fn new(
1565 position: Position,
1566 label: Label,
1567 kind: Option<InlayHintKind>,
1568 text_edits: Option<Vec<TextEdit>>,
1569 tooltip: Option<Tooltip>,
1570 padding_left: Option<bool>,
1571 padding_right: Option<bool>,
1572 data: Option<LspAny>,
1573 ) -> Self {
1574 Self {
1575 position,
1576 label,
1577 kind,
1578 text_edits,
1579 tooltip,
1580 padding_left,
1581 padding_right,
1582 data,
1583 }
1584 }
1585}
1586
1587#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1591#[serde(rename_all = "camelCase")]
1592pub struct InlayHintRegistrationOptions {
1593 #[serde(flatten)]
1594 pub static_registration_options: StaticRegistrationOptions,
1595 #[serde(flatten)]
1596 pub inlay_hint_options: InlayHintOptions,
1597 #[serde(flatten)]
1598 pub text_document_registration_options: TextDocumentRegistrationOptions,
1599}
1600impl InlayHintRegistrationOptions {
1601 #[must_use]
1602 pub const fn new(
1603 static_registration_options: StaticRegistrationOptions,
1604 inlay_hint_options: InlayHintOptions,
1605 text_document_registration_options: TextDocumentRegistrationOptions,
1606 ) -> Self {
1607 Self {
1608 static_registration_options,
1609 inlay_hint_options,
1610 text_document_registration_options,
1611 }
1612 }
1613}
1614
1615#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1619#[serde(rename_all = "camelCase")]
1620pub struct DocumentDiagnosticParams {
1621 pub text_document: TextDocumentIdentifier,
1623 #[serde(skip_serializing_if = "Option::is_none")]
1625 pub identifier: Option<String>,
1626 #[serde(skip_serializing_if = "Option::is_none")]
1628 pub previous_result_id: Option<String>,
1629 #[serde(flatten)]
1630 pub work_done_progress_params: WorkDoneProgressParams,
1631 #[serde(flatten)]
1632 pub partial_result_params: PartialResultParams,
1633}
1634impl DocumentDiagnosticParams {
1635 #[must_use]
1636 pub const fn new(
1637 text_document: TextDocumentIdentifier,
1638 identifier: Option<String>,
1639 previous_result_id: Option<String>,
1640 work_done_progress_params: WorkDoneProgressParams,
1641 partial_result_params: PartialResultParams,
1642 ) -> Self {
1643 Self {
1644 text_document,
1645 identifier,
1646 previous_result_id,
1647 work_done_progress_params,
1648 partial_result_params,
1649 }
1650 }
1651}
1652
1653#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
1657#[serde(rename_all = "camelCase")]
1658pub struct DiagnosticServerCancellationData {
1659 pub retrigger_request: bool,
1660}
1661impl DiagnosticServerCancellationData {
1662 #[must_use]
1663 pub const fn new(retrigger_request: bool) -> Self {
1664 Self { retrigger_request }
1665 }
1666}
1667
1668#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1672#[serde(rename_all = "camelCase")]
1673pub struct DiagnosticRegistrationOptions {
1674 #[serde(flatten)]
1675 pub static_registration_options: StaticRegistrationOptions,
1676 #[serde(flatten)]
1677 pub text_document_registration_options: TextDocumentRegistrationOptions,
1678 #[serde(flatten)]
1679 pub diagnostic_options: DiagnosticOptions,
1680}
1681impl DiagnosticRegistrationOptions {
1682 #[must_use]
1683 pub const fn new(
1684 static_registration_options: StaticRegistrationOptions,
1685 text_document_registration_options: TextDocumentRegistrationOptions,
1686 diagnostic_options: DiagnosticOptions,
1687 ) -> Self {
1688 Self {
1689 static_registration_options,
1690 text_document_registration_options,
1691 diagnostic_options,
1692 }
1693 }
1694}
1695
1696#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1700#[serde(rename_all = "camelCase")]
1701pub struct WorkspaceDiagnosticParams {
1702 #[serde(skip_serializing_if = "Option::is_none")]
1704 pub identifier: Option<String>,
1705 pub previous_result_ids: Vec<PreviousResultId>,
1708 #[serde(flatten)]
1709 pub work_done_progress_params: WorkDoneProgressParams,
1710 #[serde(flatten)]
1711 pub partial_result_params: PartialResultParams,
1712}
1713impl WorkspaceDiagnosticParams {
1714 #[must_use]
1715 pub const fn new(
1716 identifier: Option<String>,
1717 previous_result_ids: Vec<PreviousResultId>,
1718 work_done_progress_params: WorkDoneProgressParams,
1719 partial_result_params: PartialResultParams,
1720 ) -> Self {
1721 Self {
1722 identifier,
1723 previous_result_ids,
1724 work_done_progress_params,
1725 partial_result_params,
1726 }
1727 }
1728}
1729
1730#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1734#[serde(rename_all = "camelCase")]
1735pub struct WorkspaceDiagnosticReport {
1736 pub items: Vec<WorkspaceDocumentDiagnosticReport>,
1737}
1738impl WorkspaceDiagnosticReport {
1739 #[must_use]
1740 pub const fn new(items: Vec<WorkspaceDocumentDiagnosticReport>) -> Self {
1741 Self { items }
1742 }
1743}
1744
1745#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1749#[serde(rename_all = "camelCase")]
1750pub struct WorkspaceDiagnosticReportPartialResult {
1751 pub items: Vec<WorkspaceDocumentDiagnosticReport>,
1752}
1753impl WorkspaceDiagnosticReportPartialResult {
1754 #[must_use]
1755 pub const fn new(items: Vec<WorkspaceDocumentDiagnosticReport>) -> Self {
1756 Self { items }
1757 }
1758}
1759
1760#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1764#[serde(rename_all = "camelCase")]
1765pub struct DidOpenNotebookDocumentParams {
1766 pub notebook_document: NotebookDocument,
1768 pub cell_text_documents: Vec<TextDocumentItem>,
1771}
1772impl DidOpenNotebookDocumentParams {
1773 #[must_use]
1774 pub const fn new(
1775 notebook_document: NotebookDocument,
1776 cell_text_documents: Vec<TextDocumentItem>,
1777 ) -> Self {
1778 Self {
1779 notebook_document,
1780 cell_text_documents,
1781 }
1782 }
1783}
1784
1785#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1789#[serde(rename_all = "camelCase")]
1790pub struct NotebookDocumentSyncRegistrationOptions {
1791 #[serde(flatten)]
1792 pub static_registration_options: StaticRegistrationOptions,
1793 #[serde(flatten)]
1794 pub notebook_document_sync_options: NotebookDocumentSyncOptions,
1795}
1796impl NotebookDocumentSyncRegistrationOptions {
1797 #[must_use]
1798 pub const fn new(
1799 static_registration_options: StaticRegistrationOptions,
1800 notebook_document_sync_options: NotebookDocumentSyncOptions,
1801 ) -> Self {
1802 Self {
1803 static_registration_options,
1804 notebook_document_sync_options,
1805 }
1806 }
1807}
1808
1809#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1813#[serde(rename_all = "camelCase")]
1814pub struct DidChangeNotebookDocumentParams {
1815 pub notebook_document: VersionedNotebookDocumentIdentifier,
1820 pub change: NotebookDocumentChangeEvent,
1834}
1835impl DidChangeNotebookDocumentParams {
1836 #[must_use]
1837 pub const fn new(
1838 notebook_document: VersionedNotebookDocumentIdentifier,
1839 change: NotebookDocumentChangeEvent,
1840 ) -> Self {
1841 Self { notebook_document, change }
1842 }
1843}
1844
1845#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1849#[serde(rename_all = "camelCase")]
1850pub struct DidSaveNotebookDocumentParams {
1851 pub notebook_document: NotebookDocumentIdentifier,
1853}
1854impl DidSaveNotebookDocumentParams {
1855 #[must_use]
1856 pub const fn new(notebook_document: NotebookDocumentIdentifier) -> Self {
1857 Self { notebook_document }
1858 }
1859}
1860
1861#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1865#[serde(rename_all = "camelCase")]
1866pub struct DidCloseNotebookDocumentParams {
1867 pub notebook_document: NotebookDocumentIdentifier,
1869 pub cell_text_documents: Vec<TextDocumentIdentifier>,
1872}
1873impl DidCloseNotebookDocumentParams {
1874 #[must_use]
1875 pub const fn new(
1876 notebook_document: NotebookDocumentIdentifier,
1877 cell_text_documents: Vec<TextDocumentIdentifier>,
1878 ) -> Self {
1879 Self {
1880 notebook_document,
1881 cell_text_documents,
1882 }
1883 }
1884}
1885
1886#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1890#[serde(rename_all = "camelCase")]
1891pub struct InlineCompletionParams {
1892 pub context: InlineCompletionContext,
1895 #[serde(flatten)]
1896 pub work_done_progress_params: WorkDoneProgressParams,
1897 #[serde(flatten)]
1898 pub text_document_position_params: TextDocumentPositionParams,
1899}
1900impl InlineCompletionParams {
1901 #[must_use]
1902 pub const fn new(
1903 context: InlineCompletionContext,
1904 work_done_progress_params: WorkDoneProgressParams,
1905 text_document_position_params: TextDocumentPositionParams,
1906 ) -> Self {
1907 Self {
1908 context,
1909 work_done_progress_params,
1910 text_document_position_params,
1911 }
1912 }
1913}
1914
1915#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1919#[serde(rename_all = "camelCase")]
1920pub struct InlineCompletionList {
1921 pub items: Vec<InlineCompletionItem>,
1923}
1924impl InlineCompletionList {
1925 #[must_use]
1926 pub const fn new(items: Vec<InlineCompletionItem>) -> Self {
1927 Self { items }
1928 }
1929}
1930
1931#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1935#[serde(rename_all = "camelCase")]
1936pub struct InlineCompletionItem {
1937 pub insert_text: InsertText,
1939 #[serde(skip_serializing_if = "Option::is_none")]
1941 pub filter_text: Option<String>,
1942 #[serde(skip_serializing_if = "Option::is_none")]
1944 pub range: Option<Range>,
1945 #[serde(skip_serializing_if = "Option::is_none")]
1947 pub command: Option<Command>,
1948}
1949impl InlineCompletionItem {
1950 #[must_use]
1951 pub const fn new(
1952 insert_text: InsertText,
1953 filter_text: Option<String>,
1954 range: Option<Range>,
1955 command: Option<Command>,
1956 ) -> Self {
1957 Self {
1958 insert_text,
1959 filter_text,
1960 range,
1961 command,
1962 }
1963 }
1964}
1965
1966#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
1970#[serde(rename_all = "camelCase")]
1971pub struct InlineCompletionRegistrationOptions {
1972 #[serde(flatten)]
1973 pub static_registration_options: StaticRegistrationOptions,
1974 #[serde(flatten)]
1975 pub inline_completion_options: InlineCompletionOptions,
1976 #[serde(flatten)]
1977 pub text_document_registration_options: TextDocumentRegistrationOptions,
1978}
1979impl InlineCompletionRegistrationOptions {
1980 #[must_use]
1981 pub const fn new(
1982 static_registration_options: StaticRegistrationOptions,
1983 inline_completion_options: InlineCompletionOptions,
1984 text_document_registration_options: TextDocumentRegistrationOptions,
1985 ) -> Self {
1986 Self {
1987 static_registration_options,
1988 inline_completion_options,
1989 text_document_registration_options,
1990 }
1991 }
1992}
1993
1994#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
1998#[serde(rename_all = "camelCase")]
1999pub struct TextDocumentContentParams {
2000 pub uri: Uri,
2002}
2003impl TextDocumentContentParams {
2004 #[must_use]
2005 pub const fn new(uri: Uri) -> Self {
2006 Self { uri }
2007 }
2008}
2009
2010#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2014#[serde(rename_all = "camelCase")]
2015pub struct TextDocumentContentResult {
2016 pub text: String,
2021}
2022impl TextDocumentContentResult {
2023 #[must_use]
2024 pub const fn new(text: String) -> Self {
2025 Self { text }
2026 }
2027}
2028
2029#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2033#[serde(rename_all = "camelCase")]
2034pub struct TextDocumentContentRegistrationOptions {
2035 #[serde(flatten)]
2036 pub static_registration_options: StaticRegistrationOptions,
2037 #[serde(flatten)]
2038 pub text_document_content_options: TextDocumentContentOptions,
2039}
2040impl TextDocumentContentRegistrationOptions {
2041 #[must_use]
2042 pub const fn new(
2043 static_registration_options: StaticRegistrationOptions,
2044 text_document_content_options: TextDocumentContentOptions,
2045 ) -> Self {
2046 Self {
2047 static_registration_options,
2048 text_document_content_options,
2049 }
2050 }
2051}
2052
2053#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2057#[serde(rename_all = "camelCase")]
2058pub struct TextDocumentContentRefreshParams {
2059 pub uri: Uri,
2061}
2062impl TextDocumentContentRefreshParams {
2063 #[must_use]
2064 pub const fn new(uri: Uri) -> Self {
2065 Self { uri }
2066 }
2067}
2068
2069#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2070#[serde(rename_all = "camelCase")]
2071pub struct RegistrationParams {
2072 pub registrations: Vec<Registration>,
2073}
2074impl RegistrationParams {
2075 #[must_use]
2076 pub const fn new(registrations: Vec<Registration>) -> Self {
2077 Self { registrations }
2078 }
2079}
2080
2081#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2082#[serde(rename_all = "camelCase")]
2083pub struct UnregistrationParams {
2084 pub unregisterations: Vec<Unregistration>,
2085}
2086impl UnregistrationParams {
2087 #[must_use]
2088 pub const fn new(unregisterations: Vec<Unregistration>) -> Self {
2089 Self { unregisterations }
2090 }
2091}
2092
2093#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2094#[serde(rename_all = "camelCase")]
2095pub struct InitializeParams {
2096 pub process_id: Option<i32>,
2102 #[serde(skip_serializing_if = "Option::is_none")]
2106 pub client_info: Option<ClientInfo>,
2107 #[serde(skip_serializing_if = "Option::is_none")]
2116 pub locale: Option<String>,
2117 #[deprecated(note = "in favour of rootUri.")]
2122 #[serde(default, deserialize_with = "deserialize_some")]
2123 #[serde(skip_serializing_if = "Option::is_none")]
2124 pub root_path: Option<RootPath>,
2125 #[deprecated(note = "in favour of workspaceFolders.")]
2131 pub root_uri: Option<Uri>,
2132 pub capabilities: ClientCapabilities,
2134 #[serde(skip_serializing_if = "Option::is_none")]
2136 pub initialization_options: Option<LspAny>,
2137 #[serde(skip_serializing_if = "Option::is_none")]
2139 pub trace: Option<TraceValue>,
2140 #[serde(flatten)]
2141 pub work_done_progress_params: WorkDoneProgressParams,
2142 #[serde(flatten)]
2143 pub workspace_folders_initialize_params: WorkspaceFoldersInitializeParams,
2144}
2145impl InitializeParams {
2146 #[must_use]
2147 pub const fn new(
2148 process_id: Option<i32>,
2149 client_info: Option<ClientInfo>,
2150 locale: Option<String>,
2151 root_path: Option<RootPath>,
2152 root_uri: Option<Uri>,
2153 capabilities: ClientCapabilities,
2154 initialization_options: Option<LspAny>,
2155 trace: Option<TraceValue>,
2156 work_done_progress_params: WorkDoneProgressParams,
2157 workspace_folders_initialize_params: WorkspaceFoldersInitializeParams,
2158 ) -> Self {
2159 Self {
2160 process_id,
2161 client_info,
2162 locale,
2163 root_path,
2164 root_uri,
2165 capabilities,
2166 initialization_options,
2167 trace,
2168 work_done_progress_params,
2169 workspace_folders_initialize_params,
2170 }
2171 }
2172}
2173
2174#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2176#[serde(rename_all = "camelCase")]
2177pub struct InitializeResult {
2178 pub capabilities: ServerCapabilities,
2180 #[serde(skip_serializing_if = "Option::is_none")]
2184 pub server_info: Option<ServerInfo>,
2185}
2186impl InitializeResult {
2187 #[must_use]
2188 pub const fn new(
2189 capabilities: ServerCapabilities,
2190 server_info: Option<ServerInfo>,
2191 ) -> Self {
2192 Self { capabilities, server_info }
2193 }
2194}
2195
2196#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
2199#[serde(rename_all = "camelCase")]
2200pub struct InitializeError {
2201 pub retry: bool,
2206}
2207impl InitializeError {
2208 #[must_use]
2209 pub const fn new(retry: bool) -> Self {
2210 Self { retry }
2211 }
2212}
2213
2214#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
2215#[serde(rename_all = "camelCase")]
2216pub struct InitializedParams {}
2217impl InitializedParams {
2218 #[must_use]
2219 pub const fn new() -> Self {
2220 Self {}
2221 }
2222}
2223
2224#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2226#[serde(rename_all = "camelCase")]
2227pub struct DidChangeConfigurationParams {
2228 pub settings: LspAny,
2230}
2231impl DidChangeConfigurationParams {
2232 #[must_use]
2233 pub const fn new(settings: LspAny) -> Self {
2234 Self { settings }
2235 }
2236}
2237
2238#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2239#[serde(rename_all = "camelCase")]
2240pub struct DidChangeConfigurationRegistrationOptions {
2241 #[serde(skip_serializing_if = "Option::is_none")]
2242 pub section: Option<Section>,
2243}
2244impl DidChangeConfigurationRegistrationOptions {
2245 #[must_use]
2246 pub const fn new(section: Option<Section>) -> Self {
2247 Self { section }
2248 }
2249}
2250
2251#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2253#[serde(rename_all = "camelCase")]
2254pub struct ShowMessageParams {
2255 #[serde(rename = "type")]
2257 pub kind: MessageType,
2258 pub message: String,
2260}
2261impl ShowMessageParams {
2262 #[must_use]
2263 pub const fn new(kind: MessageType, message: String) -> Self {
2264 Self { kind, message }
2265 }
2266}
2267
2268#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
2269#[serde(rename_all = "camelCase")]
2270pub struct ShowMessageRequestParams {
2271 #[serde(rename = "type")]
2273 pub kind: MessageType,
2274 pub message: String,
2276 #[serde(skip_serializing_if = "Option::is_none")]
2278 pub actions: Option<Vec<MessageActionItem>>,
2279}
2280impl ShowMessageRequestParams {
2281 #[must_use]
2282 pub const fn new(
2283 kind: MessageType,
2284 message: String,
2285 actions: Option<Vec<MessageActionItem>>,
2286 ) -> Self {
2287 Self { kind, message, actions }
2288 }
2289}
2290
2291#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
2292#[serde(rename_all = "camelCase")]
2293pub struct MessageActionItem {
2294 pub title: String,
2296 #[serde(flatten)]
2300 pub properties: HashMap<String, MessageActionItemProperty>,
2301}
2302impl MessageActionItem {
2303 #[must_use]
2304 pub const fn new(
2305 title: String,
2306 properties: HashMap<String, MessageActionItemProperty>,
2307 ) -> Self {
2308 Self { title, properties }
2309 }
2310}
2311
2312#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2314#[serde(rename_all = "camelCase")]
2315pub struct LogMessageParams {
2316 #[serde(rename = "type")]
2318 pub kind: MessageType,
2319 pub message: String,
2321}
2322impl LogMessageParams {
2323 #[must_use]
2324 pub const fn new(kind: MessageType, message: String) -> Self {
2325 Self { kind, message }
2326 }
2327}
2328
2329#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2331#[serde(rename_all = "camelCase")]
2332pub struct DidOpenTextDocumentParams {
2333 pub text_document: TextDocumentItem,
2335}
2336impl DidOpenTextDocumentParams {
2337 #[must_use]
2338 pub const fn new(text_document: TextDocumentItem) -> Self {
2339 Self { text_document }
2340 }
2341}
2342
2343#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2345#[serde(rename_all = "camelCase")]
2346pub struct TextDocumentRegistrationOptions {
2347 pub document_selector: Option<DocumentSelector>,
2350}
2351impl TextDocumentRegistrationOptions {
2352 #[must_use]
2353 pub const fn new(document_selector: Option<DocumentSelector>) -> Self {
2354 Self { document_selector }
2355 }
2356}
2357
2358#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2360#[serde(rename_all = "camelCase")]
2361pub struct DidChangeTextDocumentParams {
2362 pub text_document: VersionedTextDocumentIdentifier,
2366 pub content_changes: Vec<TextDocumentContentChangeEvent>,
2378}
2379impl DidChangeTextDocumentParams {
2380 #[must_use]
2381 pub const fn new(
2382 text_document: VersionedTextDocumentIdentifier,
2383 content_changes: Vec<TextDocumentContentChangeEvent>,
2384 ) -> Self {
2385 Self {
2386 text_document,
2387 content_changes,
2388 }
2389 }
2390}
2391
2392#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2394#[serde(rename_all = "camelCase")]
2395pub struct TextDocumentChangeRegistrationOptions {
2396 pub sync_kind: TextDocumentSyncKind,
2398 #[serde(flatten)]
2399 pub text_document_registration_options: TextDocumentRegistrationOptions,
2400}
2401impl TextDocumentChangeRegistrationOptions {
2402 #[must_use]
2403 pub const fn new(
2404 sync_kind: TextDocumentSyncKind,
2405 text_document_registration_options: TextDocumentRegistrationOptions,
2406 ) -> Self {
2407 Self {
2408 sync_kind,
2409 text_document_registration_options,
2410 }
2411 }
2412}
2413
2414#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2416#[serde(rename_all = "camelCase")]
2417pub struct DidCloseTextDocumentParams {
2418 pub text_document: TextDocumentIdentifier,
2420}
2421impl DidCloseTextDocumentParams {
2422 #[must_use]
2423 pub const fn new(text_document: TextDocumentIdentifier) -> Self {
2424 Self { text_document }
2425 }
2426}
2427
2428#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2430#[serde(rename_all = "camelCase")]
2431pub struct DidSaveTextDocumentParams {
2432 pub text_document: TextDocumentIdentifier,
2434 #[serde(skip_serializing_if = "Option::is_none")]
2437 pub text: Option<String>,
2438}
2439impl DidSaveTextDocumentParams {
2440 #[must_use]
2441 pub const fn new(
2442 text_document: TextDocumentIdentifier,
2443 text: Option<String>,
2444 ) -> Self {
2445 Self { text_document, text }
2446 }
2447}
2448
2449#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2451#[serde(rename_all = "camelCase")]
2452pub struct TextDocumentSaveRegistrationOptions {
2453 #[serde(flatten)]
2454 pub text_document_registration_options: TextDocumentRegistrationOptions,
2455 #[serde(flatten)]
2456 pub save_options: SaveOptions,
2457}
2458impl TextDocumentSaveRegistrationOptions {
2459 #[must_use]
2460 pub const fn new(
2461 text_document_registration_options: TextDocumentRegistrationOptions,
2462 save_options: SaveOptions,
2463 ) -> Self {
2464 Self {
2465 text_document_registration_options,
2466 save_options,
2467 }
2468 }
2469}
2470
2471#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2473#[serde(rename_all = "camelCase")]
2474pub struct WillSaveTextDocumentParams {
2475 pub text_document: TextDocumentIdentifier,
2477 pub reason: TextDocumentSaveReason,
2479}
2480impl WillSaveTextDocumentParams {
2481 #[must_use]
2482 pub const fn new(
2483 text_document: TextDocumentIdentifier,
2484 reason: TextDocumentSaveReason,
2485 ) -> Self {
2486 Self { text_document, reason }
2487 }
2488}
2489
2490#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2492#[serde(rename_all = "camelCase")]
2493pub struct TextEdit {
2494 pub range: Range,
2497 pub new_text: String,
2500}
2501impl TextEdit {
2502 #[must_use]
2503 pub const fn new(range: Range, new_text: String) -> Self {
2504 Self { range, new_text }
2505 }
2506}
2507
2508#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2510#[serde(rename_all = "camelCase")]
2511pub struct DidChangeWatchedFilesParams {
2512 pub changes: Vec<FileEvent>,
2514}
2515impl DidChangeWatchedFilesParams {
2516 #[must_use]
2517 pub const fn new(changes: Vec<FileEvent>) -> Self {
2518 Self { changes }
2519 }
2520}
2521
2522#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2524#[serde(rename_all = "camelCase")]
2525pub struct DidChangeWatchedFilesRegistrationOptions {
2526 pub watchers: Vec<FileSystemWatcher>,
2528}
2529impl DidChangeWatchedFilesRegistrationOptions {
2530 #[must_use]
2531 pub const fn new(watchers: Vec<FileSystemWatcher>) -> Self {
2532 Self { watchers }
2533 }
2534}
2535
2536#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2538#[serde(rename_all = "camelCase")]
2539pub struct PublishDiagnosticsParams {
2540 pub uri: Uri,
2542 #[serde(skip_serializing_if = "Option::is_none")]
2546 pub version: Option<i32>,
2547 pub diagnostics: Vec<Diagnostic>,
2549}
2550impl PublishDiagnosticsParams {
2551 #[must_use]
2552 pub const fn new(
2553 uri: Uri,
2554 version: Option<i32>,
2555 diagnostics: Vec<Diagnostic>,
2556 ) -> Self {
2557 Self { uri, version, diagnostics }
2558 }
2559}
2560
2561#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2563#[serde(rename_all = "camelCase")]
2564pub struct CompletionParams {
2565 #[serde(skip_serializing_if = "Option::is_none")]
2568 pub context: Option<CompletionContext>,
2569 #[serde(flatten)]
2570 pub work_done_progress_params: WorkDoneProgressParams,
2571 #[serde(flatten)]
2572 pub partial_result_params: PartialResultParams,
2573 #[serde(flatten)]
2574 pub text_document_position_params: TextDocumentPositionParams,
2575}
2576impl CompletionParams {
2577 #[must_use]
2578 pub const fn new(
2579 context: Option<CompletionContext>,
2580 work_done_progress_params: WorkDoneProgressParams,
2581 partial_result_params: PartialResultParams,
2582 text_document_position_params: TextDocumentPositionParams,
2583 ) -> Self {
2584 Self {
2585 context,
2586 work_done_progress_params,
2587 partial_result_params,
2588 text_document_position_params,
2589 }
2590 }
2591}
2592
2593#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2596#[serde(rename_all = "camelCase")]
2597pub struct CompletionItem {
2598 pub label: String,
2606 #[serde(skip_serializing_if = "Option::is_none")]
2610 pub label_details: Option<CompletionItemLabelDetails>,
2611 #[serde(skip_serializing_if = "Option::is_none")]
2614 pub kind: Option<CompletionItemKind>,
2615 #[serde(skip_serializing_if = "Option::is_none")]
2619 pub tags: Option<Vec<CompletionItemTag>>,
2620 #[serde(skip_serializing_if = "Option::is_none")]
2623 pub detail: Option<String>,
2624 #[serde(skip_serializing_if = "Option::is_none")]
2626 pub documentation: Option<Documentation>,
2627 #[deprecated(note = "Use `tags` instead.")]
2630 #[serde(skip_serializing_if = "Option::is_none")]
2631 pub deprecated: Option<bool>,
2632 #[serde(skip_serializing_if = "Option::is_none")]
2638 pub preselect: Option<bool>,
2639 #[serde(skip_serializing_if = "Option::is_none")]
2643 pub sort_text: Option<String>,
2644 #[serde(skip_serializing_if = "Option::is_none")]
2648 pub filter_text: Option<String>,
2649 #[serde(skip_serializing_if = "Option::is_none")]
2661 pub insert_text: Option<String>,
2662 #[serde(skip_serializing_if = "Option::is_none")]
2669 pub insert_text_format: Option<InsertTextFormat>,
2670 #[serde(skip_serializing_if = "Option::is_none")]
2676 pub insert_text_mode: Option<InsertTextMode>,
2677 #[serde(skip_serializing_if = "Option::is_none")]
2698 pub text_edit: Option<CompletionItemTextEdit>,
2699 #[serde(skip_serializing_if = "Option::is_none")]
2710 pub text_edit_text: Option<String>,
2711 #[serde(skip_serializing_if = "Option::is_none")]
2719 pub additional_text_edits: Option<Vec<TextEdit>>,
2720 #[serde(skip_serializing_if = "Option::is_none")]
2724 pub commit_characters: Option<Vec<String>>,
2725 #[serde(skip_serializing_if = "Option::is_none")]
2729 pub command: Option<Command>,
2730 #[serde(skip_serializing_if = "Option::is_none")]
2733 pub data: Option<LspAny>,
2734}
2735impl CompletionItem {
2736 #[must_use]
2737 pub const fn new(
2738 label: String,
2739 label_details: Option<CompletionItemLabelDetails>,
2740 kind: Option<CompletionItemKind>,
2741 tags: Option<Vec<CompletionItemTag>>,
2742 detail: Option<String>,
2743 documentation: Option<Documentation>,
2744 deprecated: Option<bool>,
2745 preselect: Option<bool>,
2746 sort_text: Option<String>,
2747 filter_text: Option<String>,
2748 insert_text: Option<String>,
2749 insert_text_format: Option<InsertTextFormat>,
2750 insert_text_mode: Option<InsertTextMode>,
2751 text_edit: Option<CompletionItemTextEdit>,
2752 text_edit_text: Option<String>,
2753 additional_text_edits: Option<Vec<TextEdit>>,
2754 commit_characters: Option<Vec<String>>,
2755 command: Option<Command>,
2756 data: Option<LspAny>,
2757 ) -> Self {
2758 Self {
2759 label,
2760 label_details,
2761 kind,
2762 tags,
2763 detail,
2764 documentation,
2765 deprecated,
2766 preselect,
2767 sort_text,
2768 filter_text,
2769 insert_text,
2770 insert_text_format,
2771 insert_text_mode,
2772 text_edit,
2773 text_edit_text,
2774 additional_text_edits,
2775 commit_characters,
2776 command,
2777 data,
2778 }
2779 }
2780}
2781
2782#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2785#[serde(rename_all = "camelCase")]
2786pub struct CompletionList {
2787 pub is_incomplete: bool,
2792 #[serde(skip_serializing_if = "Option::is_none")]
2808 pub item_defaults: Option<CompletionItemDefaults>,
2809 #[serde(skip_serializing_if = "Option::is_none")]
2827 pub apply_kind: Option<CompletionItemApplyKinds>,
2828 pub items: Vec<CompletionItem>,
2830}
2831impl CompletionList {
2832 #[must_use]
2833 pub const fn new(
2834 is_incomplete: bool,
2835 item_defaults: Option<CompletionItemDefaults>,
2836 apply_kind: Option<CompletionItemApplyKinds>,
2837 items: Vec<CompletionItem>,
2838 ) -> Self {
2839 Self {
2840 is_incomplete,
2841 item_defaults,
2842 apply_kind,
2843 items,
2844 }
2845 }
2846}
2847
2848#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2850#[serde(rename_all = "camelCase")]
2851pub struct CompletionRegistrationOptions {
2852 #[serde(flatten)]
2853 pub text_document_registration_options: TextDocumentRegistrationOptions,
2854 #[serde(flatten)]
2855 pub completion_options: CompletionOptions,
2856}
2857impl CompletionRegistrationOptions {
2858 #[must_use]
2859 pub const fn new(
2860 text_document_registration_options: TextDocumentRegistrationOptions,
2861 completion_options: CompletionOptions,
2862 ) -> Self {
2863 Self {
2864 text_document_registration_options,
2865 completion_options,
2866 }
2867 }
2868}
2869
2870#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2872#[serde(rename_all = "camelCase")]
2873pub struct HoverParams {
2874 #[serde(flatten)]
2875 pub work_done_progress_params: WorkDoneProgressParams,
2876 #[serde(flatten)]
2877 pub text_document_position_params: TextDocumentPositionParams,
2878}
2879impl HoverParams {
2880 #[must_use]
2881 pub const fn new(
2882 work_done_progress_params: WorkDoneProgressParams,
2883 text_document_position_params: TextDocumentPositionParams,
2884 ) -> Self {
2885 Self {
2886 work_done_progress_params,
2887 text_document_position_params,
2888 }
2889 }
2890}
2891
2892#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2894#[serde(rename_all = "camelCase")]
2895pub struct Hover {
2896 pub contents: Contents,
2898 #[serde(skip_serializing_if = "Option::is_none")]
2901 pub range: Option<Range>,
2902}
2903impl Hover {
2904 #[must_use]
2905 pub const fn new(contents: Contents, range: Option<Range>) -> Self {
2906 Self { contents, range }
2907 }
2908}
2909
2910#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2912#[serde(rename_all = "camelCase")]
2913pub struct HoverRegistrationOptions {
2914 #[serde(flatten)]
2915 pub text_document_registration_options: TextDocumentRegistrationOptions,
2916 #[serde(flatten)]
2917 pub hover_options: HoverOptions,
2918}
2919impl HoverRegistrationOptions {
2920 #[must_use]
2921 pub const fn new(
2922 text_document_registration_options: TextDocumentRegistrationOptions,
2923 hover_options: HoverOptions,
2924 ) -> Self {
2925 Self {
2926 text_document_registration_options,
2927 hover_options,
2928 }
2929 }
2930}
2931
2932#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
2934#[serde(rename_all = "camelCase")]
2935pub struct SignatureHelpParams {
2936 #[serde(skip_serializing_if = "Option::is_none")]
2941 pub context: Option<SignatureHelpContext>,
2942 #[serde(flatten)]
2943 pub work_done_progress_params: WorkDoneProgressParams,
2944 #[serde(flatten)]
2945 pub text_document_position_params: TextDocumentPositionParams,
2946}
2947impl SignatureHelpParams {
2948 #[must_use]
2949 pub const fn new(
2950 context: Option<SignatureHelpContext>,
2951 work_done_progress_params: WorkDoneProgressParams,
2952 text_document_position_params: TextDocumentPositionParams,
2953 ) -> Self {
2954 Self {
2955 context,
2956 work_done_progress_params,
2957 text_document_position_params,
2958 }
2959 }
2960}
2961
2962#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
2966#[serde(rename_all = "camelCase")]
2967pub struct SignatureHelp {
2968 pub signatures: Vec<SignatureInformation>,
2970 #[serde(skip_serializing_if = "Option::is_none")]
2980 pub active_signature: Option<u32>,
2981 #[serde(default, deserialize_with = "deserialize_some")]
3001 #[serde(skip_serializing_if = "Option::is_none")]
3002 pub active_parameter: Option<ActiveParameter>,
3003}
3004impl SignatureHelp {
3005 #[must_use]
3006 pub const fn new(
3007 signatures: Vec<SignatureInformation>,
3008 active_signature: Option<u32>,
3009 active_parameter: Option<ActiveParameter>,
3010 ) -> Self {
3011 Self {
3012 signatures,
3013 active_signature,
3014 active_parameter,
3015 }
3016 }
3017}
3018
3019#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3021#[serde(rename_all = "camelCase")]
3022pub struct SignatureHelpRegistrationOptions {
3023 #[serde(flatten)]
3024 pub text_document_registration_options: TextDocumentRegistrationOptions,
3025 #[serde(flatten)]
3026 pub signature_help_options: SignatureHelpOptions,
3027}
3028impl SignatureHelpRegistrationOptions {
3029 #[must_use]
3030 pub const fn new(
3031 text_document_registration_options: TextDocumentRegistrationOptions,
3032 signature_help_options: SignatureHelpOptions,
3033 ) -> Self {
3034 Self {
3035 text_document_registration_options,
3036 signature_help_options,
3037 }
3038 }
3039}
3040
3041#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3043#[serde(rename_all = "camelCase")]
3044pub struct DefinitionParams {
3045 #[serde(flatten)]
3046 pub work_done_progress_params: WorkDoneProgressParams,
3047 #[serde(flatten)]
3048 pub partial_result_params: PartialResultParams,
3049 #[serde(flatten)]
3050 pub text_document_position_params: TextDocumentPositionParams,
3051}
3052impl DefinitionParams {
3053 #[must_use]
3054 pub const fn new(
3055 work_done_progress_params: WorkDoneProgressParams,
3056 partial_result_params: PartialResultParams,
3057 text_document_position_params: TextDocumentPositionParams,
3058 ) -> Self {
3059 Self {
3060 work_done_progress_params,
3061 partial_result_params,
3062 text_document_position_params,
3063 }
3064 }
3065}
3066
3067#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3069#[serde(rename_all = "camelCase")]
3070pub struct DefinitionRegistrationOptions {
3071 #[serde(flatten)]
3072 pub text_document_registration_options: TextDocumentRegistrationOptions,
3073 #[serde(flatten)]
3074 pub definition_options: DefinitionOptions,
3075}
3076impl DefinitionRegistrationOptions {
3077 #[must_use]
3078 pub const fn new(
3079 text_document_registration_options: TextDocumentRegistrationOptions,
3080 definition_options: DefinitionOptions,
3081 ) -> Self {
3082 Self {
3083 text_document_registration_options,
3084 definition_options,
3085 }
3086 }
3087}
3088
3089#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3091#[serde(rename_all = "camelCase")]
3092pub struct ReferenceParams {
3093 pub context: ReferenceContext,
3094 #[serde(flatten)]
3095 pub work_done_progress_params: WorkDoneProgressParams,
3096 #[serde(flatten)]
3097 pub partial_result_params: PartialResultParams,
3098 #[serde(flatten)]
3099 pub text_document_position_params: TextDocumentPositionParams,
3100}
3101impl ReferenceParams {
3102 #[must_use]
3103 pub const fn new(
3104 context: ReferenceContext,
3105 work_done_progress_params: WorkDoneProgressParams,
3106 partial_result_params: PartialResultParams,
3107 text_document_position_params: TextDocumentPositionParams,
3108 ) -> Self {
3109 Self {
3110 context,
3111 work_done_progress_params,
3112 partial_result_params,
3113 text_document_position_params,
3114 }
3115 }
3116}
3117
3118#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3120#[serde(rename_all = "camelCase")]
3121pub struct ReferenceRegistrationOptions {
3122 #[serde(flatten)]
3123 pub text_document_registration_options: TextDocumentRegistrationOptions,
3124 #[serde(flatten)]
3125 pub reference_options: ReferenceOptions,
3126}
3127impl ReferenceRegistrationOptions {
3128 #[must_use]
3129 pub const fn new(
3130 text_document_registration_options: TextDocumentRegistrationOptions,
3131 reference_options: ReferenceOptions,
3132 ) -> Self {
3133 Self {
3134 text_document_registration_options,
3135 reference_options,
3136 }
3137 }
3138}
3139
3140#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3142#[serde(rename_all = "camelCase")]
3143pub struct DocumentHighlightParams {
3144 #[serde(flatten)]
3145 pub work_done_progress_params: WorkDoneProgressParams,
3146 #[serde(flatten)]
3147 pub partial_result_params: PartialResultParams,
3148 #[serde(flatten)]
3149 pub text_document_position_params: TextDocumentPositionParams,
3150}
3151impl DocumentHighlightParams {
3152 #[must_use]
3153 pub const fn new(
3154 work_done_progress_params: WorkDoneProgressParams,
3155 partial_result_params: PartialResultParams,
3156 text_document_position_params: TextDocumentPositionParams,
3157 ) -> Self {
3158 Self {
3159 work_done_progress_params,
3160 partial_result_params,
3161 text_document_position_params,
3162 }
3163 }
3164}
3165
3166#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
3170#[serde(rename_all = "camelCase")]
3171pub struct DocumentHighlight {
3172 pub range: Range,
3174 #[serde(skip_serializing_if = "Option::is_none")]
3176 pub kind: Option<DocumentHighlightKind>,
3177}
3178impl DocumentHighlight {
3179 #[must_use]
3180 pub const fn new(range: Range, kind: Option<DocumentHighlightKind>) -> Self {
3181 Self { range, kind }
3182 }
3183}
3184
3185#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3187#[serde(rename_all = "camelCase")]
3188pub struct DocumentHighlightRegistrationOptions {
3189 #[serde(flatten)]
3190 pub text_document_registration_options: TextDocumentRegistrationOptions,
3191 #[serde(flatten)]
3192 pub document_highlight_options: DocumentHighlightOptions,
3193}
3194impl DocumentHighlightRegistrationOptions {
3195 #[must_use]
3196 pub const fn new(
3197 text_document_registration_options: TextDocumentRegistrationOptions,
3198 document_highlight_options: DocumentHighlightOptions,
3199 ) -> Self {
3200 Self {
3201 text_document_registration_options,
3202 document_highlight_options,
3203 }
3204 }
3205}
3206
3207#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3209#[serde(rename_all = "camelCase")]
3210pub struct DocumentSymbolParams {
3211 pub text_document: TextDocumentIdentifier,
3213 #[serde(flatten)]
3214 pub work_done_progress_params: WorkDoneProgressParams,
3215 #[serde(flatten)]
3216 pub partial_result_params: PartialResultParams,
3217}
3218impl DocumentSymbolParams {
3219 #[must_use]
3220 pub const fn new(
3221 text_document: TextDocumentIdentifier,
3222 work_done_progress_params: WorkDoneProgressParams,
3223 partial_result_params: PartialResultParams,
3224 ) -> Self {
3225 Self {
3226 text_document,
3227 work_done_progress_params,
3228 partial_result_params,
3229 }
3230 }
3231}
3232
3233#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3236#[serde(rename_all = "camelCase")]
3237pub struct SymbolInformation {
3238 #[deprecated(note = "Use tags instead")]
3242 #[serde(skip_serializing_if = "Option::is_none")]
3243 pub deprecated: Option<bool>,
3244 pub location: Location,
3254 #[serde(flatten)]
3255 pub base_symbol_information: BaseSymbolInformation,
3256}
3257impl SymbolInformation {
3258 #[must_use]
3259 pub const fn new(
3260 deprecated: Option<bool>,
3261 location: Location,
3262 base_symbol_information: BaseSymbolInformation,
3263 ) -> Self {
3264 Self {
3265 deprecated,
3266 location,
3267 base_symbol_information,
3268 }
3269 }
3270}
3271
3272#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3277#[serde(rename_all = "camelCase")]
3278pub struct DocumentSymbol {
3279 pub name: String,
3282 #[serde(skip_serializing_if = "Option::is_none")]
3284 pub detail: Option<String>,
3285 pub kind: SymbolKind,
3287 #[serde(skip_serializing_if = "Option::is_none")]
3291 pub tags: Option<Vec<SymbolTag>>,
3292 #[deprecated(note = "Use tags instead")]
3296 #[serde(skip_serializing_if = "Option::is_none")]
3297 pub deprecated: Option<bool>,
3298 pub range: Range,
3302 pub selection_range: Range,
3305 #[serde(skip_serializing_if = "Option::is_none")]
3307 pub children: Option<Vec<DocumentSymbol>>,
3308}
3309impl DocumentSymbol {
3310 #[must_use]
3311 pub const fn new(
3312 name: String,
3313 detail: Option<String>,
3314 kind: SymbolKind,
3315 tags: Option<Vec<SymbolTag>>,
3316 deprecated: Option<bool>,
3317 range: Range,
3318 selection_range: Range,
3319 children: Option<Vec<DocumentSymbol>>,
3320 ) -> Self {
3321 Self {
3322 name,
3323 detail,
3324 kind,
3325 tags,
3326 deprecated,
3327 range,
3328 selection_range,
3329 children,
3330 }
3331 }
3332}
3333
3334#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3336#[serde(rename_all = "camelCase")]
3337pub struct DocumentSymbolRegistrationOptions {
3338 #[serde(flatten)]
3339 pub text_document_registration_options: TextDocumentRegistrationOptions,
3340 #[serde(flatten)]
3341 pub document_symbol_options: DocumentSymbolOptions,
3342}
3343impl DocumentSymbolRegistrationOptions {
3344 #[must_use]
3345 pub const fn new(
3346 text_document_registration_options: TextDocumentRegistrationOptions,
3347 document_symbol_options: DocumentSymbolOptions,
3348 ) -> Self {
3349 Self {
3350 text_document_registration_options,
3351 document_symbol_options,
3352 }
3353 }
3354}
3355
3356#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3358#[serde(rename_all = "camelCase")]
3359pub struct CodeActionParams {
3360 pub text_document: TextDocumentIdentifier,
3362 pub range: Range,
3364 pub context: CodeActionContext,
3366 #[serde(flatten)]
3367 pub work_done_progress_params: WorkDoneProgressParams,
3368 #[serde(flatten)]
3369 pub partial_result_params: PartialResultParams,
3370}
3371impl CodeActionParams {
3372 #[must_use]
3373 pub const fn new(
3374 text_document: TextDocumentIdentifier,
3375 range: Range,
3376 context: CodeActionContext,
3377 work_done_progress_params: WorkDoneProgressParams,
3378 partial_result_params: PartialResultParams,
3379 ) -> Self {
3380 Self {
3381 text_document,
3382 range,
3383 context,
3384 work_done_progress_params,
3385 partial_result_params,
3386 }
3387 }
3388}
3389
3390#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3395#[serde(rename_all = "camelCase")]
3396pub struct Command {
3397 pub title: String,
3399 #[serde(skip_serializing_if = "Option::is_none")]
3403 pub tooltip: Option<String>,
3404 pub command: String,
3406 #[serde(skip_serializing_if = "Option::is_none")]
3409 pub arguments: Option<Vec<LspAny>>,
3410}
3411impl Command {
3412 #[must_use]
3413 pub const fn new(
3414 title: String,
3415 tooltip: Option<String>,
3416 command: String,
3417 arguments: Option<Vec<LspAny>>,
3418 ) -> Self {
3419 Self {
3420 title,
3421 tooltip,
3422 command,
3423 arguments,
3424 }
3425 }
3426}
3427
3428#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
3433#[serde(rename_all = "camelCase")]
3434pub struct CodeAction {
3435 pub title: String,
3437 #[serde(skip_serializing_if = "Option::is_none")]
3441 pub kind: Option<CodeActionKind>,
3442 #[serde(skip_serializing_if = "Option::is_none")]
3444 pub diagnostics: Option<Vec<Diagnostic>>,
3445 #[serde(skip_serializing_if = "Option::is_none")]
3453 pub is_preferred: Option<bool>,
3454 #[serde(skip_serializing_if = "Option::is_none")]
3470 pub disabled: Option<CodeActionDisabled>,
3471 #[serde(skip_serializing_if = "Option::is_none")]
3473 pub edit: Option<WorkspaceEdit>,
3474 #[serde(skip_serializing_if = "Option::is_none")]
3478 pub command: Option<Command>,
3479 #[serde(skip_serializing_if = "Option::is_none")]
3484 pub data: Option<LspAny>,
3485 #[serde(skip_serializing_if = "Option::is_none")]
3489 pub tags: Option<Vec<CodeActionTag>>,
3490}
3491impl CodeAction {
3492 #[must_use]
3493 pub const fn new(
3494 title: String,
3495 kind: Option<CodeActionKind>,
3496 diagnostics: Option<Vec<Diagnostic>>,
3497 is_preferred: Option<bool>,
3498 disabled: Option<CodeActionDisabled>,
3499 edit: Option<WorkspaceEdit>,
3500 command: Option<Command>,
3501 data: Option<LspAny>,
3502 tags: Option<Vec<CodeActionTag>>,
3503 ) -> Self {
3504 Self {
3505 title,
3506 kind,
3507 diagnostics,
3508 is_preferred,
3509 disabled,
3510 edit,
3511 command,
3512 data,
3513 tags,
3514 }
3515 }
3516}
3517
3518#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3520#[serde(rename_all = "camelCase")]
3521pub struct CodeActionRegistrationOptions {
3522 #[serde(flatten)]
3523 pub text_document_registration_options: TextDocumentRegistrationOptions,
3524 #[serde(flatten)]
3525 pub code_action_options: CodeActionOptions,
3526}
3527impl CodeActionRegistrationOptions {
3528 #[must_use]
3529 pub const fn new(
3530 text_document_registration_options: TextDocumentRegistrationOptions,
3531 code_action_options: CodeActionOptions,
3532 ) -> Self {
3533 Self {
3534 text_document_registration_options,
3535 code_action_options,
3536 }
3537 }
3538}
3539
3540#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3542#[serde(rename_all = "camelCase")]
3543pub struct WorkspaceSymbolParams {
3544 pub query: String,
3553 #[serde(flatten)]
3554 pub work_done_progress_params: WorkDoneProgressParams,
3555 #[serde(flatten)]
3556 pub partial_result_params: PartialResultParams,
3557}
3558impl WorkspaceSymbolParams {
3559 #[must_use]
3560 pub const fn new(
3561 query: String,
3562 work_done_progress_params: WorkDoneProgressParams,
3563 partial_result_params: PartialResultParams,
3564 ) -> Self {
3565 Self {
3566 query,
3567 work_done_progress_params,
3568 partial_result_params,
3569 }
3570 }
3571}
3572
3573#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3579#[serde(rename_all = "camelCase")]
3580pub struct WorkspaceSymbol {
3581 pub location: WorkspaceSymbolLocation,
3587 #[serde(skip_serializing_if = "Option::is_none")]
3590 pub data: Option<LspAny>,
3591 #[serde(flatten)]
3592 pub base_symbol_information: BaseSymbolInformation,
3593}
3594impl WorkspaceSymbol {
3595 #[must_use]
3596 pub const fn new(
3597 location: WorkspaceSymbolLocation,
3598 data: Option<LspAny>,
3599 base_symbol_information: BaseSymbolInformation,
3600 ) -> Self {
3601 Self {
3602 location,
3603 data,
3604 base_symbol_information,
3605 }
3606 }
3607}
3608
3609#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
3611#[serde(rename_all = "camelCase")]
3612pub struct WorkspaceSymbolRegistrationOptions {
3613 #[serde(flatten)]
3614 pub workspace_symbol_options: WorkspaceSymbolOptions,
3615}
3616impl WorkspaceSymbolRegistrationOptions {
3617 #[must_use]
3618 pub const fn new(workspace_symbol_options: WorkspaceSymbolOptions) -> Self {
3619 Self { workspace_symbol_options }
3620 }
3621}
3622
3623#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3625#[serde(rename_all = "camelCase")]
3626pub struct CodeLensParams {
3627 pub text_document: TextDocumentIdentifier,
3629 #[serde(flatten)]
3630 pub work_done_progress_params: WorkDoneProgressParams,
3631 #[serde(flatten)]
3632 pub partial_result_params: PartialResultParams,
3633}
3634impl CodeLensParams {
3635 #[must_use]
3636 pub const fn new(
3637 text_document: TextDocumentIdentifier,
3638 work_done_progress_params: WorkDoneProgressParams,
3639 partial_result_params: PartialResultParams,
3640 ) -> Self {
3641 Self {
3642 text_document,
3643 work_done_progress_params,
3644 partial_result_params,
3645 }
3646 }
3647}
3648
3649#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3655#[serde(rename_all = "camelCase")]
3656pub struct CodeLens {
3657 pub range: Range,
3659 #[serde(skip_serializing_if = "Option::is_none")]
3661 pub command: Option<Command>,
3662 #[serde(skip_serializing_if = "Option::is_none")]
3665 pub data: Option<LspAny>,
3666}
3667impl CodeLens {
3668 #[must_use]
3669 pub const fn new(
3670 range: Range,
3671 command: Option<Command>,
3672 data: Option<LspAny>,
3673 ) -> Self {
3674 Self { range, command, data }
3675 }
3676}
3677
3678#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3680#[serde(rename_all = "camelCase")]
3681pub struct CodeLensRegistrationOptions {
3682 #[serde(flatten)]
3683 pub text_document_registration_options: TextDocumentRegistrationOptions,
3684 #[serde(flatten)]
3685 pub code_lens_options: CodeLensOptions,
3686}
3687impl CodeLensRegistrationOptions {
3688 #[must_use]
3689 pub const fn new(
3690 text_document_registration_options: TextDocumentRegistrationOptions,
3691 code_lens_options: CodeLensOptions,
3692 ) -> Self {
3693 Self {
3694 text_document_registration_options,
3695 code_lens_options,
3696 }
3697 }
3698}
3699
3700#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3702#[serde(rename_all = "camelCase")]
3703pub struct DocumentLinkParams {
3704 pub text_document: TextDocumentIdentifier,
3706 #[serde(flatten)]
3707 pub work_done_progress_params: WorkDoneProgressParams,
3708 #[serde(flatten)]
3709 pub partial_result_params: PartialResultParams,
3710}
3711impl DocumentLinkParams {
3712 #[must_use]
3713 pub const fn new(
3714 text_document: TextDocumentIdentifier,
3715 work_done_progress_params: WorkDoneProgressParams,
3716 partial_result_params: PartialResultParams,
3717 ) -> Self {
3718 Self {
3719 text_document,
3720 work_done_progress_params,
3721 partial_result_params,
3722 }
3723 }
3724}
3725
3726#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3729#[serde(rename_all = "camelCase")]
3730pub struct DocumentLink {
3731 pub range: Range,
3733 #[serde(skip_serializing_if = "Option::is_none")]
3735 pub target: Option<Uri>,
3736 #[serde(skip_serializing_if = "Option::is_none")]
3744 pub tooltip: Option<String>,
3745 #[serde(skip_serializing_if = "Option::is_none")]
3748 pub data: Option<LspAny>,
3749}
3750impl DocumentLink {
3751 #[must_use]
3752 pub const fn new(
3753 range: Range,
3754 target: Option<Uri>,
3755 tooltip: Option<String>,
3756 data: Option<LspAny>,
3757 ) -> Self {
3758 Self {
3759 range,
3760 target,
3761 tooltip,
3762 data,
3763 }
3764 }
3765}
3766
3767#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3769#[serde(rename_all = "camelCase")]
3770pub struct DocumentLinkRegistrationOptions {
3771 #[serde(flatten)]
3772 pub text_document_registration_options: TextDocumentRegistrationOptions,
3773 #[serde(flatten)]
3774 pub document_link_options: DocumentLinkOptions,
3775}
3776impl DocumentLinkRegistrationOptions {
3777 #[must_use]
3778 pub const fn new(
3779 text_document_registration_options: TextDocumentRegistrationOptions,
3780 document_link_options: DocumentLinkOptions,
3781 ) -> Self {
3782 Self {
3783 text_document_registration_options,
3784 document_link_options,
3785 }
3786 }
3787}
3788
3789#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3791#[serde(rename_all = "camelCase")]
3792pub struct DocumentFormattingParams {
3793 pub text_document: TextDocumentIdentifier,
3795 pub options: FormattingOptions,
3797 #[serde(flatten)]
3798 pub work_done_progress_params: WorkDoneProgressParams,
3799}
3800impl DocumentFormattingParams {
3801 #[must_use]
3802 pub const fn new(
3803 text_document: TextDocumentIdentifier,
3804 options: FormattingOptions,
3805 work_done_progress_params: WorkDoneProgressParams,
3806 ) -> Self {
3807 Self {
3808 text_document,
3809 options,
3810 work_done_progress_params,
3811 }
3812 }
3813}
3814
3815#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3817#[serde(rename_all = "camelCase")]
3818pub struct DocumentFormattingRegistrationOptions {
3819 #[serde(flatten)]
3820 pub text_document_registration_options: TextDocumentRegistrationOptions,
3821 #[serde(flatten)]
3822 pub document_formatting_options: DocumentFormattingOptions,
3823}
3824impl DocumentFormattingRegistrationOptions {
3825 #[must_use]
3826 pub const fn new(
3827 text_document_registration_options: TextDocumentRegistrationOptions,
3828 document_formatting_options: DocumentFormattingOptions,
3829 ) -> Self {
3830 Self {
3831 text_document_registration_options,
3832 document_formatting_options,
3833 }
3834 }
3835}
3836
3837#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3839#[serde(rename_all = "camelCase")]
3840pub struct DocumentRangeFormattingParams {
3841 pub text_document: TextDocumentIdentifier,
3843 pub range: Range,
3845 pub options: FormattingOptions,
3847 #[serde(flatten)]
3848 pub work_done_progress_params: WorkDoneProgressParams,
3849}
3850impl DocumentRangeFormattingParams {
3851 #[must_use]
3852 pub const fn new(
3853 text_document: TextDocumentIdentifier,
3854 range: Range,
3855 options: FormattingOptions,
3856 work_done_progress_params: WorkDoneProgressParams,
3857 ) -> Self {
3858 Self {
3859 text_document,
3860 range,
3861 options,
3862 work_done_progress_params,
3863 }
3864 }
3865}
3866
3867#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3869#[serde(rename_all = "camelCase")]
3870pub struct DocumentRangeFormattingRegistrationOptions {
3871 #[serde(flatten)]
3872 pub text_document_registration_options: TextDocumentRegistrationOptions,
3873 #[serde(flatten)]
3874 pub document_range_formatting_options: DocumentRangeFormattingOptions,
3875}
3876impl DocumentRangeFormattingRegistrationOptions {
3877 #[must_use]
3878 pub const fn new(
3879 text_document_registration_options: TextDocumentRegistrationOptions,
3880 document_range_formatting_options: DocumentRangeFormattingOptions,
3881 ) -> Self {
3882 Self {
3883 text_document_registration_options,
3884 document_range_formatting_options,
3885 }
3886 }
3887}
3888
3889#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3893#[serde(rename_all = "camelCase")]
3894pub struct DocumentRangesFormattingParams {
3895 pub text_document: TextDocumentIdentifier,
3897 pub ranges: Vec<Range>,
3899 pub options: FormattingOptions,
3901 #[serde(flatten)]
3902 pub work_done_progress_params: WorkDoneProgressParams,
3903}
3904impl DocumentRangesFormattingParams {
3905 #[must_use]
3906 pub const fn new(
3907 text_document: TextDocumentIdentifier,
3908 ranges: Vec<Range>,
3909 options: FormattingOptions,
3910 work_done_progress_params: WorkDoneProgressParams,
3911 ) -> Self {
3912 Self {
3913 text_document,
3914 ranges,
3915 options,
3916 work_done_progress_params,
3917 }
3918 }
3919}
3920
3921#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3923#[serde(rename_all = "camelCase")]
3924pub struct DocumentOnTypeFormattingParams {
3925 pub text_document: TextDocumentIdentifier,
3927 pub position: Position,
3931 pub ch: String,
3936 pub options: FormattingOptions,
3938}
3939impl DocumentOnTypeFormattingParams {
3940 #[must_use]
3941 pub const fn new(
3942 text_document: TextDocumentIdentifier,
3943 position: Position,
3944 ch: String,
3945 options: FormattingOptions,
3946 ) -> Self {
3947 Self {
3948 text_document,
3949 position,
3950 ch,
3951 options,
3952 }
3953 }
3954}
3955
3956#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
3958#[serde(rename_all = "camelCase")]
3959pub struct DocumentOnTypeFormattingRegistrationOptions {
3960 #[serde(flatten)]
3961 pub text_document_registration_options: TextDocumentRegistrationOptions,
3962 #[serde(flatten)]
3963 pub document_on_type_formatting_options: DocumentOnTypeFormattingOptions,
3964}
3965impl DocumentOnTypeFormattingRegistrationOptions {
3966 #[must_use]
3967 pub const fn new(
3968 text_document_registration_options: TextDocumentRegistrationOptions,
3969 document_on_type_formatting_options: DocumentOnTypeFormattingOptions,
3970 ) -> Self {
3971 Self {
3972 text_document_registration_options,
3973 document_on_type_formatting_options,
3974 }
3975 }
3976}
3977
3978#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
3980#[serde(rename_all = "camelCase")]
3981pub struct RenameParams {
3982 pub new_name: String,
3986 #[serde(flatten)]
3987 pub work_done_progress_params: WorkDoneProgressParams,
3988 #[serde(flatten)]
3989 pub text_document_position_params: TextDocumentPositionParams,
3990}
3991impl RenameParams {
3992 #[must_use]
3993 pub const fn new(
3994 new_name: String,
3995 work_done_progress_params: WorkDoneProgressParams,
3996 text_document_position_params: TextDocumentPositionParams,
3997 ) -> Self {
3998 Self {
3999 new_name,
4000 work_done_progress_params,
4001 text_document_position_params,
4002 }
4003 }
4004}
4005
4006#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4008#[serde(rename_all = "camelCase")]
4009pub struct RenameRegistrationOptions {
4010 #[serde(flatten)]
4011 pub text_document_registration_options: TextDocumentRegistrationOptions,
4012 #[serde(flatten)]
4013 pub rename_options: RenameOptions,
4014}
4015impl RenameRegistrationOptions {
4016 #[must_use]
4017 pub const fn new(
4018 text_document_registration_options: TextDocumentRegistrationOptions,
4019 rename_options: RenameOptions,
4020 ) -> Self {
4021 Self {
4022 text_document_registration_options,
4023 rename_options,
4024 }
4025 }
4026}
4027
4028#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4029#[serde(rename_all = "camelCase")]
4030pub struct PrepareRenameParams {
4031 #[serde(flatten)]
4032 pub work_done_progress_params: WorkDoneProgressParams,
4033 #[serde(flatten)]
4034 pub text_document_position_params: TextDocumentPositionParams,
4035}
4036impl PrepareRenameParams {
4037 #[must_use]
4038 pub const fn new(
4039 work_done_progress_params: WorkDoneProgressParams,
4040 text_document_position_params: TextDocumentPositionParams,
4041 ) -> Self {
4042 Self {
4043 work_done_progress_params,
4044 text_document_position_params,
4045 }
4046 }
4047}
4048
4049#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4051#[serde(rename_all = "camelCase")]
4052pub struct ExecuteCommandParams {
4053 pub command: String,
4055 #[serde(skip_serializing_if = "Option::is_none")]
4057 pub arguments: Option<Vec<LspAny>>,
4058 #[serde(flatten)]
4059 pub work_done_progress_params: WorkDoneProgressParams,
4060}
4061impl ExecuteCommandParams {
4062 #[must_use]
4063 pub const fn new(
4064 command: String,
4065 arguments: Option<Vec<LspAny>>,
4066 work_done_progress_params: WorkDoneProgressParams,
4067 ) -> Self {
4068 Self {
4069 command,
4070 arguments,
4071 work_done_progress_params,
4072 }
4073 }
4074}
4075
4076#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4078#[serde(rename_all = "camelCase")]
4079pub struct ExecuteCommandRegistrationOptions {
4080 #[serde(flatten)]
4081 pub execute_command_options: ExecuteCommandOptions,
4082}
4083impl ExecuteCommandRegistrationOptions {
4084 #[must_use]
4085 pub const fn new(execute_command_options: ExecuteCommandOptions) -> Self {
4086 Self { execute_command_options }
4087 }
4088}
4089
4090#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
4092#[serde(rename_all = "camelCase")]
4093pub struct ApplyWorkspaceEditParams {
4094 #[serde(skip_serializing_if = "Option::is_none")]
4098 pub label: Option<String>,
4099 pub edit: WorkspaceEdit,
4101 #[serde(skip_serializing_if = "Option::is_none")]
4105 pub metadata: Option<WorkspaceEditMetadata>,
4106}
4107impl ApplyWorkspaceEditParams {
4108 #[must_use]
4109 pub const fn new(
4110 label: Option<String>,
4111 edit: WorkspaceEdit,
4112 metadata: Option<WorkspaceEditMetadata>,
4113 ) -> Self {
4114 Self { label, edit, metadata }
4115 }
4116}
4117
4118#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4122#[serde(rename_all = "camelCase")]
4123pub struct ApplyWorkspaceEditResult {
4124 pub applied: bool,
4126 #[serde(skip_serializing_if = "Option::is_none")]
4130 pub failure_reason: Option<String>,
4131 #[serde(skip_serializing_if = "Option::is_none")]
4135 pub failed_change: Option<u32>,
4136}
4137impl ApplyWorkspaceEditResult {
4138 #[must_use]
4139 pub const fn new(
4140 applied: bool,
4141 failure_reason: Option<String>,
4142 failed_change: Option<u32>,
4143 ) -> Self {
4144 Self {
4145 applied,
4146 failure_reason,
4147 failed_change,
4148 }
4149 }
4150}
4151
4152#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4153#[serde(rename_all = "camelCase")]
4154#[serde(try_from = "ShadowWorkDoneProgressBegin", into = "ShadowWorkDoneProgressBegin")]
4155pub struct WorkDoneProgressBegin {
4156 pub title: String,
4161 #[serde(skip_serializing_if = "Option::is_none")]
4165 pub cancellable: Option<bool>,
4166 #[serde(skip_serializing_if = "Option::is_none")]
4172 pub message: Option<String>,
4173 #[serde(skip_serializing_if = "Option::is_none")]
4180 pub percentage: Option<u32>,
4181}
4182#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4183#[serde(rename_all = "camelCase")]
4184struct ShadowWorkDoneProgressBegin {
4185 pub title: String,
4190 #[serde(skip_serializing_if = "Option::is_none")]
4194 pub cancellable: Option<bool>,
4195 #[serde(skip_serializing_if = "Option::is_none")]
4201 pub message: Option<String>,
4202 #[serde(skip_serializing_if = "Option::is_none")]
4209 pub percentage: Option<u32>,
4210 pub kind: String,
4211}
4212impl TryFrom<ShadowWorkDoneProgressBegin> for WorkDoneProgressBegin {
4213 type Error = String;
4214 fn try_from(shadow: ShadowWorkDoneProgressBegin) -> Result<Self, Self::Error> {
4215 if shadow.kind != "begin" {
4216 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
4217 }
4218 Ok(Self {
4219 title: shadow.title,
4220 cancellable: shadow.cancellable,
4221 message: shadow.message,
4222 percentage: shadow.percentage,
4223 })
4224 }
4225}
4226impl From<WorkDoneProgressBegin> for ShadowWorkDoneProgressBegin {
4227 fn from(original: WorkDoneProgressBegin) -> Self {
4228 Self {
4229 title: original.title,
4230 cancellable: original.cancellable,
4231 message: original.message,
4232 percentage: original.percentage,
4233 kind: "begin".to_string(),
4234 }
4235 }
4236}
4237impl WorkDoneProgressBegin {
4238 #[must_use]
4239 pub const fn new(
4240 title: String,
4241 cancellable: Option<bool>,
4242 message: Option<String>,
4243 percentage: Option<u32>,
4244 ) -> Self {
4245 Self {
4246 title,
4247 cancellable,
4248 message,
4249 percentage,
4250 }
4251 }
4252}
4253
4254#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4255#[serde(rename_all = "camelCase")]
4256#[serde(
4257 try_from = "ShadowWorkDoneProgressReport",
4258 into = "ShadowWorkDoneProgressReport"
4259)]
4260pub struct WorkDoneProgressReport {
4261 #[serde(skip_serializing_if = "Option::is_none")]
4266 pub cancellable: Option<bool>,
4267 #[serde(skip_serializing_if = "Option::is_none")]
4273 pub message: Option<String>,
4274 #[serde(skip_serializing_if = "Option::is_none")]
4281 pub percentage: Option<u32>,
4282}
4283#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4284#[serde(rename_all = "camelCase")]
4285struct ShadowWorkDoneProgressReport {
4286 #[serde(skip_serializing_if = "Option::is_none")]
4291 pub cancellable: Option<bool>,
4292 #[serde(skip_serializing_if = "Option::is_none")]
4298 pub message: Option<String>,
4299 #[serde(skip_serializing_if = "Option::is_none")]
4306 pub percentage: Option<u32>,
4307 pub kind: String,
4308}
4309impl TryFrom<ShadowWorkDoneProgressReport> for WorkDoneProgressReport {
4310 type Error = String;
4311 fn try_from(shadow: ShadowWorkDoneProgressReport) -> Result<Self, Self::Error> {
4312 if shadow.kind != "report" {
4313 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
4314 }
4315 Ok(Self {
4316 cancellable: shadow.cancellable,
4317 message: shadow.message,
4318 percentage: shadow.percentage,
4319 })
4320 }
4321}
4322impl From<WorkDoneProgressReport> for ShadowWorkDoneProgressReport {
4323 fn from(original: WorkDoneProgressReport) -> Self {
4324 Self {
4325 cancellable: original.cancellable,
4326 message: original.message,
4327 percentage: original.percentage,
4328 kind: "report".to_string(),
4329 }
4330 }
4331}
4332impl WorkDoneProgressReport {
4333 #[must_use]
4334 pub const fn new(
4335 cancellable: Option<bool>,
4336 message: Option<String>,
4337 percentage: Option<u32>,
4338 ) -> Self {
4339 Self {
4340 cancellable,
4341 message,
4342 percentage,
4343 }
4344 }
4345}
4346
4347#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4348#[serde(rename_all = "camelCase")]
4349#[serde(try_from = "ShadowWorkDoneProgressEnd", into = "ShadowWorkDoneProgressEnd")]
4350pub struct WorkDoneProgressEnd {
4351 #[serde(skip_serializing_if = "Option::is_none")]
4354 pub message: Option<String>,
4355}
4356#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4357#[serde(rename_all = "camelCase")]
4358struct ShadowWorkDoneProgressEnd {
4359 #[serde(skip_serializing_if = "Option::is_none")]
4362 pub message: Option<String>,
4363 pub kind: String,
4364}
4365impl TryFrom<ShadowWorkDoneProgressEnd> for WorkDoneProgressEnd {
4366 type Error = String;
4367 fn try_from(shadow: ShadowWorkDoneProgressEnd) -> Result<Self, Self::Error> {
4368 if shadow.kind != "end" {
4369 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
4370 }
4371 Ok(Self { message: shadow.message })
4372 }
4373}
4374impl From<WorkDoneProgressEnd> for ShadowWorkDoneProgressEnd {
4375 fn from(original: WorkDoneProgressEnd) -> Self {
4376 Self {
4377 message: original.message,
4378 kind: "end".to_string(),
4379 }
4380 }
4381}
4382impl WorkDoneProgressEnd {
4383 #[must_use]
4384 pub const fn new(message: Option<String>) -> Self {
4385 Self { message }
4386 }
4387}
4388
4389#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4390#[serde(rename_all = "camelCase")]
4391pub struct SetTraceParams {
4392 pub value: TraceValue,
4393}
4394impl SetTraceParams {
4395 #[must_use]
4396 pub const fn new(value: TraceValue) -> Self {
4397 Self { value }
4398 }
4399}
4400
4401#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4402#[serde(rename_all = "camelCase")]
4403pub struct LogTraceParams {
4404 pub message: String,
4405 #[serde(skip_serializing_if = "Option::is_none")]
4406 pub verbose: Option<String>,
4407}
4408impl LogTraceParams {
4409 #[must_use]
4410 pub const fn new(message: String, verbose: Option<String>) -> Self {
4411 Self { message, verbose }
4412 }
4413}
4414
4415#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4416#[serde(rename_all = "camelCase")]
4417pub struct CancelParams {
4418 pub id: Id,
4420}
4421impl CancelParams {
4422 #[must_use]
4423 pub const fn new(id: Id) -> Self {
4424 Self { id }
4425 }
4426}
4427
4428#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4429#[serde(rename_all = "camelCase")]
4430pub struct ProgressParams {
4431 pub token: ProgressToken,
4433 pub value: LspAny,
4435}
4436impl ProgressParams {
4437 #[must_use]
4438 pub const fn new(token: ProgressToken, value: LspAny) -> Self {
4439 Self { token, value }
4440 }
4441}
4442
4443#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4446#[serde(rename_all = "camelCase")]
4447pub struct TextDocumentPositionParams {
4448 pub text_document: TextDocumentIdentifier,
4450 pub position: Position,
4452}
4453impl TextDocumentPositionParams {
4454 #[must_use]
4455 pub const fn new(text_document: TextDocumentIdentifier, position: Position) -> Self {
4456 Self { text_document, position }
4457 }
4458}
4459
4460#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4461#[serde(rename_all = "camelCase")]
4462pub struct WorkDoneProgressParams {
4463 #[serde(skip_serializing_if = "Option::is_none")]
4465 pub work_done_token: Option<ProgressToken>,
4466}
4467impl WorkDoneProgressParams {
4468 #[must_use]
4469 pub const fn new(work_done_token: Option<ProgressToken>) -> Self {
4470 Self { work_done_token }
4471 }
4472}
4473
4474#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4475#[serde(rename_all = "camelCase")]
4476pub struct PartialResultParams {
4477 #[serde(skip_serializing_if = "Option::is_none")]
4480 pub partial_result_token: Option<ProgressToken>,
4481}
4482impl PartialResultParams {
4483 #[must_use]
4484 pub const fn new(partial_result_token: Option<ProgressToken>) -> Self {
4485 Self { partial_result_token }
4486 }
4487}
4488
4489#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4492#[serde(rename_all = "camelCase")]
4493pub struct LocationLink {
4494 #[serde(skip_serializing_if = "Option::is_none")]
4499 pub origin_selection_range: Option<Range>,
4500 pub target_uri: Uri,
4502 pub target_range: Range,
4506 pub target_selection_range: Range,
4509}
4510impl LocationLink {
4511 #[must_use]
4512 pub const fn new(
4513 origin_selection_range: Option<Range>,
4514 target_uri: Uri,
4515 target_range: Range,
4516 target_selection_range: Range,
4517 ) -> Self {
4518 Self {
4519 origin_selection_range,
4520 target_uri,
4521 target_range,
4522 target_selection_range,
4523 }
4524 }
4525}
4526
4527#[derive(
4539 Serialize,
4540 Deserialize,
4541 PartialEq,
4542 Debug,
4543 Clone,
4544 Eq,
4545 Hash,
4546 Default,
4547 Copy,
4548 PartialOrd,
4549 Ord
4550)]
4551#[serde(rename_all = "camelCase")]
4552pub struct Range {
4553 pub start: Position,
4555 pub end: Position,
4557}
4558impl Range {
4559 #[must_use]
4560 pub const fn new(start: Position, end: Position) -> Self {
4561 Self { start, end }
4562 }
4563}
4564
4565#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4566#[serde(rename_all = "camelCase")]
4567pub struct ImplementationOptions {
4568 #[serde(flatten)]
4569 pub work_done_progress_options: WorkDoneProgressOptions,
4570}
4571impl ImplementationOptions {
4572 #[must_use]
4573 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4574 Self { work_done_progress_options }
4575 }
4576}
4577
4578#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4581#[serde(rename_all = "camelCase")]
4582pub struct StaticRegistrationOptions {
4583 #[serde(skip_serializing_if = "Option::is_none")]
4586 pub id: Option<String>,
4587}
4588impl StaticRegistrationOptions {
4589 #[must_use]
4590 pub const fn new(id: Option<String>) -> Self {
4591 Self { id }
4592 }
4593}
4594
4595#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4596#[serde(rename_all = "camelCase")]
4597pub struct TypeDefinitionOptions {
4598 #[serde(flatten)]
4599 pub work_done_progress_options: WorkDoneProgressOptions,
4600}
4601impl TypeDefinitionOptions {
4602 #[must_use]
4603 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4604 Self { work_done_progress_options }
4605 }
4606}
4607
4608#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4610#[serde(rename_all = "camelCase")]
4611pub struct WorkspaceFoldersChangeEvent {
4612 pub added: Vec<WorkspaceFolder>,
4614 pub removed: Vec<WorkspaceFolder>,
4616}
4617impl WorkspaceFoldersChangeEvent {
4618 #[must_use]
4619 pub const fn new(
4620 added: Vec<WorkspaceFolder>,
4621 removed: Vec<WorkspaceFolder>,
4622 ) -> Self {
4623 Self { added, removed }
4624 }
4625}
4626
4627#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4628#[serde(rename_all = "camelCase")]
4629pub struct ConfigurationItem {
4630 #[serde(skip_serializing_if = "Option::is_none")]
4632 pub scope_uri: Option<Uri>,
4633 #[serde(skip_serializing_if = "Option::is_none")]
4635 pub section: Option<String>,
4636}
4637impl ConfigurationItem {
4638 #[must_use]
4639 pub const fn new(scope_uri: Option<Uri>, section: Option<String>) -> Self {
4640 Self { scope_uri, section }
4641 }
4642}
4643
4644#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4646#[serde(rename_all = "camelCase")]
4647pub struct TextDocumentIdentifier {
4648 pub uri: Uri,
4650}
4651impl TextDocumentIdentifier {
4652 #[must_use]
4653 pub const fn new(uri: Uri) -> Self {
4654 Self { uri }
4655 }
4656}
4657
4658#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Default, Copy)]
4660#[serde(rename_all = "camelCase")]
4661pub struct Color {
4662 pub red: f32,
4664 pub green: f32,
4666 pub blue: f32,
4668 pub alpha: f32,
4670}
4671impl Color {
4672 #[must_use]
4673 pub const fn new(red: f32, green: f32, blue: f32, alpha: f32) -> Self {
4674 Self { red, green, blue, alpha }
4675 }
4676}
4677
4678#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4679#[serde(rename_all = "camelCase")]
4680pub struct DocumentColorOptions {
4681 #[serde(flatten)]
4682 pub work_done_progress_options: WorkDoneProgressOptions,
4683}
4684impl DocumentColorOptions {
4685 #[must_use]
4686 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4687 Self { work_done_progress_options }
4688 }
4689}
4690
4691#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4692#[serde(rename_all = "camelCase")]
4693pub struct FoldingRangeOptions {
4694 #[serde(flatten)]
4695 pub work_done_progress_options: WorkDoneProgressOptions,
4696}
4697impl FoldingRangeOptions {
4698 #[must_use]
4699 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4700 Self { work_done_progress_options }
4701 }
4702}
4703
4704#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4705#[serde(rename_all = "camelCase")]
4706pub struct DeclarationOptions {
4707 #[serde(flatten)]
4708 pub work_done_progress_options: WorkDoneProgressOptions,
4709}
4710impl DeclarationOptions {
4711 #[must_use]
4712 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4713 Self { work_done_progress_options }
4714 }
4715}
4716
4717#[derive(
4745 Serialize,
4746 Deserialize,
4747 PartialEq,
4748 Debug,
4749 Clone,
4750 Eq,
4751 Hash,
4752 Default,
4753 Copy,
4754 PartialOrd,
4755 Ord
4756)]
4757#[serde(rename_all = "camelCase")]
4758pub struct Position {
4759 pub line: u32,
4761 pub character: u32,
4766}
4767impl Position {
4768 #[must_use]
4769 pub const fn new(line: u32, character: u32) -> Self {
4770 Self { line, character }
4771 }
4772}
4773
4774#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4775#[serde(rename_all = "camelCase")]
4776pub struct SelectionRangeOptions {
4777 #[serde(flatten)]
4778 pub work_done_progress_options: WorkDoneProgressOptions,
4779}
4780impl SelectionRangeOptions {
4781 #[must_use]
4782 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4783 Self { work_done_progress_options }
4784 }
4785}
4786
4787#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4791#[serde(rename_all = "camelCase")]
4792pub struct CallHierarchyOptions {
4793 #[serde(flatten)]
4794 pub work_done_progress_options: WorkDoneProgressOptions,
4795}
4796impl CallHierarchyOptions {
4797 #[must_use]
4798 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4799 Self { work_done_progress_options }
4800 }
4801}
4802
4803#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4805#[serde(rename_all = "camelCase")]
4806pub struct SemanticTokensOptions {
4807 pub legend: SemanticTokensLegend,
4809 #[serde(skip_serializing_if = "Option::is_none")]
4812 pub range: Option<SemanticTokensOptionsRange>,
4813 #[serde(skip_serializing_if = "Option::is_none")]
4815 pub full: Option<Full>,
4816 #[serde(flatten)]
4817 pub work_done_progress_options: WorkDoneProgressOptions,
4818}
4819impl SemanticTokensOptions {
4820 #[must_use]
4821 pub const fn new(
4822 legend: SemanticTokensLegend,
4823 range: Option<SemanticTokensOptionsRange>,
4824 full: Option<Full>,
4825 work_done_progress_options: WorkDoneProgressOptions,
4826 ) -> Self {
4827 Self {
4828 legend,
4829 range,
4830 full,
4831 work_done_progress_options,
4832 }
4833 }
4834}
4835
4836#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
4838#[serde(rename_all = "camelCase")]
4839pub struct SemanticTokensEdit {
4840 pub start: u32,
4842 pub delete_count: u32,
4844 #[serde(skip_serializing_if = "Option::is_none")]
4846 pub data: Option<Vec<u32>>,
4847}
4848impl SemanticTokensEdit {
4849 #[must_use]
4850 pub const fn new(start: u32, delete_count: u32, data: Option<Vec<u32>>) -> Self {
4851 Self { start, delete_count, data }
4852 }
4853}
4854
4855#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
4856#[serde(rename_all = "camelCase")]
4857pub struct LinkedEditingRangeOptions {
4858 #[serde(flatten)]
4859 pub work_done_progress_options: WorkDoneProgressOptions,
4860}
4861impl LinkedEditingRangeOptions {
4862 #[must_use]
4863 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
4864 Self { work_done_progress_options }
4865 }
4866}
4867
4868#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4872#[serde(rename_all = "camelCase")]
4873pub struct FileCreate {
4874 pub uri: Uri,
4876}
4877impl FileCreate {
4878 #[must_use]
4879 pub const fn new(uri: Uri) -> Self {
4880 Self { uri }
4881 }
4882}
4883
4884#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4889#[serde(rename_all = "camelCase")]
4890pub struct TextDocumentEdit {
4891 pub text_document: OptionalVersionedTextDocumentIdentifier,
4893 pub edits: Vec<Edit>,
4901}
4902impl TextDocumentEdit {
4903 #[must_use]
4904 pub const fn new(
4905 text_document: OptionalVersionedTextDocumentIdentifier,
4906 edits: Vec<Edit>,
4907 ) -> Self {
4908 Self { text_document, edits }
4909 }
4910}
4911
4912#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4914#[serde(rename_all = "camelCase")]
4915#[serde(try_from = "ShadowCreateFile", into = "ShadowCreateFile")]
4916pub struct CreateFile {
4917 pub uri: Uri,
4919 #[serde(skip_serializing_if = "Option::is_none")]
4921 pub options: Option<CreateFileOptions>,
4922 #[serde(skip_serializing_if = "Option::is_none")]
4926 pub annotation_id: Option<ChangeAnnotationIdentifier>,
4927}
4928#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4929#[serde(rename_all = "camelCase")]
4930struct ShadowCreateFile {
4931 pub uri: Uri,
4933 #[serde(skip_serializing_if = "Option::is_none")]
4935 pub options: Option<CreateFileOptions>,
4936 #[serde(skip_serializing_if = "Option::is_none")]
4940 pub annotation_id: Option<ChangeAnnotationIdentifier>,
4941 pub kind: String,
4942}
4943impl TryFrom<ShadowCreateFile> for CreateFile {
4944 type Error = String;
4945 fn try_from(shadow: ShadowCreateFile) -> Result<Self, Self::Error> {
4946 if shadow.kind != "create" {
4947 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
4948 }
4949 Ok(Self {
4950 uri: shadow.uri,
4951 options: shadow.options,
4952 annotation_id: shadow.annotation_id,
4953 })
4954 }
4955}
4956impl From<CreateFile> for ShadowCreateFile {
4957 fn from(original: CreateFile) -> Self {
4958 Self {
4959 uri: original.uri,
4960 options: original.options,
4961 annotation_id: original.annotation_id,
4962 kind: "create".to_string(),
4963 }
4964 }
4965}
4966impl CreateFile {
4967 #[must_use]
4968 pub const fn new(
4969 uri: Uri,
4970 options: Option<CreateFileOptions>,
4971 annotation_id: Option<ChangeAnnotationIdentifier>,
4972 ) -> Self {
4973 Self {
4974 uri,
4975 options,
4976 annotation_id,
4977 }
4978 }
4979}
4980
4981#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
4983#[serde(rename_all = "camelCase")]
4984#[serde(try_from = "ShadowRenameFile", into = "ShadowRenameFile")]
4985pub struct RenameFile {
4986 pub old_uri: Uri,
4988 pub new_uri: Uri,
4990 #[serde(skip_serializing_if = "Option::is_none")]
4992 pub options: Option<RenameFileOptions>,
4993 #[serde(skip_serializing_if = "Option::is_none")]
4997 pub annotation_id: Option<ChangeAnnotationIdentifier>,
4998}
4999#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5000#[serde(rename_all = "camelCase")]
5001struct ShadowRenameFile {
5002 pub old_uri: Uri,
5004 pub new_uri: Uri,
5006 #[serde(skip_serializing_if = "Option::is_none")]
5008 pub options: Option<RenameFileOptions>,
5009 #[serde(skip_serializing_if = "Option::is_none")]
5013 pub annotation_id: Option<ChangeAnnotationIdentifier>,
5014 pub kind: String,
5015}
5016impl TryFrom<ShadowRenameFile> for RenameFile {
5017 type Error = String;
5018 fn try_from(shadow: ShadowRenameFile) -> Result<Self, Self::Error> {
5019 if shadow.kind != "rename" {
5020 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
5021 }
5022 Ok(Self {
5023 old_uri: shadow.old_uri,
5024 new_uri: shadow.new_uri,
5025 options: shadow.options,
5026 annotation_id: shadow.annotation_id,
5027 })
5028 }
5029}
5030impl From<RenameFile> for ShadowRenameFile {
5031 fn from(original: RenameFile) -> Self {
5032 Self {
5033 old_uri: original.old_uri,
5034 new_uri: original.new_uri,
5035 options: original.options,
5036 annotation_id: original.annotation_id,
5037 kind: "rename".to_string(),
5038 }
5039 }
5040}
5041impl RenameFile {
5042 #[must_use]
5043 pub const fn new(
5044 old_uri: Uri,
5045 new_uri: Uri,
5046 options: Option<RenameFileOptions>,
5047 annotation_id: Option<ChangeAnnotationIdentifier>,
5048 ) -> Self {
5049 Self {
5050 old_uri,
5051 new_uri,
5052 options,
5053 annotation_id,
5054 }
5055 }
5056}
5057
5058#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5060#[serde(rename_all = "camelCase")]
5061#[serde(try_from = "ShadowDeleteFile", into = "ShadowDeleteFile")]
5062pub struct DeleteFile {
5063 pub uri: Uri,
5065 #[serde(skip_serializing_if = "Option::is_none")]
5067 pub options: Option<DeleteFileOptions>,
5068 #[serde(skip_serializing_if = "Option::is_none")]
5072 pub annotation_id: Option<ChangeAnnotationIdentifier>,
5073}
5074#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5075#[serde(rename_all = "camelCase")]
5076struct ShadowDeleteFile {
5077 pub uri: Uri,
5079 #[serde(skip_serializing_if = "Option::is_none")]
5081 pub options: Option<DeleteFileOptions>,
5082 #[serde(skip_serializing_if = "Option::is_none")]
5086 pub annotation_id: Option<ChangeAnnotationIdentifier>,
5087 pub kind: String,
5088}
5089impl TryFrom<ShadowDeleteFile> for DeleteFile {
5090 type Error = String;
5091 fn try_from(shadow: ShadowDeleteFile) -> Result<Self, Self::Error> {
5092 if shadow.kind != "delete" {
5093 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
5094 }
5095 Ok(Self {
5096 uri: shadow.uri,
5097 options: shadow.options,
5098 annotation_id: shadow.annotation_id,
5099 })
5100 }
5101}
5102impl From<DeleteFile> for ShadowDeleteFile {
5103 fn from(original: DeleteFile) -> Self {
5104 Self {
5105 uri: original.uri,
5106 options: original.options,
5107 annotation_id: original.annotation_id,
5108 kind: "delete".to_string(),
5109 }
5110 }
5111}
5112impl DeleteFile {
5113 #[must_use]
5114 pub const fn new(
5115 uri: Uri,
5116 options: Option<DeleteFileOptions>,
5117 annotation_id: Option<ChangeAnnotationIdentifier>,
5118 ) -> Self {
5119 Self {
5120 uri,
5121 options,
5122 annotation_id,
5123 }
5124 }
5125}
5126
5127#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5131#[serde(rename_all = "camelCase")]
5132pub struct ChangeAnnotation {
5133 pub label: String,
5136 #[serde(skip_serializing_if = "Option::is_none")]
5139 pub needs_confirmation: Option<bool>,
5140 #[serde(skip_serializing_if = "Option::is_none")]
5143 pub description: Option<String>,
5144}
5145impl ChangeAnnotation {
5146 #[must_use]
5147 pub const fn new(
5148 label: String,
5149 needs_confirmation: Option<bool>,
5150 description: Option<String>,
5151 ) -> Self {
5152 Self {
5153 label,
5154 needs_confirmation,
5155 description,
5156 }
5157 }
5158}
5159
5160#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5165#[serde(rename_all = "camelCase")]
5166pub struct FileOperationFilter {
5167 #[serde(skip_serializing_if = "Option::is_none")]
5169 pub scheme: Option<String>,
5170 pub pattern: FileOperationPattern,
5172}
5173impl FileOperationFilter {
5174 #[must_use]
5175 pub const fn new(scheme: Option<String>, pattern: FileOperationPattern) -> Self {
5176 Self { scheme, pattern }
5177 }
5178}
5179
5180#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5184#[serde(rename_all = "camelCase")]
5185pub struct FileRename {
5186 pub old_uri: Uri,
5188 pub new_uri: Uri,
5190}
5191impl FileRename {
5192 #[must_use]
5193 pub const fn new(old_uri: Uri, new_uri: Uri) -> Self {
5194 Self { old_uri, new_uri }
5195 }
5196}
5197
5198#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5202#[serde(rename_all = "camelCase")]
5203pub struct FileDelete {
5204 pub uri: Uri,
5206}
5207impl FileDelete {
5208 #[must_use]
5209 pub const fn new(uri: Uri) -> Self {
5210 Self { uri }
5211 }
5212}
5213
5214#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5215#[serde(rename_all = "camelCase")]
5216pub struct MonikerOptions {
5217 #[serde(flatten)]
5218 pub work_done_progress_options: WorkDoneProgressOptions,
5219}
5220impl MonikerOptions {
5221 #[must_use]
5222 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
5223 Self { work_done_progress_options }
5224 }
5225}
5226
5227#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5231#[serde(rename_all = "camelCase")]
5232pub struct TypeHierarchyOptions {
5233 #[serde(flatten)]
5234 pub work_done_progress_options: WorkDoneProgressOptions,
5235}
5236impl TypeHierarchyOptions {
5237 #[must_use]
5238 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
5239 Self { work_done_progress_options }
5240 }
5241}
5242
5243#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5245#[serde(rename_all = "camelCase")]
5246pub struct InlineValueContext {
5247 pub frame_id: i32,
5249 pub stopped_location: Range,
5252}
5253impl InlineValueContext {
5254 #[must_use]
5255 pub const fn new(frame_id: i32, stopped_location: Range) -> Self {
5256 Self { frame_id, stopped_location }
5257 }
5258}
5259
5260#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5264#[serde(rename_all = "camelCase")]
5265pub struct InlineValueText {
5266 pub range: Range,
5268 pub text: String,
5270}
5271impl InlineValueText {
5272 #[must_use]
5273 pub const fn new(range: Range, text: String) -> Self {
5274 Self { range, text }
5275 }
5276}
5277
5278#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5288#[serde(rename_all = "camelCase")]
5289pub struct InlineValueVariableLookup {
5290 pub range: Range,
5295 #[serde(skip_serializing_if = "Option::is_none")]
5297 pub variable_name: Option<String>,
5298 pub case_sensitive_lookup: bool,
5300}
5301impl InlineValueVariableLookup {
5302 #[must_use]
5303 pub const fn new(
5304 range: Range,
5305 variable_name: Option<String>,
5306 case_sensitive_lookup: bool,
5307 ) -> Self {
5308 Self {
5309 range,
5310 variable_name,
5311 case_sensitive_lookup,
5312 }
5313 }
5314}
5315
5316#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5326#[serde(rename_all = "camelCase")]
5327pub struct InlineValueEvaluatableExpression {
5328 pub range: Range,
5333 #[serde(skip_serializing_if = "Option::is_none")]
5335 pub expression: Option<String>,
5336}
5337impl InlineValueEvaluatableExpression {
5338 #[must_use]
5339 pub const fn new(range: Range, expression: Option<String>) -> Self {
5340 Self { range, expression }
5341 }
5342}
5343
5344#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5348#[serde(rename_all = "camelCase")]
5349pub struct InlineValueOptions {
5350 #[serde(flatten)]
5351 pub work_done_progress_options: WorkDoneProgressOptions,
5352}
5353impl InlineValueOptions {
5354 #[must_use]
5355 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
5356 Self { work_done_progress_options }
5357 }
5358}
5359
5360#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5365#[serde(rename_all = "camelCase")]
5366pub struct InlayHintLabelPart {
5367 pub value: String,
5369 #[serde(skip_serializing_if = "Option::is_none")]
5373 pub tooltip: Option<Tooltip>,
5374 #[serde(skip_serializing_if = "Option::is_none")]
5386 pub location: Option<Location>,
5387 #[serde(skip_serializing_if = "Option::is_none")]
5392 pub command: Option<Command>,
5393}
5394impl InlayHintLabelPart {
5395 #[must_use]
5396 pub const fn new(
5397 value: String,
5398 tooltip: Option<Tooltip>,
5399 location: Option<Location>,
5400 command: Option<Command>,
5401 ) -> Self {
5402 Self {
5403 value,
5404 tooltip,
5405 location,
5406 command,
5407 }
5408 }
5409}
5410
5411#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5434#[serde(rename_all = "camelCase")]
5435pub struct MarkupContent {
5436 pub kind: MarkupKind,
5438 pub value: String,
5440}
5441impl MarkupContent {
5442 #[must_use]
5443 pub const fn new(kind: MarkupKind, value: String) -> Self {
5444 Self { kind, value }
5445 }
5446}
5447
5448#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5452#[serde(rename_all = "camelCase")]
5453pub struct InlayHintOptions {
5454 #[serde(skip_serializing_if = "Option::is_none")]
5457 pub resolve_provider: Option<bool>,
5458 #[serde(flatten)]
5459 pub work_done_progress_options: WorkDoneProgressOptions,
5460}
5461impl InlayHintOptions {
5462 #[must_use]
5463 pub const fn new(
5464 resolve_provider: Option<bool>,
5465 work_done_progress_options: WorkDoneProgressOptions,
5466 ) -> Self {
5467 Self {
5468 resolve_provider,
5469 work_done_progress_options,
5470 }
5471 }
5472}
5473
5474#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
5478#[serde(rename_all = "camelCase")]
5479pub struct RelatedFullDocumentDiagnosticReport {
5480 #[serde(skip_serializing_if = "Option::is_none")]
5488 pub related_documents: Option<HashMap<Uri, RelatedDocument>>,
5489 #[serde(flatten)]
5490 pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
5491}
5492impl RelatedFullDocumentDiagnosticReport {
5493 #[must_use]
5494 pub const fn new(
5495 related_documents: Option<HashMap<Uri, RelatedDocument>>,
5496 full_document_diagnostic_report: FullDocumentDiagnosticReport,
5497 ) -> Self {
5498 Self {
5499 related_documents,
5500 full_document_diagnostic_report,
5501 }
5502 }
5503}
5504
5505#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
5509#[serde(rename_all = "camelCase")]
5510pub struct RelatedUnchangedDocumentDiagnosticReport {
5511 #[serde(skip_serializing_if = "Option::is_none")]
5519 pub related_documents: Option<HashMap<Uri, RelatedDocument>>,
5520 #[serde(flatten)]
5521 pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
5522}
5523impl RelatedUnchangedDocumentDiagnosticReport {
5524 #[must_use]
5525 pub const fn new(
5526 related_documents: Option<HashMap<Uri, RelatedDocument>>,
5527 unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
5528 ) -> Self {
5529 Self {
5530 related_documents,
5531 unchanged_document_diagnostic_report,
5532 }
5533 }
5534}
5535
5536#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
5540#[serde(rename_all = "camelCase")]
5541pub struct DocumentDiagnosticReportPartialResult {
5542 pub related_documents: HashMap<Uri, RelatedDocument>,
5543}
5544impl DocumentDiagnosticReportPartialResult {
5545 #[must_use]
5546 pub const fn new(related_documents: HashMap<Uri, RelatedDocument>) -> Self {
5547 Self { related_documents }
5548 }
5549}
5550
5551#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5555#[serde(rename_all = "camelCase")]
5556pub struct DiagnosticOptions {
5557 #[serde(skip_serializing_if = "Option::is_none")]
5560 pub identifier: Option<String>,
5561 pub inter_file_dependencies: bool,
5566 pub workspace_diagnostics: bool,
5568 #[serde(flatten)]
5569 pub work_done_progress_options: WorkDoneProgressOptions,
5570}
5571impl DiagnosticOptions {
5572 #[must_use]
5573 pub const fn new(
5574 identifier: Option<String>,
5575 inter_file_dependencies: bool,
5576 workspace_diagnostics: bool,
5577 work_done_progress_options: WorkDoneProgressOptions,
5578 ) -> Self {
5579 Self {
5580 identifier,
5581 inter_file_dependencies,
5582 workspace_diagnostics,
5583 work_done_progress_options,
5584 }
5585 }
5586}
5587
5588#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5592#[serde(rename_all = "camelCase")]
5593pub struct PreviousResultId {
5594 pub uri: Uri,
5597 pub value: String,
5599}
5600impl PreviousResultId {
5601 #[must_use]
5602 pub const fn new(uri: Uri, value: String) -> Self {
5603 Self { uri, value }
5604 }
5605}
5606
5607#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5611#[serde(rename_all = "camelCase")]
5612pub struct NotebookDocument {
5613 pub uri: Uri,
5615 pub notebook_type: String,
5617 pub version: i32,
5620 #[serde(skip_serializing_if = "Option::is_none")]
5625 pub metadata: Option<LspObject>,
5626 pub cells: Vec<NotebookCell>,
5628}
5629impl NotebookDocument {
5630 #[must_use]
5631 pub const fn new(
5632 uri: Uri,
5633 notebook_type: String,
5634 version: i32,
5635 metadata: Option<LspObject>,
5636 cells: Vec<NotebookCell>,
5637 ) -> Self {
5638 Self {
5639 uri,
5640 notebook_type,
5641 version,
5642 metadata,
5643 cells,
5644 }
5645 }
5646}
5647
5648#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5651#[serde(rename_all = "camelCase")]
5652pub struct TextDocumentItem {
5653 pub uri: Uri,
5655 pub language_id: LanguageKind,
5657 pub version: i32,
5660 pub text: String,
5662}
5663impl TextDocumentItem {
5664 #[must_use]
5665 pub const fn new(
5666 uri: Uri,
5667 language_id: LanguageKind,
5668 version: i32,
5669 text: String,
5670 ) -> Self {
5671 Self {
5672 uri,
5673 language_id,
5674 version,
5675 text,
5676 }
5677 }
5678}
5679
5680#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5694#[serde(rename_all = "camelCase")]
5695pub struct NotebookDocumentSyncOptions {
5696 pub notebook_selector: Vec<NotebookSelector>,
5698 #[serde(skip_serializing_if = "Option::is_none")]
5701 pub save: Option<bool>,
5702}
5703impl NotebookDocumentSyncOptions {
5704 #[must_use]
5705 pub const fn new(
5706 notebook_selector: Vec<NotebookSelector>,
5707 save: Option<bool>,
5708 ) -> Self {
5709 Self { notebook_selector, save }
5710 }
5711}
5712
5713#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5717#[serde(rename_all = "camelCase")]
5718pub struct VersionedNotebookDocumentIdentifier {
5719 pub version: i32,
5721 pub uri: Uri,
5723}
5724impl VersionedNotebookDocumentIdentifier {
5725 #[must_use]
5726 pub const fn new(version: i32, uri: Uri) -> Self {
5727 Self { version, uri }
5728 }
5729}
5730
5731#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5735#[serde(rename_all = "camelCase")]
5736pub struct NotebookDocumentChangeEvent {
5737 #[serde(skip_serializing_if = "Option::is_none")]
5741 pub metadata: Option<LspObject>,
5742 #[serde(skip_serializing_if = "Option::is_none")]
5744 pub cells: Option<NotebookDocumentCellChanges>,
5745}
5746impl NotebookDocumentChangeEvent {
5747 #[must_use]
5748 pub const fn new(
5749 metadata: Option<LspObject>,
5750 cells: Option<NotebookDocumentCellChanges>,
5751 ) -> Self {
5752 Self { metadata, cells }
5753 }
5754}
5755
5756#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5760#[serde(rename_all = "camelCase")]
5761pub struct NotebookDocumentIdentifier {
5762 pub uri: Uri,
5764}
5765impl NotebookDocumentIdentifier {
5766 #[must_use]
5767 pub const fn new(uri: Uri) -> Self {
5768 Self { uri }
5769 }
5770}
5771
5772#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
5776#[serde(rename_all = "camelCase")]
5777pub struct InlineCompletionContext {
5778 pub trigger_kind: InlineCompletionTriggerKind,
5780 #[serde(skip_serializing_if = "Option::is_none")]
5782 pub selected_completion_info: Option<SelectedCompletionInfo>,
5783}
5784impl InlineCompletionContext {
5785 #[must_use]
5786 pub const fn new(
5787 trigger_kind: InlineCompletionTriggerKind,
5788 selected_completion_info: Option<SelectedCompletionInfo>,
5789 ) -> Self {
5790 Self {
5791 trigger_kind,
5792 selected_completion_info,
5793 }
5794 }
5795}
5796
5797#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5807#[serde(rename_all = "camelCase")]
5808#[serde(try_from = "ShadowStringValue", into = "ShadowStringValue")]
5809pub struct StringValue {
5810 pub value: String,
5812}
5813#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5814#[serde(rename_all = "camelCase")]
5815struct ShadowStringValue {
5816 pub value: String,
5818 pub kind: String,
5819}
5820impl TryFrom<ShadowStringValue> for StringValue {
5821 type Error = String;
5822 fn try_from(shadow: ShadowStringValue) -> Result<Self, Self::Error> {
5823 if shadow.kind != "snippet" {
5824 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
5825 }
5826 Ok(Self { value: shadow.value })
5827 }
5828}
5829impl From<StringValue> for ShadowStringValue {
5830 fn from(original: StringValue) -> Self {
5831 Self {
5832 value: original.value,
5833 kind: "snippet".to_string(),
5834 }
5835 }
5836}
5837impl StringValue {
5838 #[must_use]
5839 pub const fn new(value: String) -> Self {
5840 Self { value }
5841 }
5842}
5843
5844#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
5848#[serde(rename_all = "camelCase")]
5849pub struct InlineCompletionOptions {
5850 #[serde(flatten)]
5851 pub work_done_progress_options: WorkDoneProgressOptions,
5852}
5853impl InlineCompletionOptions {
5854 #[must_use]
5855 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
5856 Self { work_done_progress_options }
5857 }
5858}
5859
5860#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5864#[serde(rename_all = "camelCase")]
5865pub struct TextDocumentContentOptions {
5866 pub schemes: Vec<String>,
5868}
5869impl TextDocumentContentOptions {
5870 #[must_use]
5871 pub const fn new(schemes: Vec<String>) -> Self {
5872 Self { schemes }
5873 }
5874}
5875
5876#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5878#[serde(rename_all = "camelCase")]
5879pub struct Registration {
5880 pub id: String,
5883 pub method: String,
5885 #[serde(skip_serializing_if = "Option::is_none")]
5887 pub register_options: Option<LspAny>,
5888}
5889impl Registration {
5890 #[must_use]
5891 pub const fn new(
5892 id: String,
5893 method: String,
5894 register_options: Option<LspAny>,
5895 ) -> Self {
5896 Self {
5897 id,
5898 method,
5899 register_options,
5900 }
5901 }
5902}
5903
5904#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5906#[serde(rename_all = "camelCase")]
5907pub struct Unregistration {
5908 pub id: String,
5911 pub method: String,
5913}
5914impl Unregistration {
5915 #[must_use]
5916 pub const fn new(id: String, method: String) -> Self {
5917 Self { id, method }
5918 }
5919}
5920
5921#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5922#[serde(rename_all = "camelCase")]
5923pub struct WorkspaceFoldersInitializeParams {
5924 #[serde(default, deserialize_with = "deserialize_some")]
5932 #[serde(skip_serializing_if = "Option::is_none")]
5933 pub workspace_folders: Option<WorkspaceFolders>,
5934}
5935impl WorkspaceFoldersInitializeParams {
5936 #[must_use]
5937 pub const fn new(workspace_folders: Option<WorkspaceFolders>) -> Self {
5938 Self { workspace_folders }
5939 }
5940}
5941
5942#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
5945#[serde(rename_all = "camelCase")]
5946pub struct ServerCapabilities {
5947 #[serde(skip_serializing_if = "Option::is_none")]
5957 pub position_encoding: Option<PositionEncodingKind>,
5958 #[serde(skip_serializing_if = "Option::is_none")]
5962 pub text_document_sync: Option<TextDocumentSync>,
5963 #[serde(skip_serializing_if = "Option::is_none")]
5967 pub notebook_document_sync: Option<NotebookDocumentSync>,
5968 #[serde(skip_serializing_if = "Option::is_none")]
5970 pub completion_provider: Option<CompletionOptions>,
5971 #[serde(skip_serializing_if = "Option::is_none")]
5973 pub hover_provider: Option<HoverProvider>,
5974 #[serde(skip_serializing_if = "Option::is_none")]
5976 pub signature_help_provider: Option<SignatureHelpOptions>,
5977 #[serde(skip_serializing_if = "Option::is_none")]
5979 pub declaration_provider: Option<DeclarationProvider>,
5980 #[serde(skip_serializing_if = "Option::is_none")]
5982 pub definition_provider: Option<DefinitionProvider>,
5983 #[serde(skip_serializing_if = "Option::is_none")]
5985 pub type_definition_provider: Option<TypeDefinitionProvider>,
5986 #[serde(skip_serializing_if = "Option::is_none")]
5988 pub implementation_provider: Option<ImplementationProvider>,
5989 #[serde(skip_serializing_if = "Option::is_none")]
5991 pub references_provider: Option<ReferencesProvider>,
5992 #[serde(skip_serializing_if = "Option::is_none")]
5994 pub document_highlight_provider: Option<DocumentHighlightProvider>,
5995 #[serde(skip_serializing_if = "Option::is_none")]
5997 pub document_symbol_provider: Option<DocumentSymbolProvider>,
5998 #[serde(skip_serializing_if = "Option::is_none")]
6002 pub code_action_provider: Option<CodeActionProvider>,
6003 #[serde(skip_serializing_if = "Option::is_none")]
6005 pub code_lens_provider: Option<CodeLensOptions>,
6006 #[serde(skip_serializing_if = "Option::is_none")]
6008 pub document_link_provider: Option<DocumentLinkOptions>,
6009 #[serde(skip_serializing_if = "Option::is_none")]
6011 pub color_provider: Option<ColorProvider>,
6012 #[serde(skip_serializing_if = "Option::is_none")]
6014 pub workspace_symbol_provider: Option<WorkspaceSymbolProvider>,
6015 #[serde(skip_serializing_if = "Option::is_none")]
6017 pub document_formatting_provider: Option<DocumentFormattingProvider>,
6018 #[serde(skip_serializing_if = "Option::is_none")]
6020 pub document_range_formatting_provider: Option<DocumentRangeFormattingProvider>,
6021 #[serde(skip_serializing_if = "Option::is_none")]
6023 pub document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
6024 #[serde(skip_serializing_if = "Option::is_none")]
6028 pub rename_provider: Option<RenameProvider>,
6029 #[serde(skip_serializing_if = "Option::is_none")]
6031 pub folding_range_provider: Option<FoldingRangeProvider>,
6032 #[serde(skip_serializing_if = "Option::is_none")]
6034 pub selection_range_provider: Option<SelectionRangeProvider>,
6035 #[serde(skip_serializing_if = "Option::is_none")]
6037 pub execute_command_provider: Option<ExecuteCommandOptions>,
6038 #[serde(skip_serializing_if = "Option::is_none")]
6042 pub call_hierarchy_provider: Option<CallHierarchyProvider>,
6043 #[serde(skip_serializing_if = "Option::is_none")]
6047 pub linked_editing_range_provider: Option<LinkedEditingRangeProvider>,
6048 #[serde(skip_serializing_if = "Option::is_none")]
6052 pub semantic_tokens_provider: Option<SemanticTokensProvider>,
6053 #[serde(skip_serializing_if = "Option::is_none")]
6057 pub moniker_provider: Option<MonikerProvider>,
6058 #[serde(skip_serializing_if = "Option::is_none")]
6062 pub type_hierarchy_provider: Option<TypeHierarchyProvider>,
6063 #[serde(skip_serializing_if = "Option::is_none")]
6067 pub inline_value_provider: Option<InlineValueProvider>,
6068 #[serde(skip_serializing_if = "Option::is_none")]
6072 pub inlay_hint_provider: Option<InlayHintProvider>,
6073 #[serde(skip_serializing_if = "Option::is_none")]
6077 pub diagnostic_provider: Option<DiagnosticProvider>,
6078 #[serde(skip_serializing_if = "Option::is_none")]
6082 pub inline_completion_provider: Option<InlineCompletionProvider>,
6083 #[serde(skip_serializing_if = "Option::is_none")]
6085 pub workspace: Option<WorkspaceOptions>,
6086 #[serde(skip_serializing_if = "Option::is_none")]
6088 pub experimental: Option<LspAny>,
6089}
6090impl ServerCapabilities {
6091 #[must_use]
6092 pub const fn new(
6093 position_encoding: Option<PositionEncodingKind>,
6094 text_document_sync: Option<TextDocumentSync>,
6095 notebook_document_sync: Option<NotebookDocumentSync>,
6096 completion_provider: Option<CompletionOptions>,
6097 hover_provider: Option<HoverProvider>,
6098 signature_help_provider: Option<SignatureHelpOptions>,
6099 declaration_provider: Option<DeclarationProvider>,
6100 definition_provider: Option<DefinitionProvider>,
6101 type_definition_provider: Option<TypeDefinitionProvider>,
6102 implementation_provider: Option<ImplementationProvider>,
6103 references_provider: Option<ReferencesProvider>,
6104 document_highlight_provider: Option<DocumentHighlightProvider>,
6105 document_symbol_provider: Option<DocumentSymbolProvider>,
6106 code_action_provider: Option<CodeActionProvider>,
6107 code_lens_provider: Option<CodeLensOptions>,
6108 document_link_provider: Option<DocumentLinkOptions>,
6109 color_provider: Option<ColorProvider>,
6110 workspace_symbol_provider: Option<WorkspaceSymbolProvider>,
6111 document_formatting_provider: Option<DocumentFormattingProvider>,
6112 document_range_formatting_provider: Option<DocumentRangeFormattingProvider>,
6113 document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
6114 rename_provider: Option<RenameProvider>,
6115 folding_range_provider: Option<FoldingRangeProvider>,
6116 selection_range_provider: Option<SelectionRangeProvider>,
6117 execute_command_provider: Option<ExecuteCommandOptions>,
6118 call_hierarchy_provider: Option<CallHierarchyProvider>,
6119 linked_editing_range_provider: Option<LinkedEditingRangeProvider>,
6120 semantic_tokens_provider: Option<SemanticTokensProvider>,
6121 moniker_provider: Option<MonikerProvider>,
6122 type_hierarchy_provider: Option<TypeHierarchyProvider>,
6123 inline_value_provider: Option<InlineValueProvider>,
6124 inlay_hint_provider: Option<InlayHintProvider>,
6125 diagnostic_provider: Option<DiagnosticProvider>,
6126 inline_completion_provider: Option<InlineCompletionProvider>,
6127 workspace: Option<WorkspaceOptions>,
6128 experimental: Option<LspAny>,
6129 ) -> Self {
6130 Self {
6131 position_encoding,
6132 text_document_sync,
6133 notebook_document_sync,
6134 completion_provider,
6135 hover_provider,
6136 signature_help_provider,
6137 declaration_provider,
6138 definition_provider,
6139 type_definition_provider,
6140 implementation_provider,
6141 references_provider,
6142 document_highlight_provider,
6143 document_symbol_provider,
6144 code_action_provider,
6145 code_lens_provider,
6146 document_link_provider,
6147 color_provider,
6148 workspace_symbol_provider,
6149 document_formatting_provider,
6150 document_range_formatting_provider,
6151 document_on_type_formatting_provider,
6152 rename_provider,
6153 folding_range_provider,
6154 selection_range_provider,
6155 execute_command_provider,
6156 call_hierarchy_provider,
6157 linked_editing_range_provider,
6158 semantic_tokens_provider,
6159 moniker_provider,
6160 type_hierarchy_provider,
6161 inline_value_provider,
6162 inlay_hint_provider,
6163 diagnostic_provider,
6164 inline_completion_provider,
6165 workspace,
6166 experimental,
6167 }
6168 }
6169}
6170
6171#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6176#[serde(rename_all = "camelCase")]
6177pub struct ServerInfo {
6178 pub name: String,
6180 #[serde(skip_serializing_if = "Option::is_none")]
6182 pub version: Option<String>,
6183}
6184impl ServerInfo {
6185 #[must_use]
6186 pub const fn new(name: String, version: Option<String>) -> Self {
6187 Self { name, version }
6188 }
6189}
6190
6191#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6193#[serde(rename_all = "camelCase")]
6194pub struct VersionedTextDocumentIdentifier {
6195 pub version: i32,
6197 #[serde(flatten)]
6198 pub text_document_identifier: TextDocumentIdentifier,
6199}
6200impl VersionedTextDocumentIdentifier {
6201 #[must_use]
6202 pub const fn new(
6203 version: i32,
6204 text_document_identifier: TextDocumentIdentifier,
6205 ) -> Self {
6206 Self {
6207 version,
6208 text_document_identifier,
6209 }
6210 }
6211}
6212
6213#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6215#[serde(rename_all = "camelCase")]
6216pub struct SaveOptions {
6217 #[serde(skip_serializing_if = "Option::is_none")]
6219 pub include_text: Option<bool>,
6220}
6221impl SaveOptions {
6222 #[must_use]
6223 pub const fn new(include_text: Option<bool>) -> Self {
6224 Self { include_text }
6225 }
6226}
6227
6228#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6230#[serde(rename_all = "camelCase")]
6231pub struct FileEvent {
6232 pub uri: Uri,
6234 #[serde(rename = "type")]
6236 pub kind: FileChangeType,
6237}
6238impl FileEvent {
6239 #[must_use]
6240 pub const fn new(uri: Uri, kind: FileChangeType) -> Self {
6241 Self { uri, kind }
6242 }
6243}
6244
6245#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6246#[serde(rename_all = "camelCase")]
6247pub struct FileSystemWatcher {
6248 pub glob_pattern: GlobPattern,
6252 #[serde(skip_serializing_if = "Option::is_none")]
6256 pub kind: Option<WatchKind>,
6257}
6258impl FileSystemWatcher {
6259 #[must_use]
6260 pub const fn new(glob_pattern: GlobPattern, kind: Option<WatchKind>) -> Self {
6261 Self { glob_pattern, kind }
6262 }
6263}
6264
6265#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6268#[serde(rename_all = "camelCase")]
6269pub struct Diagnostic {
6270 pub range: Range,
6272 #[serde(skip_serializing_if = "Option::is_none")]
6276 pub severity: Option<DiagnosticSeverity>,
6277 #[serde(skip_serializing_if = "Option::is_none")]
6279 pub code: Option<Code>,
6280 #[serde(skip_serializing_if = "Option::is_none")]
6285 pub code_description: Option<CodeDescription>,
6286 #[serde(skip_serializing_if = "Option::is_none")]
6290 pub source: Option<String>,
6291 pub message: Message,
6296 #[serde(skip_serializing_if = "Option::is_none")]
6300 pub tags: Option<Vec<DiagnosticTag>>,
6301 #[serde(skip_serializing_if = "Option::is_none")]
6304 pub related_information: Option<Vec<DiagnosticRelatedInformation>>,
6305 #[serde(skip_serializing_if = "Option::is_none")]
6310 pub data: Option<LspAny>,
6311}
6312impl Diagnostic {
6313 #[must_use]
6314 pub const fn new(
6315 range: Range,
6316 severity: Option<DiagnosticSeverity>,
6317 code: Option<Code>,
6318 code_description: Option<CodeDescription>,
6319 source: Option<String>,
6320 message: Message,
6321 tags: Option<Vec<DiagnosticTag>>,
6322 related_information: Option<Vec<DiagnosticRelatedInformation>>,
6323 data: Option<LspAny>,
6324 ) -> Self {
6325 Self {
6326 range,
6327 severity,
6328 code,
6329 code_description,
6330 source,
6331 message,
6332 tags,
6333 related_information,
6334 data,
6335 }
6336 }
6337}
6338
6339#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6341#[serde(rename_all = "camelCase")]
6342pub struct CompletionContext {
6343 pub trigger_kind: CompletionTriggerKind,
6345 #[serde(skip_serializing_if = "Option::is_none")]
6348 pub trigger_character: Option<String>,
6349}
6350impl CompletionContext {
6351 #[must_use]
6352 pub const fn new(
6353 trigger_kind: CompletionTriggerKind,
6354 trigger_character: Option<String>,
6355 ) -> Self {
6356 Self {
6357 trigger_kind,
6358 trigger_character,
6359 }
6360 }
6361}
6362
6363#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6367#[serde(rename_all = "camelCase")]
6368pub struct CompletionItemLabelDetails {
6369 #[serde(skip_serializing_if = "Option::is_none")]
6372 pub detail: Option<String>,
6373 #[serde(skip_serializing_if = "Option::is_none")]
6376 pub description: Option<String>,
6377}
6378impl CompletionItemLabelDetails {
6379 #[must_use]
6380 pub const fn new(detail: Option<String>, description: Option<String>) -> Self {
6381 Self { detail, description }
6382 }
6383}
6384
6385#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6389#[serde(rename_all = "camelCase")]
6390pub struct InsertReplaceEdit {
6391 pub new_text: String,
6393 pub insert: Range,
6395 pub replace: Range,
6397}
6398impl InsertReplaceEdit {
6399 #[must_use]
6400 pub const fn new(new_text: String, insert: Range, replace: Range) -> Self {
6401 Self { new_text, insert, replace }
6402 }
6403}
6404
6405#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6421#[serde(rename_all = "camelCase")]
6422pub struct CompletionItemDefaults {
6423 #[serde(skip_serializing_if = "Option::is_none")]
6427 pub commit_characters: Option<Vec<String>>,
6428 #[serde(skip_serializing_if = "Option::is_none")]
6432 pub edit_range: Option<EditRange>,
6433 #[serde(skip_serializing_if = "Option::is_none")]
6437 pub insert_text_format: Option<InsertTextFormat>,
6438 #[serde(skip_serializing_if = "Option::is_none")]
6442 pub insert_text_mode: Option<InsertTextMode>,
6443 #[serde(skip_serializing_if = "Option::is_none")]
6447 pub data: Option<LspAny>,
6448}
6449impl CompletionItemDefaults {
6450 #[must_use]
6451 pub const fn new(
6452 commit_characters: Option<Vec<String>>,
6453 edit_range: Option<EditRange>,
6454 insert_text_format: Option<InsertTextFormat>,
6455 insert_text_mode: Option<InsertTextMode>,
6456 data: Option<LspAny>,
6457 ) -> Self {
6458 Self {
6459 commit_characters,
6460 edit_range,
6461 insert_text_format,
6462 insert_text_mode,
6463 data,
6464 }
6465 }
6466}
6467
6468#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6486#[serde(rename_all = "camelCase")]
6487pub struct CompletionItemApplyKinds {
6488 #[serde(skip_serializing_if = "Option::is_none")]
6504 pub commit_characters: Option<ApplyKind>,
6505 #[serde(skip_serializing_if = "Option::is_none")]
6528 pub data: Option<ApplyKind>,
6529}
6530impl CompletionItemApplyKinds {
6531 #[must_use]
6532 pub const fn new(
6533 commit_characters: Option<ApplyKind>,
6534 data: Option<ApplyKind>,
6535 ) -> Self {
6536 Self { commit_characters, data }
6537 }
6538}
6539
6540#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6542#[serde(rename_all = "camelCase")]
6543pub struct CompletionOptions {
6544 #[serde(skip_serializing_if = "Option::is_none")]
6553 pub trigger_characters: Option<Vec<String>>,
6554 #[serde(skip_serializing_if = "Option::is_none")]
6563 pub all_commit_characters: Option<Vec<String>>,
6564 #[serde(skip_serializing_if = "Option::is_none")]
6567 pub resolve_provider: Option<bool>,
6568 #[serde(skip_serializing_if = "Option::is_none")]
6573 pub completion_item: Option<ServerCompletionItemOptions>,
6574 #[serde(flatten)]
6575 pub work_done_progress_options: WorkDoneProgressOptions,
6576}
6577impl CompletionOptions {
6578 #[must_use]
6579 pub const fn new(
6580 trigger_characters: Option<Vec<String>>,
6581 all_commit_characters: Option<Vec<String>>,
6582 resolve_provider: Option<bool>,
6583 completion_item: Option<ServerCompletionItemOptions>,
6584 work_done_progress_options: WorkDoneProgressOptions,
6585 ) -> Self {
6586 Self {
6587 trigger_characters,
6588 all_commit_characters,
6589 resolve_provider,
6590 completion_item,
6591 work_done_progress_options,
6592 }
6593 }
6594}
6595
6596#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6598#[serde(rename_all = "camelCase")]
6599pub struct HoverOptions {
6600 #[serde(flatten)]
6601 pub work_done_progress_options: WorkDoneProgressOptions,
6602}
6603impl HoverOptions {
6604 #[must_use]
6605 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
6606 Self { work_done_progress_options }
6607 }
6608}
6609
6610#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6614#[serde(rename_all = "camelCase")]
6615pub struct SignatureHelpContext {
6616 pub trigger_kind: SignatureHelpTriggerKind,
6618 #[serde(skip_serializing_if = "Option::is_none")]
6622 pub trigger_character: Option<String>,
6623 pub is_retrigger: bool,
6628 #[serde(skip_serializing_if = "Option::is_none")]
6633 pub active_signature_help: Option<SignatureHelp>,
6634}
6635impl SignatureHelpContext {
6636 #[must_use]
6637 pub const fn new(
6638 trigger_kind: SignatureHelpTriggerKind,
6639 trigger_character: Option<String>,
6640 is_retrigger: bool,
6641 active_signature_help: Option<SignatureHelp>,
6642 ) -> Self {
6643 Self {
6644 trigger_kind,
6645 trigger_character,
6646 is_retrigger,
6647 active_signature_help,
6648 }
6649 }
6650}
6651
6652#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6656#[serde(rename_all = "camelCase")]
6657pub struct SignatureInformation {
6658 pub label: String,
6661 #[serde(skip_serializing_if = "Option::is_none")]
6664 pub documentation: Option<Documentation>,
6665 #[serde(skip_serializing_if = "Option::is_none")]
6667 pub parameters: Option<Vec<ParameterInformation>>,
6668 #[serde(default, deserialize_with = "deserialize_some")]
6680 #[serde(skip_serializing_if = "Option::is_none")]
6681 pub active_parameter: Option<ActiveParameter>,
6682}
6683impl SignatureInformation {
6684 #[must_use]
6685 pub const fn new(
6686 label: String,
6687 documentation: Option<Documentation>,
6688 parameters: Option<Vec<ParameterInformation>>,
6689 active_parameter: Option<ActiveParameter>,
6690 ) -> Self {
6691 Self {
6692 label,
6693 documentation,
6694 parameters,
6695 active_parameter,
6696 }
6697 }
6698}
6699
6700#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6702#[serde(rename_all = "camelCase")]
6703pub struct SignatureHelpOptions {
6704 #[serde(skip_serializing_if = "Option::is_none")]
6706 pub trigger_characters: Option<Vec<String>>,
6707 #[serde(skip_serializing_if = "Option::is_none")]
6714 pub retrigger_characters: Option<Vec<String>>,
6715 #[serde(flatten)]
6716 pub work_done_progress_options: WorkDoneProgressOptions,
6717}
6718impl SignatureHelpOptions {
6719 #[must_use]
6720 pub const fn new(
6721 trigger_characters: Option<Vec<String>>,
6722 retrigger_characters: Option<Vec<String>>,
6723 work_done_progress_options: WorkDoneProgressOptions,
6724 ) -> Self {
6725 Self {
6726 trigger_characters,
6727 retrigger_characters,
6728 work_done_progress_options,
6729 }
6730 }
6731}
6732
6733#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6735#[serde(rename_all = "camelCase")]
6736pub struct DefinitionOptions {
6737 #[serde(flatten)]
6738 pub work_done_progress_options: WorkDoneProgressOptions,
6739}
6740impl DefinitionOptions {
6741 #[must_use]
6742 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
6743 Self { work_done_progress_options }
6744 }
6745}
6746
6747#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6750#[serde(rename_all = "camelCase")]
6751pub struct ReferenceContext {
6752 pub include_declaration: bool,
6754}
6755impl ReferenceContext {
6756 #[must_use]
6757 pub const fn new(include_declaration: bool) -> Self {
6758 Self { include_declaration }
6759 }
6760}
6761
6762#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6764#[serde(rename_all = "camelCase")]
6765pub struct ReferenceOptions {
6766 #[serde(flatten)]
6767 pub work_done_progress_options: WorkDoneProgressOptions,
6768}
6769impl ReferenceOptions {
6770 #[must_use]
6771 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
6772 Self { work_done_progress_options }
6773 }
6774}
6775
6776#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6778#[serde(rename_all = "camelCase")]
6779pub struct DocumentHighlightOptions {
6780 #[serde(flatten)]
6781 pub work_done_progress_options: WorkDoneProgressOptions,
6782}
6783impl DocumentHighlightOptions {
6784 #[must_use]
6785 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
6786 Self { work_done_progress_options }
6787 }
6788}
6789
6790#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6792#[serde(rename_all = "camelCase")]
6793pub struct BaseSymbolInformation {
6794 pub name: String,
6796 pub kind: SymbolKind,
6798 #[serde(skip_serializing_if = "Option::is_none")]
6802 pub tags: Option<Vec<SymbolTag>>,
6803 #[serde(skip_serializing_if = "Option::is_none")]
6808 pub container_name: Option<String>,
6809}
6810impl BaseSymbolInformation {
6811 #[must_use]
6812 pub const fn new(
6813 name: String,
6814 kind: SymbolKind,
6815 tags: Option<Vec<SymbolTag>>,
6816 container_name: Option<String>,
6817 ) -> Self {
6818 Self {
6819 name,
6820 kind,
6821 tags,
6822 container_name,
6823 }
6824 }
6825}
6826
6827#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6829#[serde(rename_all = "camelCase")]
6830pub struct DocumentSymbolOptions {
6831 #[serde(skip_serializing_if = "Option::is_none")]
6836 pub label: Option<String>,
6837 #[serde(flatten)]
6838 pub work_done_progress_options: WorkDoneProgressOptions,
6839}
6840impl DocumentSymbolOptions {
6841 #[must_use]
6842 pub const fn new(
6843 label: Option<String>,
6844 work_done_progress_options: WorkDoneProgressOptions,
6845 ) -> Self {
6846 Self {
6847 label,
6848 work_done_progress_options,
6849 }
6850 }
6851}
6852
6853#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6856#[serde(rename_all = "camelCase")]
6857pub struct CodeActionContext {
6858 pub diagnostics: Vec<Diagnostic>,
6864 #[serde(skip_serializing_if = "Option::is_none")]
6869 pub only: Option<Vec<CodeActionKind>>,
6870 #[serde(skip_serializing_if = "Option::is_none")]
6874 pub trigger_kind: Option<CodeActionTriggerKind>,
6875}
6876impl CodeActionContext {
6877 #[must_use]
6878 pub const fn new(
6879 diagnostics: Vec<Diagnostic>,
6880 only: Option<Vec<CodeActionKind>>,
6881 trigger_kind: Option<CodeActionTriggerKind>,
6882 ) -> Self {
6883 Self {
6884 diagnostics,
6885 only,
6886 trigger_kind,
6887 }
6888 }
6889}
6890
6891#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6895#[serde(rename_all = "camelCase")]
6896pub struct CodeActionDisabled {
6897 pub reason: String,
6901}
6902impl CodeActionDisabled {
6903 #[must_use]
6904 pub const fn new(reason: String) -> Self {
6905 Self { reason }
6906 }
6907}
6908
6909#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
6911#[serde(rename_all = "camelCase")]
6912pub struct CodeActionOptions {
6913 #[serde(skip_serializing_if = "Option::is_none")]
6918 pub code_action_kinds: Option<Vec<CodeActionKind>>,
6919 #[serde(skip_serializing_if = "Option::is_none")]
6934 pub documentation: Option<Vec<CodeActionKindDocumentation>>,
6935 #[serde(skip_serializing_if = "Option::is_none")]
6940 pub resolve_provider: Option<bool>,
6941 #[serde(flatten)]
6942 pub work_done_progress_options: WorkDoneProgressOptions,
6943}
6944impl CodeActionOptions {
6945 #[must_use]
6946 pub const fn new(
6947 code_action_kinds: Option<Vec<CodeActionKind>>,
6948 documentation: Option<Vec<CodeActionKindDocumentation>>,
6949 resolve_provider: Option<bool>,
6950 work_done_progress_options: WorkDoneProgressOptions,
6951 ) -> Self {
6952 Self {
6953 code_action_kinds,
6954 documentation,
6955 resolve_provider,
6956 work_done_progress_options,
6957 }
6958 }
6959}
6960
6961#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
6965#[serde(rename_all = "camelCase")]
6966pub struct LocationUriOnly {
6967 pub uri: Uri,
6968}
6969impl LocationUriOnly {
6970 #[must_use]
6971 pub const fn new(uri: Uri) -> Self {
6972 Self { uri }
6973 }
6974}
6975
6976#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
6978#[serde(rename_all = "camelCase")]
6979pub struct WorkspaceSymbolOptions {
6980 #[serde(skip_serializing_if = "Option::is_none")]
6985 pub resolve_provider: Option<bool>,
6986 #[serde(flatten)]
6987 pub work_done_progress_options: WorkDoneProgressOptions,
6988}
6989impl WorkspaceSymbolOptions {
6990 #[must_use]
6991 pub const fn new(
6992 resolve_provider: Option<bool>,
6993 work_done_progress_options: WorkDoneProgressOptions,
6994 ) -> Self {
6995 Self {
6996 resolve_provider,
6997 work_done_progress_options,
6998 }
6999 }
7000}
7001
7002#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7004#[serde(rename_all = "camelCase")]
7005pub struct CodeLensOptions {
7006 #[serde(skip_serializing_if = "Option::is_none")]
7008 pub resolve_provider: Option<bool>,
7009 #[serde(flatten)]
7010 pub work_done_progress_options: WorkDoneProgressOptions,
7011}
7012impl CodeLensOptions {
7013 #[must_use]
7014 pub const fn new(
7015 resolve_provider: Option<bool>,
7016 work_done_progress_options: WorkDoneProgressOptions,
7017 ) -> Self {
7018 Self {
7019 resolve_provider,
7020 work_done_progress_options,
7021 }
7022 }
7023}
7024
7025#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7027#[serde(rename_all = "camelCase")]
7028pub struct DocumentLinkOptions {
7029 #[serde(skip_serializing_if = "Option::is_none")]
7031 pub resolve_provider: Option<bool>,
7032 #[serde(flatten)]
7033 pub work_done_progress_options: WorkDoneProgressOptions,
7034}
7035impl DocumentLinkOptions {
7036 #[must_use]
7037 pub const fn new(
7038 resolve_provider: Option<bool>,
7039 work_done_progress_options: WorkDoneProgressOptions,
7040 ) -> Self {
7041 Self {
7042 resolve_provider,
7043 work_done_progress_options,
7044 }
7045 }
7046}
7047
7048#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7050#[serde(rename_all = "camelCase")]
7051pub struct FormattingOptions {
7052 pub tab_size: u32,
7054 pub insert_spaces: bool,
7056 #[serde(skip_serializing_if = "Option::is_none")]
7060 pub trim_trailing_whitespace: Option<bool>,
7061 #[serde(skip_serializing_if = "Option::is_none")]
7065 pub insert_final_newline: Option<bool>,
7066 #[serde(skip_serializing_if = "Option::is_none")]
7070 pub trim_final_newlines: Option<bool>,
7071}
7072impl FormattingOptions {
7073 #[must_use]
7074 pub const fn new(
7075 tab_size: u32,
7076 insert_spaces: bool,
7077 trim_trailing_whitespace: Option<bool>,
7078 insert_final_newline: Option<bool>,
7079 trim_final_newlines: Option<bool>,
7080 ) -> Self {
7081 Self {
7082 tab_size,
7083 insert_spaces,
7084 trim_trailing_whitespace,
7085 insert_final_newline,
7086 trim_final_newlines,
7087 }
7088 }
7089}
7090
7091#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7093#[serde(rename_all = "camelCase")]
7094pub struct DocumentFormattingOptions {
7095 #[serde(flatten)]
7096 pub work_done_progress_options: WorkDoneProgressOptions,
7097}
7098impl DocumentFormattingOptions {
7099 #[must_use]
7100 pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
7101 Self { work_done_progress_options }
7102 }
7103}
7104
7105#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7107#[serde(rename_all = "camelCase")]
7108pub struct DocumentRangeFormattingOptions {
7109 #[serde(skip_serializing_if = "Option::is_none")]
7113 pub ranges_support: Option<bool>,
7114 #[serde(flatten)]
7115 pub work_done_progress_options: WorkDoneProgressOptions,
7116}
7117impl DocumentRangeFormattingOptions {
7118 #[must_use]
7119 pub const fn new(
7120 ranges_support: Option<bool>,
7121 work_done_progress_options: WorkDoneProgressOptions,
7122 ) -> Self {
7123 Self {
7124 ranges_support,
7125 work_done_progress_options,
7126 }
7127 }
7128}
7129
7130#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7132#[serde(rename_all = "camelCase")]
7133pub struct DocumentOnTypeFormattingOptions {
7134 pub first_trigger_character: String,
7136 #[serde(skip_serializing_if = "Option::is_none")]
7138 pub more_trigger_character: Option<Vec<String>>,
7139}
7140impl DocumentOnTypeFormattingOptions {
7141 #[must_use]
7142 pub const fn new(
7143 first_trigger_character: String,
7144 more_trigger_character: Option<Vec<String>>,
7145 ) -> Self {
7146 Self {
7147 first_trigger_character,
7148 more_trigger_character,
7149 }
7150 }
7151}
7152
7153#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7155#[serde(rename_all = "camelCase")]
7156pub struct RenameOptions {
7157 #[serde(skip_serializing_if = "Option::is_none")]
7161 pub prepare_provider: Option<bool>,
7162 #[serde(flatten)]
7163 pub work_done_progress_options: WorkDoneProgressOptions,
7164}
7165impl RenameOptions {
7166 #[must_use]
7167 pub const fn new(
7168 prepare_provider: Option<bool>,
7169 work_done_progress_options: WorkDoneProgressOptions,
7170 ) -> Self {
7171 Self {
7172 prepare_provider,
7173 work_done_progress_options,
7174 }
7175 }
7176}
7177
7178#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7180#[serde(rename_all = "camelCase")]
7181pub struct PrepareRenamePlaceholder {
7182 pub range: Range,
7183 pub placeholder: String,
7184}
7185impl PrepareRenamePlaceholder {
7186 #[must_use]
7187 pub const fn new(range: Range, placeholder: String) -> Self {
7188 Self { range, placeholder }
7189 }
7190}
7191
7192#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7194#[serde(rename_all = "camelCase")]
7195pub struct PrepareRenameDefaultBehavior {
7196 pub default_behavior: bool,
7197}
7198impl PrepareRenameDefaultBehavior {
7199 #[must_use]
7200 pub const fn new(default_behavior: bool) -> Self {
7201 Self { default_behavior }
7202 }
7203}
7204
7205#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7207#[serde(rename_all = "camelCase")]
7208pub struct ExecuteCommandOptions {
7209 pub commands: Vec<String>,
7211 #[serde(flatten)]
7212 pub work_done_progress_options: WorkDoneProgressOptions,
7213}
7214impl ExecuteCommandOptions {
7215 #[must_use]
7216 pub const fn new(
7217 commands: Vec<String>,
7218 work_done_progress_options: WorkDoneProgressOptions,
7219 ) -> Self {
7220 Self {
7221 commands,
7222 work_done_progress_options,
7223 }
7224 }
7225}
7226
7227#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7231#[serde(rename_all = "camelCase")]
7232pub struct WorkspaceEditMetadata {
7233 #[serde(skip_serializing_if = "Option::is_none")]
7235 pub is_refactoring: Option<bool>,
7236}
7237impl WorkspaceEditMetadata {
7238 #[must_use]
7239 pub const fn new(is_refactoring: Option<bool>) -> Self {
7240 Self { is_refactoring }
7241 }
7242}
7243
7244#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7245#[serde(rename_all = "camelCase")]
7246pub struct WorkDoneProgressOptions {
7247 #[serde(skip_serializing_if = "Option::is_none")]
7248 pub work_done_progress: Option<bool>,
7249}
7250impl WorkDoneProgressOptions {
7251 #[must_use]
7252 pub const fn new(work_done_progress: Option<bool>) -> Self {
7253 Self { work_done_progress }
7254 }
7255}
7256
7257#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7259#[serde(rename_all = "camelCase")]
7260pub struct SemanticTokensLegend {
7261 pub token_types: Vec<String>,
7263 pub token_modifiers: Vec<String>,
7265}
7266impl SemanticTokensLegend {
7267 #[must_use]
7268 pub const fn new(token_types: Vec<String>, token_modifiers: Vec<String>) -> Self {
7269 Self {
7270 token_types,
7271 token_modifiers,
7272 }
7273 }
7274}
7275
7276#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7280#[serde(rename_all = "camelCase")]
7281pub struct SemanticTokensFullDelta {
7282 #[serde(skip_serializing_if = "Option::is_none")]
7284 pub delta: Option<bool>,
7285}
7286impl SemanticTokensFullDelta {
7287 #[must_use]
7288 pub const fn new(delta: Option<bool>) -> Self {
7289 Self { delta }
7290 }
7291}
7292
7293#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7295#[serde(rename_all = "camelCase")]
7296pub struct OptionalVersionedTextDocumentIdentifier {
7297 pub version: Option<i32>,
7303 #[serde(flatten)]
7304 pub text_document_identifier: TextDocumentIdentifier,
7305}
7306impl OptionalVersionedTextDocumentIdentifier {
7307 #[must_use]
7308 pub const fn new(
7309 version: Option<i32>,
7310 text_document_identifier: TextDocumentIdentifier,
7311 ) -> Self {
7312 Self {
7313 version,
7314 text_document_identifier,
7315 }
7316 }
7317}
7318
7319#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7323#[serde(rename_all = "camelCase")]
7324pub struct AnnotatedTextEdit {
7325 pub annotation_id: ChangeAnnotationIdentifier,
7327 #[serde(flatten)]
7328 pub text_edit: TextEdit,
7329}
7330impl AnnotatedTextEdit {
7331 #[must_use]
7332 pub const fn new(
7333 annotation_id: ChangeAnnotationIdentifier,
7334 text_edit: TextEdit,
7335 ) -> Self {
7336 Self { annotation_id, text_edit }
7337 }
7338}
7339
7340#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7344#[serde(rename_all = "camelCase")]
7345pub struct SnippetTextEdit {
7346 pub range: Range,
7348 pub snippet: StringValue,
7350 #[serde(skip_serializing_if = "Option::is_none")]
7352 pub annotation_id: Option<ChangeAnnotationIdentifier>,
7353}
7354impl SnippetTextEdit {
7355 #[must_use]
7356 pub const fn new(
7357 range: Range,
7358 snippet: StringValue,
7359 annotation_id: Option<ChangeAnnotationIdentifier>,
7360 ) -> Self {
7361 Self {
7362 range,
7363 snippet,
7364 annotation_id,
7365 }
7366 }
7367}
7368
7369#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7371#[serde(rename_all = "camelCase")]
7372pub struct ResourceOperation {
7373 pub kind: String,
7375 #[serde(skip_serializing_if = "Option::is_none")]
7379 pub annotation_id: Option<ChangeAnnotationIdentifier>,
7380}
7381impl ResourceOperation {
7382 #[must_use]
7383 pub const fn new(
7384 kind: String,
7385 annotation_id: Option<ChangeAnnotationIdentifier>,
7386 ) -> Self {
7387 Self { kind, annotation_id }
7388 }
7389}
7390
7391#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7393#[serde(rename_all = "camelCase")]
7394pub struct CreateFileOptions {
7395 #[serde(skip_serializing_if = "Option::is_none")]
7397 pub overwrite: Option<bool>,
7398 #[serde(skip_serializing_if = "Option::is_none")]
7400 pub ignore_if_exists: Option<bool>,
7401}
7402impl CreateFileOptions {
7403 #[must_use]
7404 pub const fn new(overwrite: Option<bool>, ignore_if_exists: Option<bool>) -> Self {
7405 Self {
7406 overwrite,
7407 ignore_if_exists,
7408 }
7409 }
7410}
7411
7412#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7414#[serde(rename_all = "camelCase")]
7415pub struct RenameFileOptions {
7416 #[serde(skip_serializing_if = "Option::is_none")]
7418 pub overwrite: Option<bool>,
7419 #[serde(skip_serializing_if = "Option::is_none")]
7421 pub ignore_if_exists: Option<bool>,
7422}
7423impl RenameFileOptions {
7424 #[must_use]
7425 pub const fn new(overwrite: Option<bool>, ignore_if_exists: Option<bool>) -> Self {
7426 Self {
7427 overwrite,
7428 ignore_if_exists,
7429 }
7430 }
7431}
7432
7433#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7435#[serde(rename_all = "camelCase")]
7436pub struct DeleteFileOptions {
7437 #[serde(skip_serializing_if = "Option::is_none")]
7439 pub recursive: Option<bool>,
7440 #[serde(skip_serializing_if = "Option::is_none")]
7442 pub ignore_if_not_exists: Option<bool>,
7443}
7444impl DeleteFileOptions {
7445 #[must_use]
7446 pub const fn new(
7447 recursive: Option<bool>,
7448 ignore_if_not_exists: Option<bool>,
7449 ) -> Self {
7450 Self {
7451 recursive,
7452 ignore_if_not_exists,
7453 }
7454 }
7455}
7456
7457#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7462#[serde(rename_all = "camelCase")]
7463pub struct FileOperationPattern {
7464 pub glob: String,
7472 #[serde(skip_serializing_if = "Option::is_none")]
7476 pub matches: Option<FileOperationPatternKind>,
7477 #[serde(skip_serializing_if = "Option::is_none")]
7479 pub options: Option<FileOperationPatternOptions>,
7480}
7481impl FileOperationPattern {
7482 #[must_use]
7483 pub const fn new(
7484 glob: String,
7485 matches: Option<FileOperationPatternKind>,
7486 options: Option<FileOperationPatternOptions>,
7487 ) -> Self {
7488 Self { glob, matches, options }
7489 }
7490}
7491
7492#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7496#[serde(rename_all = "camelCase")]
7497#[serde(
7498 try_from = "ShadowFullDocumentDiagnosticReport",
7499 into = "ShadowFullDocumentDiagnosticReport"
7500)]
7501pub struct FullDocumentDiagnosticReport {
7502 #[serde(skip_serializing_if = "Option::is_none")]
7506 pub result_id: Option<String>,
7507 pub items: Vec<Diagnostic>,
7509}
7510#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7511#[serde(rename_all = "camelCase")]
7512struct ShadowFullDocumentDiagnosticReport {
7513 #[serde(skip_serializing_if = "Option::is_none")]
7517 pub result_id: Option<String>,
7518 pub items: Vec<Diagnostic>,
7520 pub kind: String,
7521}
7522impl TryFrom<ShadowFullDocumentDiagnosticReport> for FullDocumentDiagnosticReport {
7523 type Error = String;
7524 fn try_from(
7525 shadow: ShadowFullDocumentDiagnosticReport,
7526 ) -> Result<Self, Self::Error> {
7527 if shadow.kind != "full" {
7528 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
7529 }
7530 Ok(Self {
7531 result_id: shadow.result_id,
7532 items: shadow.items,
7533 })
7534 }
7535}
7536impl From<FullDocumentDiagnosticReport> for ShadowFullDocumentDiagnosticReport {
7537 fn from(original: FullDocumentDiagnosticReport) -> Self {
7538 Self {
7539 result_id: original.result_id,
7540 items: original.items,
7541 kind: "full".to_string(),
7542 }
7543 }
7544}
7545impl FullDocumentDiagnosticReport {
7546 #[must_use]
7547 pub const fn new(result_id: Option<String>, items: Vec<Diagnostic>) -> Self {
7548 Self { result_id, items }
7549 }
7550}
7551
7552#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7557#[serde(rename_all = "camelCase")]
7558#[serde(
7559 try_from = "ShadowUnchangedDocumentDiagnosticReport",
7560 into = "ShadowUnchangedDocumentDiagnosticReport"
7561)]
7562pub struct UnchangedDocumentDiagnosticReport {
7563 pub result_id: String,
7566}
7567#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7568#[serde(rename_all = "camelCase")]
7569struct ShadowUnchangedDocumentDiagnosticReport {
7570 pub result_id: String,
7573 pub kind: String,
7574}
7575impl TryFrom<ShadowUnchangedDocumentDiagnosticReport>
7576for UnchangedDocumentDiagnosticReport {
7577 type Error = String;
7578 fn try_from(
7579 shadow: ShadowUnchangedDocumentDiagnosticReport,
7580 ) -> Result<Self, Self::Error> {
7581 if shadow.kind != "unchanged" {
7582 return Err(format!("Invalid value for prop kind: {}", shadow.kind));
7583 }
7584 Ok(Self {
7585 result_id: shadow.result_id,
7586 })
7587 }
7588}
7589impl From<UnchangedDocumentDiagnosticReport>
7590for ShadowUnchangedDocumentDiagnosticReport {
7591 fn from(original: UnchangedDocumentDiagnosticReport) -> Self {
7592 Self {
7593 result_id: original.result_id,
7594 kind: "unchanged".to_string(),
7595 }
7596 }
7597}
7598impl UnchangedDocumentDiagnosticReport {
7599 #[must_use]
7600 pub const fn new(result_id: String) -> Self {
7601 Self { result_id }
7602 }
7603}
7604
7605#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7609#[serde(rename_all = "camelCase")]
7610pub struct WorkspaceFullDocumentDiagnosticReport {
7611 pub uri: Uri,
7613 pub version: Option<i32>,
7616 #[serde(flatten)]
7617 pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
7618}
7619impl WorkspaceFullDocumentDiagnosticReport {
7620 #[must_use]
7621 pub const fn new(
7622 uri: Uri,
7623 version: Option<i32>,
7624 full_document_diagnostic_report: FullDocumentDiagnosticReport,
7625 ) -> Self {
7626 Self {
7627 uri,
7628 version,
7629 full_document_diagnostic_report,
7630 }
7631 }
7632}
7633
7634#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7638#[serde(rename_all = "camelCase")]
7639pub struct WorkspaceUnchangedDocumentDiagnosticReport {
7640 pub uri: Uri,
7642 pub version: Option<i32>,
7645 #[serde(flatten)]
7646 pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
7647}
7648impl WorkspaceUnchangedDocumentDiagnosticReport {
7649 #[must_use]
7650 pub const fn new(
7651 uri: Uri,
7652 version: Option<i32>,
7653 unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
7654 ) -> Self {
7655 Self {
7656 uri,
7657 version,
7658 unchanged_document_diagnostic_report,
7659 }
7660 }
7661}
7662
7663#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7671#[serde(rename_all = "camelCase")]
7672pub struct NotebookCell {
7673 pub kind: NotebookCellKind,
7675 pub document: Uri,
7678 #[serde(skip_serializing_if = "Option::is_none")]
7682 pub metadata: Option<LspObject>,
7683 #[serde(skip_serializing_if = "Option::is_none")]
7686 pub execution_summary: Option<ExecutionSummary>,
7687}
7688impl NotebookCell {
7689 #[must_use]
7690 pub const fn new(
7691 kind: NotebookCellKind,
7692 document: Uri,
7693 metadata: Option<LspObject>,
7694 execution_summary: Option<ExecutionSummary>,
7695 ) -> Self {
7696 Self {
7697 kind,
7698 document,
7699 metadata,
7700 execution_summary,
7701 }
7702 }
7703}
7704
7705#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7707#[serde(rename_all = "camelCase")]
7708pub struct NotebookDocumentFilterWithNotebook {
7709 pub notebook: Notebook,
7713 #[serde(skip_serializing_if = "Option::is_none")]
7715 pub cells: Option<Vec<NotebookCellLanguage>>,
7716}
7717impl NotebookDocumentFilterWithNotebook {
7718 #[must_use]
7719 pub const fn new(
7720 notebook: Notebook,
7721 cells: Option<Vec<NotebookCellLanguage>>,
7722 ) -> Self {
7723 Self { notebook, cells }
7724 }
7725}
7726
7727#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7729#[serde(rename_all = "camelCase")]
7730pub struct NotebookDocumentFilterWithCells {
7731 #[serde(skip_serializing_if = "Option::is_none")]
7735 pub notebook: Option<Notebook>,
7736 pub cells: Vec<NotebookCellLanguage>,
7738}
7739impl NotebookDocumentFilterWithCells {
7740 #[must_use]
7741 pub const fn new(
7742 notebook: Option<Notebook>,
7743 cells: Vec<NotebookCellLanguage>,
7744 ) -> Self {
7745 Self { notebook, cells }
7746 }
7747}
7748
7749#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7753#[serde(rename_all = "camelCase")]
7754pub struct NotebookDocumentCellChanges {
7755 #[serde(skip_serializing_if = "Option::is_none")]
7758 pub structure: Option<NotebookDocumentCellChangeStructure>,
7759 #[serde(skip_serializing_if = "Option::is_none")]
7762 pub data: Option<Vec<NotebookCell>>,
7763 #[serde(skip_serializing_if = "Option::is_none")]
7765 pub text_content: Option<Vec<NotebookDocumentCellContentChanges>>,
7766}
7767impl NotebookDocumentCellChanges {
7768 #[must_use]
7769 pub const fn new(
7770 structure: Option<NotebookDocumentCellChangeStructure>,
7771 data: Option<Vec<NotebookCell>>,
7772 text_content: Option<Vec<NotebookDocumentCellContentChanges>>,
7773 ) -> Self {
7774 Self {
7775 structure,
7776 data,
7777 text_content,
7778 }
7779 }
7780}
7781
7782#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7786#[serde(rename_all = "camelCase")]
7787pub struct SelectedCompletionInfo {
7788 pub range: Range,
7790 pub text: String,
7792}
7793impl SelectedCompletionInfo {
7794 #[must_use]
7795 pub const fn new(range: Range, text: String) -> Self {
7796 Self { range, text }
7797 }
7798}
7799
7800#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7805#[serde(rename_all = "camelCase")]
7806pub struct ClientInfo {
7807 pub name: String,
7809 #[serde(skip_serializing_if = "Option::is_none")]
7811 pub version: Option<String>,
7812}
7813impl ClientInfo {
7814 #[must_use]
7815 pub const fn new(name: String, version: Option<String>) -> Self {
7816 Self { name, version }
7817 }
7818}
7819
7820#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7822#[serde(rename_all = "camelCase")]
7823pub struct ClientCapabilities {
7824 #[serde(skip_serializing_if = "Option::is_none")]
7826 pub workspace: Option<WorkspaceClientCapabilities>,
7827 #[serde(skip_serializing_if = "Option::is_none")]
7829 pub text_document: Option<TextDocumentClientCapabilities>,
7830 #[serde(skip_serializing_if = "Option::is_none")]
7834 pub notebook_document: Option<NotebookDocumentClientCapabilities>,
7835 #[serde(skip_serializing_if = "Option::is_none")]
7837 pub window: Option<WindowClientCapabilities>,
7838 #[serde(skip_serializing_if = "Option::is_none")]
7842 pub general: Option<GeneralClientCapabilities>,
7843 #[serde(skip_serializing_if = "Option::is_none")]
7845 pub experimental: Option<LspAny>,
7846}
7847impl ClientCapabilities {
7848 #[must_use]
7849 pub const fn new(
7850 workspace: Option<WorkspaceClientCapabilities>,
7851 text_document: Option<TextDocumentClientCapabilities>,
7852 notebook_document: Option<NotebookDocumentClientCapabilities>,
7853 window: Option<WindowClientCapabilities>,
7854 general: Option<GeneralClientCapabilities>,
7855 experimental: Option<LspAny>,
7856 ) -> Self {
7857 Self {
7858 workspace,
7859 text_document,
7860 notebook_document,
7861 window,
7862 general,
7863 experimental,
7864 }
7865 }
7866}
7867
7868#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
7869#[serde(rename_all = "camelCase")]
7870pub struct TextDocumentSyncOptions {
7871 #[serde(skip_serializing_if = "Option::is_none")]
7874 pub open_close: Option<bool>,
7875 #[serde(skip_serializing_if = "Option::is_none")]
7878 pub change: Option<TextDocumentSyncKind>,
7879 #[serde(skip_serializing_if = "Option::is_none")]
7882 pub will_save: Option<bool>,
7883 #[serde(skip_serializing_if = "Option::is_none")]
7886 pub will_save_wait_until: Option<bool>,
7887 #[serde(skip_serializing_if = "Option::is_none")]
7890 pub save: Option<Save>,
7891}
7892impl TextDocumentSyncOptions {
7893 #[must_use]
7894 pub const fn new(
7895 open_close: Option<bool>,
7896 change: Option<TextDocumentSyncKind>,
7897 will_save: Option<bool>,
7898 will_save_wait_until: Option<bool>,
7899 save: Option<Save>,
7900 ) -> Self {
7901 Self {
7902 open_close,
7903 change,
7904 will_save,
7905 will_save_wait_until,
7906 save,
7907 }
7908 }
7909}
7910
7911#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7915#[serde(rename_all = "camelCase")]
7916pub struct WorkspaceOptions {
7917 #[serde(skip_serializing_if = "Option::is_none")]
7921 pub workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
7922 #[serde(skip_serializing_if = "Option::is_none")]
7926 pub file_operations: Option<FileOperationOptions>,
7927 #[serde(skip_serializing_if = "Option::is_none")]
7931 pub text_document_content: Option<TextDocumentContent>,
7932}
7933impl WorkspaceOptions {
7934 #[must_use]
7935 pub const fn new(
7936 workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
7937 file_operations: Option<FileOperationOptions>,
7938 text_document_content: Option<TextDocumentContent>,
7939 ) -> Self {
7940 Self {
7941 workspace_folders,
7942 file_operations,
7943 text_document_content,
7944 }
7945 }
7946}
7947
7948#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7950#[serde(rename_all = "camelCase")]
7951pub struct TextDocumentContentChangePartial {
7952 pub range: Range,
7954 #[deprecated(note = "use range instead.")]
7958 #[serde(skip_serializing_if = "Option::is_none")]
7959 pub range_length: Option<u32>,
7960 pub text: String,
7962}
7963impl TextDocumentContentChangePartial {
7964 #[must_use]
7965 pub const fn new(range: Range, range_length: Option<u32>, text: String) -> Self {
7966 Self { range, range_length, text }
7967 }
7968}
7969
7970#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
7972#[serde(rename_all = "camelCase")]
7973pub struct TextDocumentContentChangeWholeDocument {
7974 pub text: String,
7976}
7977impl TextDocumentContentChangeWholeDocument {
7978 #[must_use]
7979 pub const fn new(text: String) -> Self {
7980 Self { text }
7981 }
7982}
7983
7984#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
7988#[serde(rename_all = "camelCase")]
7989pub struct CodeDescription {
7990 pub href: Uri,
7992}
7993impl CodeDescription {
7994 #[must_use]
7995 pub const fn new(href: Uri) -> Self {
7996 Self { href }
7997 }
7998}
7999
8000#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8004#[serde(rename_all = "camelCase")]
8005pub struct DiagnosticRelatedInformation {
8006 pub location: Location,
8008 pub message: String,
8010}
8011impl DiagnosticRelatedInformation {
8012 #[must_use]
8013 pub const fn new(location: Location, message: String) -> Self {
8014 Self { location, message }
8015 }
8016}
8017
8018#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8022#[serde(rename_all = "camelCase")]
8023pub struct EditRangeWithInsertReplace {
8024 pub insert: Range,
8025 pub replace: Range,
8026}
8027impl EditRangeWithInsertReplace {
8028 #[must_use]
8029 pub const fn new(insert: Range, replace: Range) -> Self {
8030 Self { insert, replace }
8031 }
8032}
8033
8034#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8036#[serde(rename_all = "camelCase")]
8037pub struct ServerCompletionItemOptions {
8038 #[serde(skip_serializing_if = "Option::is_none")]
8044 pub label_details_support: Option<bool>,
8045}
8046impl ServerCompletionItemOptions {
8047 #[must_use]
8048 pub const fn new(label_details_support: Option<bool>) -> Self {
8049 Self { label_details_support }
8050 }
8051}
8052
8053#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8056#[serde(rename_all = "camelCase")]
8057#[deprecated(note = "use MarkupContent instead.")]
8058pub struct MarkedStringWithLanguage {
8059 pub language: String,
8060 pub value: String,
8061}
8062impl MarkedStringWithLanguage {
8063 #[must_use]
8064 pub const fn new(language: String, value: String) -> Self {
8065 Self { language, value }
8066 }
8067}
8068
8069#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8072#[serde(rename_all = "camelCase")]
8073pub struct ParameterInformation {
8074 pub label: ParameterInformationLabel,
8087 #[serde(skip_serializing_if = "Option::is_none")]
8090 pub documentation: Option<Documentation>,
8091}
8092impl ParameterInformation {
8093 #[must_use]
8094 pub const fn new(
8095 label: ParameterInformationLabel,
8096 documentation: Option<Documentation>,
8097 ) -> Self {
8098 Self { label, documentation }
8099 }
8100}
8101
8102#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8106#[serde(rename_all = "camelCase")]
8107pub struct CodeActionKindDocumentation {
8108 pub kind: CodeActionKind,
8114 pub command: Command,
8118}
8119impl CodeActionKindDocumentation {
8120 #[must_use]
8121 pub const fn new(kind: CodeActionKind, command: Command) -> Self {
8122 Self { kind, command }
8123 }
8124}
8125
8126#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8130#[serde(rename_all = "camelCase")]
8131pub struct FileOperationPatternOptions {
8132 #[serde(skip_serializing_if = "Option::is_none")]
8134 pub ignore_case: Option<bool>,
8135}
8136impl FileOperationPatternOptions {
8137 #[must_use]
8138 pub const fn new(ignore_case: Option<bool>) -> Self {
8139 Self { ignore_case }
8140 }
8141}
8142
8143#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8144#[serde(rename_all = "camelCase")]
8145pub struct ExecutionSummary {
8146 pub execution_order: u32,
8150 #[serde(skip_serializing_if = "Option::is_none")]
8153 pub success: Option<bool>,
8154}
8155impl ExecutionSummary {
8156 #[must_use]
8157 pub const fn new(execution_order: u32, success: Option<bool>) -> Self {
8158 Self { execution_order, success }
8159 }
8160}
8161
8162#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8164#[serde(rename_all = "camelCase")]
8165pub struct NotebookCellLanguage {
8166 pub language: String,
8167}
8168impl NotebookCellLanguage {
8169 #[must_use]
8170 pub const fn new(language: String) -> Self {
8171 Self { language }
8172 }
8173}
8174
8175#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8179#[serde(rename_all = "camelCase")]
8180pub struct NotebookDocumentCellChangeStructure {
8181 pub array: NotebookCellArrayChange,
8183 #[serde(skip_serializing_if = "Option::is_none")]
8185 pub did_open: Option<Vec<TextDocumentItem>>,
8186 #[serde(skip_serializing_if = "Option::is_none")]
8188 pub did_close: Option<Vec<TextDocumentIdentifier>>,
8189}
8190impl NotebookDocumentCellChangeStructure {
8191 #[must_use]
8192 pub const fn new(
8193 array: NotebookCellArrayChange,
8194 did_open: Option<Vec<TextDocumentItem>>,
8195 did_close: Option<Vec<TextDocumentIdentifier>>,
8196 ) -> Self {
8197 Self { array, did_open, did_close }
8198 }
8199}
8200
8201#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8205#[serde(rename_all = "camelCase")]
8206pub struct NotebookDocumentCellContentChanges {
8207 pub document: VersionedTextDocumentIdentifier,
8208 pub changes: Vec<TextDocumentContentChangeEvent>,
8209}
8210impl NotebookDocumentCellContentChanges {
8211 #[must_use]
8212 pub const fn new(
8213 document: VersionedTextDocumentIdentifier,
8214 changes: Vec<TextDocumentContentChangeEvent>,
8215 ) -> Self {
8216 Self { document, changes }
8217 }
8218}
8219
8220#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8222#[serde(rename_all = "camelCase")]
8223pub struct WorkspaceClientCapabilities {
8224 #[serde(skip_serializing_if = "Option::is_none")]
8228 pub apply_edit: Option<bool>,
8229 #[serde(skip_serializing_if = "Option::is_none")]
8231 pub workspace_edit: Option<WorkspaceEditClientCapabilities>,
8232 #[serde(skip_serializing_if = "Option::is_none")]
8234 pub did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
8235 #[serde(skip_serializing_if = "Option::is_none")]
8237 pub did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
8238 #[serde(skip_serializing_if = "Option::is_none")]
8240 pub symbol: Option<WorkspaceSymbolClientCapabilities>,
8241 #[serde(skip_serializing_if = "Option::is_none")]
8243 pub execute_command: Option<ExecuteCommandClientCapabilities>,
8244 #[serde(skip_serializing_if = "Option::is_none")]
8248 pub workspace_folders: Option<bool>,
8249 #[serde(skip_serializing_if = "Option::is_none")]
8253 pub configuration: Option<bool>,
8254 #[serde(skip_serializing_if = "Option::is_none")]
8259 pub semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
8260 #[serde(skip_serializing_if = "Option::is_none")]
8265 pub code_lens: Option<CodeLensWorkspaceClientCapabilities>,
8266 #[serde(skip_serializing_if = "Option::is_none")]
8270 pub file_operations: Option<FileOperationClientCapabilities>,
8271 #[serde(skip_serializing_if = "Option::is_none")]
8276 pub inline_value: Option<InlineValueWorkspaceClientCapabilities>,
8277 #[serde(skip_serializing_if = "Option::is_none")]
8282 pub inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
8283 #[serde(skip_serializing_if = "Option::is_none")]
8288 pub diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
8289 #[serde(skip_serializing_if = "Option::is_none")]
8293 pub folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
8294 #[serde(skip_serializing_if = "Option::is_none")]
8298 pub text_document_content: Option<TextDocumentContentClientCapabilities>,
8299}
8300impl WorkspaceClientCapabilities {
8301 #[must_use]
8302 pub const fn new(
8303 apply_edit: Option<bool>,
8304 workspace_edit: Option<WorkspaceEditClientCapabilities>,
8305 did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
8306 did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
8307 symbol: Option<WorkspaceSymbolClientCapabilities>,
8308 execute_command: Option<ExecuteCommandClientCapabilities>,
8309 workspace_folders: Option<bool>,
8310 configuration: Option<bool>,
8311 semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
8312 code_lens: Option<CodeLensWorkspaceClientCapabilities>,
8313 file_operations: Option<FileOperationClientCapabilities>,
8314 inline_value: Option<InlineValueWorkspaceClientCapabilities>,
8315 inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
8316 diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
8317 folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
8318 text_document_content: Option<TextDocumentContentClientCapabilities>,
8319 ) -> Self {
8320 Self {
8321 apply_edit,
8322 workspace_edit,
8323 did_change_configuration,
8324 did_change_watched_files,
8325 symbol,
8326 execute_command,
8327 workspace_folders,
8328 configuration,
8329 semantic_tokens,
8330 code_lens,
8331 file_operations,
8332 inline_value,
8333 inlay_hint,
8334 diagnostics,
8335 folding_range,
8336 text_document_content,
8337 }
8338 }
8339}
8340
8341#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8343#[serde(rename_all = "camelCase")]
8344pub struct TextDocumentClientCapabilities {
8345 #[serde(skip_serializing_if = "Option::is_none")]
8347 pub synchronization: Option<TextDocumentSyncClientCapabilities>,
8348 #[serde(skip_serializing_if = "Option::is_none")]
8352 pub filters: Option<TextDocumentFilterClientCapabilities>,
8353 #[serde(skip_serializing_if = "Option::is_none")]
8355 pub completion: Option<CompletionClientCapabilities>,
8356 #[serde(skip_serializing_if = "Option::is_none")]
8358 pub hover: Option<HoverClientCapabilities>,
8359 #[serde(skip_serializing_if = "Option::is_none")]
8361 pub signature_help: Option<SignatureHelpClientCapabilities>,
8362 #[serde(skip_serializing_if = "Option::is_none")]
8366 pub declaration: Option<DeclarationClientCapabilities>,
8367 #[serde(skip_serializing_if = "Option::is_none")]
8369 pub definition: Option<DefinitionClientCapabilities>,
8370 #[serde(skip_serializing_if = "Option::is_none")]
8374 pub type_definition: Option<TypeDefinitionClientCapabilities>,
8375 #[serde(skip_serializing_if = "Option::is_none")]
8379 pub implementation: Option<ImplementationClientCapabilities>,
8380 #[serde(skip_serializing_if = "Option::is_none")]
8382 pub references: Option<ReferenceClientCapabilities>,
8383 #[serde(skip_serializing_if = "Option::is_none")]
8385 pub document_highlight: Option<DocumentHighlightClientCapabilities>,
8386 #[serde(skip_serializing_if = "Option::is_none")]
8388 pub document_symbol: Option<DocumentSymbolClientCapabilities>,
8389 #[serde(skip_serializing_if = "Option::is_none")]
8391 pub code_action: Option<CodeActionClientCapabilities>,
8392 #[serde(skip_serializing_if = "Option::is_none")]
8394 pub code_lens: Option<CodeLensClientCapabilities>,
8395 #[serde(skip_serializing_if = "Option::is_none")]
8397 pub document_link: Option<DocumentLinkClientCapabilities>,
8398 #[serde(skip_serializing_if = "Option::is_none")]
8403 pub color_provider: Option<DocumentColorClientCapabilities>,
8404 #[serde(skip_serializing_if = "Option::is_none")]
8406 pub formatting: Option<DocumentFormattingClientCapabilities>,
8407 #[serde(skip_serializing_if = "Option::is_none")]
8409 pub range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
8410 #[serde(skip_serializing_if = "Option::is_none")]
8412 pub on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
8413 #[serde(skip_serializing_if = "Option::is_none")]
8415 pub rename: Option<RenameClientCapabilities>,
8416 #[serde(skip_serializing_if = "Option::is_none")]
8420 pub folding_range: Option<FoldingRangeClientCapabilities>,
8421 #[serde(skip_serializing_if = "Option::is_none")]
8425 pub selection_range: Option<SelectionRangeClientCapabilities>,
8426 #[serde(skip_serializing_if = "Option::is_none")]
8428 pub publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
8429 #[serde(skip_serializing_if = "Option::is_none")]
8433 pub call_hierarchy: Option<CallHierarchyClientCapabilities>,
8434 #[serde(skip_serializing_if = "Option::is_none")]
8438 pub semantic_tokens: Option<SemanticTokensClientCapabilities>,
8439 #[serde(skip_serializing_if = "Option::is_none")]
8443 pub linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
8444 #[serde(skip_serializing_if = "Option::is_none")]
8448 pub moniker: Option<MonikerClientCapabilities>,
8449 #[serde(skip_serializing_if = "Option::is_none")]
8453 pub type_hierarchy: Option<TypeHierarchyClientCapabilities>,
8454 #[serde(skip_serializing_if = "Option::is_none")]
8458 pub inline_value: Option<InlineValueClientCapabilities>,
8459 #[serde(skip_serializing_if = "Option::is_none")]
8463 pub inlay_hint: Option<InlayHintClientCapabilities>,
8464 #[serde(skip_serializing_if = "Option::is_none")]
8468 pub diagnostic: Option<DiagnosticClientCapabilities>,
8469 #[serde(skip_serializing_if = "Option::is_none")]
8473 pub inline_completion: Option<InlineCompletionClientCapabilities>,
8474}
8475impl TextDocumentClientCapabilities {
8476 #[must_use]
8477 pub const fn new(
8478 synchronization: Option<TextDocumentSyncClientCapabilities>,
8479 filters: Option<TextDocumentFilterClientCapabilities>,
8480 completion: Option<CompletionClientCapabilities>,
8481 hover: Option<HoverClientCapabilities>,
8482 signature_help: Option<SignatureHelpClientCapabilities>,
8483 declaration: Option<DeclarationClientCapabilities>,
8484 definition: Option<DefinitionClientCapabilities>,
8485 type_definition: Option<TypeDefinitionClientCapabilities>,
8486 implementation: Option<ImplementationClientCapabilities>,
8487 references: Option<ReferenceClientCapabilities>,
8488 document_highlight: Option<DocumentHighlightClientCapabilities>,
8489 document_symbol: Option<DocumentSymbolClientCapabilities>,
8490 code_action: Option<CodeActionClientCapabilities>,
8491 code_lens: Option<CodeLensClientCapabilities>,
8492 document_link: Option<DocumentLinkClientCapabilities>,
8493 color_provider: Option<DocumentColorClientCapabilities>,
8494 formatting: Option<DocumentFormattingClientCapabilities>,
8495 range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
8496 on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
8497 rename: Option<RenameClientCapabilities>,
8498 folding_range: Option<FoldingRangeClientCapabilities>,
8499 selection_range: Option<SelectionRangeClientCapabilities>,
8500 publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
8501 call_hierarchy: Option<CallHierarchyClientCapabilities>,
8502 semantic_tokens: Option<SemanticTokensClientCapabilities>,
8503 linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
8504 moniker: Option<MonikerClientCapabilities>,
8505 type_hierarchy: Option<TypeHierarchyClientCapabilities>,
8506 inline_value: Option<InlineValueClientCapabilities>,
8507 inlay_hint: Option<InlayHintClientCapabilities>,
8508 diagnostic: Option<DiagnosticClientCapabilities>,
8509 inline_completion: Option<InlineCompletionClientCapabilities>,
8510 ) -> Self {
8511 Self {
8512 synchronization,
8513 filters,
8514 completion,
8515 hover,
8516 signature_help,
8517 declaration,
8518 definition,
8519 type_definition,
8520 implementation,
8521 references,
8522 document_highlight,
8523 document_symbol,
8524 code_action,
8525 code_lens,
8526 document_link,
8527 color_provider,
8528 formatting,
8529 range_formatting,
8530 on_type_formatting,
8531 rename,
8532 folding_range,
8533 selection_range,
8534 publish_diagnostics,
8535 call_hierarchy,
8536 semantic_tokens,
8537 linked_editing_range,
8538 moniker,
8539 type_hierarchy,
8540 inline_value,
8541 inlay_hint,
8542 diagnostic,
8543 inline_completion,
8544 }
8545 }
8546}
8547
8548#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8552#[serde(rename_all = "camelCase")]
8553pub struct NotebookDocumentClientCapabilities {
8554 pub synchronization: NotebookDocumentSyncClientCapabilities,
8558}
8559impl NotebookDocumentClientCapabilities {
8560 #[must_use]
8561 pub const fn new(synchronization: NotebookDocumentSyncClientCapabilities) -> Self {
8562 Self { synchronization }
8563 }
8564}
8565
8566#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8567#[serde(rename_all = "camelCase")]
8568pub struct WindowClientCapabilities {
8569 #[serde(skip_serializing_if = "Option::is_none")]
8579 pub work_done_progress: Option<bool>,
8580 #[serde(skip_serializing_if = "Option::is_none")]
8584 pub show_message: Option<ShowMessageRequestClientCapabilities>,
8585 #[serde(skip_serializing_if = "Option::is_none")]
8589 pub show_document: Option<ShowDocumentClientCapabilities>,
8590}
8591impl WindowClientCapabilities {
8592 #[must_use]
8593 pub const fn new(
8594 work_done_progress: Option<bool>,
8595 show_message: Option<ShowMessageRequestClientCapabilities>,
8596 show_document: Option<ShowDocumentClientCapabilities>,
8597 ) -> Self {
8598 Self {
8599 work_done_progress,
8600 show_message,
8601 show_document,
8602 }
8603 }
8604}
8605
8606#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8610#[serde(rename_all = "camelCase")]
8611pub struct GeneralClientCapabilities {
8612 #[serde(skip_serializing_if = "Option::is_none")]
8619 pub stale_request_support: Option<StaleRequestSupportOptions>,
8620 #[serde(skip_serializing_if = "Option::is_none")]
8624 pub regular_expressions: Option<RegularExpressionsClientCapabilities>,
8625 #[serde(skip_serializing_if = "Option::is_none")]
8629 pub markdown: Option<MarkdownClientCapabilities>,
8630 #[serde(skip_serializing_if = "Option::is_none")]
8649 pub position_encodings: Option<Vec<PositionEncodingKind>>,
8650}
8651impl GeneralClientCapabilities {
8652 #[must_use]
8653 pub const fn new(
8654 stale_request_support: Option<StaleRequestSupportOptions>,
8655 regular_expressions: Option<RegularExpressionsClientCapabilities>,
8656 markdown: Option<MarkdownClientCapabilities>,
8657 position_encodings: Option<Vec<PositionEncodingKind>>,
8658 ) -> Self {
8659 Self {
8660 stale_request_support,
8661 regular_expressions,
8662 markdown,
8663 position_encodings,
8664 }
8665 }
8666}
8667
8668#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8669#[serde(rename_all = "camelCase")]
8670pub struct WorkspaceFoldersServerCapabilities {
8671 #[serde(skip_serializing_if = "Option::is_none")]
8673 pub supported: Option<bool>,
8674 #[serde(skip_serializing_if = "Option::is_none")]
8682 pub change_notifications: Option<ChangeNotifications>,
8683}
8684impl WorkspaceFoldersServerCapabilities {
8685 #[must_use]
8686 pub const fn new(
8687 supported: Option<bool>,
8688 change_notifications: Option<ChangeNotifications>,
8689 ) -> Self {
8690 Self {
8691 supported,
8692 change_notifications,
8693 }
8694 }
8695}
8696
8697#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8701#[serde(rename_all = "camelCase")]
8702pub struct FileOperationOptions {
8703 #[serde(skip_serializing_if = "Option::is_none")]
8705 pub did_create: Option<FileOperationRegistrationOptions>,
8706 #[serde(skip_serializing_if = "Option::is_none")]
8708 pub will_create: Option<FileOperationRegistrationOptions>,
8709 #[serde(skip_serializing_if = "Option::is_none")]
8711 pub did_rename: Option<FileOperationRegistrationOptions>,
8712 #[serde(skip_serializing_if = "Option::is_none")]
8714 pub will_rename: Option<FileOperationRegistrationOptions>,
8715 #[serde(skip_serializing_if = "Option::is_none")]
8717 pub did_delete: Option<FileOperationRegistrationOptions>,
8718 #[serde(skip_serializing_if = "Option::is_none")]
8720 pub will_delete: Option<FileOperationRegistrationOptions>,
8721}
8722impl FileOperationOptions {
8723 #[must_use]
8724 pub const fn new(
8725 did_create: Option<FileOperationRegistrationOptions>,
8726 will_create: Option<FileOperationRegistrationOptions>,
8727 did_rename: Option<FileOperationRegistrationOptions>,
8728 will_rename: Option<FileOperationRegistrationOptions>,
8729 did_delete: Option<FileOperationRegistrationOptions>,
8730 will_delete: Option<FileOperationRegistrationOptions>,
8731 ) -> Self {
8732 Self {
8733 did_create,
8734 will_create,
8735 did_rename,
8736 will_rename,
8737 did_delete,
8738 will_delete,
8739 }
8740 }
8741}
8742
8743#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8748#[serde(rename_all = "camelCase")]
8749pub struct NotebookCellTextDocumentFilter {
8750 pub notebook: Notebook,
8755 #[serde(skip_serializing_if = "Option::is_none")]
8760 pub language: Option<String>,
8761}
8762impl NotebookCellTextDocumentFilter {
8763 #[must_use]
8764 pub const fn new(notebook: Notebook, language: Option<String>) -> Self {
8765 Self { notebook, language }
8766 }
8767}
8768
8769#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8775#[serde(rename_all = "camelCase")]
8776pub struct RelativePattern {
8777 pub base_uri: BaseUri,
8780 pub pattern: Pattern,
8782}
8783impl RelativePattern {
8784 #[must_use]
8785 pub const fn new(base_uri: BaseUri, pattern: Pattern) -> Self {
8786 Self { base_uri, pattern }
8787 }
8788}
8789
8790#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8794#[serde(rename_all = "camelCase")]
8795pub struct NotebookDocumentFilterNotebookType {
8796 pub notebook_type: String,
8798 #[serde(skip_serializing_if = "Option::is_none")]
8800 pub scheme: Option<String>,
8801 #[serde(skip_serializing_if = "Option::is_none")]
8803 pub pattern: Option<GlobPattern>,
8804}
8805impl NotebookDocumentFilterNotebookType {
8806 #[must_use]
8807 pub const fn new(
8808 notebook_type: String,
8809 scheme: Option<String>,
8810 pattern: Option<GlobPattern>,
8811 ) -> Self {
8812 Self {
8813 notebook_type,
8814 scheme,
8815 pattern,
8816 }
8817 }
8818}
8819
8820#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8824#[serde(rename_all = "camelCase")]
8825pub struct NotebookDocumentFilterScheme {
8826 #[serde(skip_serializing_if = "Option::is_none")]
8828 pub notebook_type: Option<String>,
8829 pub scheme: String,
8831 #[serde(skip_serializing_if = "Option::is_none")]
8833 pub pattern: Option<GlobPattern>,
8834}
8835impl NotebookDocumentFilterScheme {
8836 #[must_use]
8837 pub const fn new(
8838 notebook_type: Option<String>,
8839 scheme: String,
8840 pattern: Option<GlobPattern>,
8841 ) -> Self {
8842 Self {
8843 notebook_type,
8844 scheme,
8845 pattern,
8846 }
8847 }
8848}
8849
8850#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
8854#[serde(rename_all = "camelCase")]
8855pub struct NotebookDocumentFilterPattern {
8856 #[serde(skip_serializing_if = "Option::is_none")]
8858 pub notebook_type: Option<String>,
8859 #[serde(skip_serializing_if = "Option::is_none")]
8861 pub scheme: Option<String>,
8862 pub pattern: GlobPattern,
8864}
8865impl NotebookDocumentFilterPattern {
8866 #[must_use]
8867 pub const fn new(
8868 notebook_type: Option<String>,
8869 scheme: Option<String>,
8870 pattern: GlobPattern,
8871 ) -> Self {
8872 Self {
8873 notebook_type,
8874 scheme,
8875 pattern,
8876 }
8877 }
8878}
8879
8880#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8885#[serde(rename_all = "camelCase")]
8886pub struct NotebookCellArrayChange {
8887 pub start: u32,
8889 pub delete_count: u32,
8891 #[serde(skip_serializing_if = "Option::is_none")]
8893 pub cells: Option<Vec<NotebookCell>>,
8894}
8895impl NotebookCellArrayChange {
8896 #[must_use]
8897 pub const fn new(
8898 start: u32,
8899 delete_count: u32,
8900 cells: Option<Vec<NotebookCell>>,
8901 ) -> Self {
8902 Self { start, delete_count, cells }
8903 }
8904}
8905
8906#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
8907#[serde(rename_all = "camelCase")]
8908pub struct WorkspaceEditClientCapabilities {
8909 #[serde(skip_serializing_if = "Option::is_none")]
8911 pub document_changes: Option<bool>,
8912 #[serde(skip_serializing_if = "Option::is_none")]
8917 pub resource_operations: Option<Vec<ResourceOperationKind>>,
8918 #[serde(skip_serializing_if = "Option::is_none")]
8923 pub failure_handling: Option<FailureHandlingKind>,
8924 #[serde(skip_serializing_if = "Option::is_none")]
8932 pub normalizes_line_endings: Option<bool>,
8933 #[serde(skip_serializing_if = "Option::is_none")]
8938 pub change_annotation_support: Option<ChangeAnnotationsSupportOptions>,
8939 #[serde(skip_serializing_if = "Option::is_none")]
8943 pub metadata_support: Option<bool>,
8944 #[serde(skip_serializing_if = "Option::is_none")]
8948 pub snippet_edit_support: Option<bool>,
8949}
8950impl WorkspaceEditClientCapabilities {
8951 #[must_use]
8952 pub const fn new(
8953 document_changes: Option<bool>,
8954 resource_operations: Option<Vec<ResourceOperationKind>>,
8955 failure_handling: Option<FailureHandlingKind>,
8956 normalizes_line_endings: Option<bool>,
8957 change_annotation_support: Option<ChangeAnnotationsSupportOptions>,
8958 metadata_support: Option<bool>,
8959 snippet_edit_support: Option<bool>,
8960 ) -> Self {
8961 Self {
8962 document_changes,
8963 resource_operations,
8964 failure_handling,
8965 normalizes_line_endings,
8966 change_annotation_support,
8967 metadata_support,
8968 snippet_edit_support,
8969 }
8970 }
8971}
8972
8973#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8974#[serde(rename_all = "camelCase")]
8975pub struct DidChangeConfigurationClientCapabilities {
8976 #[serde(skip_serializing_if = "Option::is_none")]
8978 pub dynamic_registration: Option<bool>,
8979}
8980impl DidChangeConfigurationClientCapabilities {
8981 #[must_use]
8982 pub const fn new(dynamic_registration: Option<bool>) -> Self {
8983 Self { dynamic_registration }
8984 }
8985}
8986
8987#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
8988#[serde(rename_all = "camelCase")]
8989pub struct DidChangeWatchedFilesClientCapabilities {
8990 #[serde(skip_serializing_if = "Option::is_none")]
8994 pub dynamic_registration: Option<bool>,
8995 #[serde(skip_serializing_if = "Option::is_none")]
9000 pub relative_pattern_support: Option<bool>,
9001}
9002impl DidChangeWatchedFilesClientCapabilities {
9003 #[must_use]
9004 pub const fn new(
9005 dynamic_registration: Option<bool>,
9006 relative_pattern_support: Option<bool>,
9007 ) -> Self {
9008 Self {
9009 dynamic_registration,
9010 relative_pattern_support,
9011 }
9012 }
9013}
9014
9015#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9017#[serde(rename_all = "camelCase")]
9018pub struct WorkspaceSymbolClientCapabilities {
9019 #[serde(skip_serializing_if = "Option::is_none")]
9021 pub dynamic_registration: Option<bool>,
9022 #[serde(skip_serializing_if = "Option::is_none")]
9024 pub symbol_kind: Option<ClientSymbolKindOptions>,
9025 #[serde(skip_serializing_if = "Option::is_none")]
9030 pub tag_support: Option<ClientSymbolTagOptions>,
9031 #[serde(skip_serializing_if = "Option::is_none")]
9037 pub resolve_support: Option<ClientSymbolResolveOptions>,
9038}
9039impl WorkspaceSymbolClientCapabilities {
9040 #[must_use]
9041 pub const fn new(
9042 dynamic_registration: Option<bool>,
9043 symbol_kind: Option<ClientSymbolKindOptions>,
9044 tag_support: Option<ClientSymbolTagOptions>,
9045 resolve_support: Option<ClientSymbolResolveOptions>,
9046 ) -> Self {
9047 Self {
9048 dynamic_registration,
9049 symbol_kind,
9050 tag_support,
9051 resolve_support,
9052 }
9053 }
9054}
9055
9056#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9058#[serde(rename_all = "camelCase")]
9059pub struct ExecuteCommandClientCapabilities {
9060 #[serde(skip_serializing_if = "Option::is_none")]
9062 pub dynamic_registration: Option<bool>,
9063}
9064impl ExecuteCommandClientCapabilities {
9065 #[must_use]
9066 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9067 Self { dynamic_registration }
9068 }
9069}
9070
9071#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9073#[serde(rename_all = "camelCase")]
9074pub struct SemanticTokensWorkspaceClientCapabilities {
9075 #[serde(skip_serializing_if = "Option::is_none")]
9083 pub refresh_support: Option<bool>,
9084}
9085impl SemanticTokensWorkspaceClientCapabilities {
9086 #[must_use]
9087 pub const fn new(refresh_support: Option<bool>) -> Self {
9088 Self { refresh_support }
9089 }
9090}
9091
9092#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9094#[serde(rename_all = "camelCase")]
9095pub struct CodeLensWorkspaceClientCapabilities {
9096 #[serde(skip_serializing_if = "Option::is_none")]
9104 pub refresh_support: Option<bool>,
9105}
9106impl CodeLensWorkspaceClientCapabilities {
9107 #[must_use]
9108 pub const fn new(refresh_support: Option<bool>) -> Self {
9109 Self { refresh_support }
9110 }
9111}
9112
9113#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9120#[serde(rename_all = "camelCase")]
9121pub struct FileOperationClientCapabilities {
9122 #[serde(skip_serializing_if = "Option::is_none")]
9124 pub dynamic_registration: Option<bool>,
9125 #[serde(skip_serializing_if = "Option::is_none")]
9127 pub did_create: Option<bool>,
9128 #[serde(skip_serializing_if = "Option::is_none")]
9130 pub will_create: Option<bool>,
9131 #[serde(skip_serializing_if = "Option::is_none")]
9133 pub did_rename: Option<bool>,
9134 #[serde(skip_serializing_if = "Option::is_none")]
9136 pub will_rename: Option<bool>,
9137 #[serde(skip_serializing_if = "Option::is_none")]
9139 pub did_delete: Option<bool>,
9140 #[serde(skip_serializing_if = "Option::is_none")]
9142 pub will_delete: Option<bool>,
9143}
9144impl FileOperationClientCapabilities {
9145 #[must_use]
9146 pub const fn new(
9147 dynamic_registration: Option<bool>,
9148 did_create: Option<bool>,
9149 will_create: Option<bool>,
9150 did_rename: Option<bool>,
9151 will_rename: Option<bool>,
9152 did_delete: Option<bool>,
9153 will_delete: Option<bool>,
9154 ) -> Self {
9155 Self {
9156 dynamic_registration,
9157 did_create,
9158 will_create,
9159 did_rename,
9160 will_rename,
9161 did_delete,
9162 will_delete,
9163 }
9164 }
9165}
9166
9167#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9171#[serde(rename_all = "camelCase")]
9172pub struct InlineValueWorkspaceClientCapabilities {
9173 #[serde(skip_serializing_if = "Option::is_none")]
9181 pub refresh_support: Option<bool>,
9182}
9183impl InlineValueWorkspaceClientCapabilities {
9184 #[must_use]
9185 pub const fn new(refresh_support: Option<bool>) -> Self {
9186 Self { refresh_support }
9187 }
9188}
9189
9190#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9194#[serde(rename_all = "camelCase")]
9195pub struct InlayHintWorkspaceClientCapabilities {
9196 #[serde(skip_serializing_if = "Option::is_none")]
9204 pub refresh_support: Option<bool>,
9205}
9206impl InlayHintWorkspaceClientCapabilities {
9207 #[must_use]
9208 pub const fn new(refresh_support: Option<bool>) -> Self {
9209 Self { refresh_support }
9210 }
9211}
9212
9213#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9217#[serde(rename_all = "camelCase")]
9218pub struct DiagnosticWorkspaceClientCapabilities {
9219 #[serde(skip_serializing_if = "Option::is_none")]
9227 pub refresh_support: Option<bool>,
9228}
9229impl DiagnosticWorkspaceClientCapabilities {
9230 #[must_use]
9231 pub const fn new(refresh_support: Option<bool>) -> Self {
9232 Self { refresh_support }
9233 }
9234}
9235
9236#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9240#[serde(rename_all = "camelCase")]
9241pub struct FoldingRangeWorkspaceClientCapabilities {
9242 #[serde(skip_serializing_if = "Option::is_none")]
9252 pub refresh_support: Option<bool>,
9253}
9254impl FoldingRangeWorkspaceClientCapabilities {
9255 #[must_use]
9256 pub const fn new(refresh_support: Option<bool>) -> Self {
9257 Self { refresh_support }
9258 }
9259}
9260
9261#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9265#[serde(rename_all = "camelCase")]
9266pub struct TextDocumentContentClientCapabilities {
9267 #[serde(skip_serializing_if = "Option::is_none")]
9269 pub dynamic_registration: Option<bool>,
9270}
9271impl TextDocumentContentClientCapabilities {
9272 #[must_use]
9273 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9274 Self { dynamic_registration }
9275 }
9276}
9277
9278#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9279#[serde(rename_all = "camelCase")]
9280pub struct TextDocumentSyncClientCapabilities {
9281 #[serde(skip_serializing_if = "Option::is_none")]
9283 pub dynamic_registration: Option<bool>,
9284 #[serde(skip_serializing_if = "Option::is_none")]
9286 pub will_save: Option<bool>,
9287 #[serde(skip_serializing_if = "Option::is_none")]
9291 pub will_save_wait_until: Option<bool>,
9292 #[serde(skip_serializing_if = "Option::is_none")]
9294 pub did_save: Option<bool>,
9295}
9296impl TextDocumentSyncClientCapabilities {
9297 #[must_use]
9298 pub const fn new(
9299 dynamic_registration: Option<bool>,
9300 will_save: Option<bool>,
9301 will_save_wait_until: Option<bool>,
9302 did_save: Option<bool>,
9303 ) -> Self {
9304 Self {
9305 dynamic_registration,
9306 will_save,
9307 will_save_wait_until,
9308 did_save,
9309 }
9310 }
9311}
9312
9313#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9314#[serde(rename_all = "camelCase")]
9315pub struct TextDocumentFilterClientCapabilities {
9316 #[serde(skip_serializing_if = "Option::is_none")]
9320 pub relative_pattern_support: Option<bool>,
9321}
9322impl TextDocumentFilterClientCapabilities {
9323 #[must_use]
9324 pub const fn new(relative_pattern_support: Option<bool>) -> Self {
9325 Self { relative_pattern_support }
9326 }
9327}
9328
9329#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9331#[serde(rename_all = "camelCase")]
9332pub struct CompletionClientCapabilities {
9333 #[serde(skip_serializing_if = "Option::is_none")]
9335 pub dynamic_registration: Option<bool>,
9336 #[serde(skip_serializing_if = "Option::is_none")]
9339 pub completion_item: Option<ClientCompletionItemOptions>,
9340 #[serde(skip_serializing_if = "Option::is_none")]
9342 pub completion_item_kind: Option<ClientCompletionItemOptionsKind>,
9343 #[serde(skip_serializing_if = "Option::is_none")]
9349 pub insert_text_mode: Option<InsertTextMode>,
9350 #[serde(skip_serializing_if = "Option::is_none")]
9353 pub context_support: Option<bool>,
9354 #[serde(skip_serializing_if = "Option::is_none")]
9359 pub completion_list: Option<CompletionListCapabilities>,
9360}
9361impl CompletionClientCapabilities {
9362 #[must_use]
9363 pub const fn new(
9364 dynamic_registration: Option<bool>,
9365 completion_item: Option<ClientCompletionItemOptions>,
9366 completion_item_kind: Option<ClientCompletionItemOptionsKind>,
9367 insert_text_mode: Option<InsertTextMode>,
9368 context_support: Option<bool>,
9369 completion_list: Option<CompletionListCapabilities>,
9370 ) -> Self {
9371 Self {
9372 dynamic_registration,
9373 completion_item,
9374 completion_item_kind,
9375 insert_text_mode,
9376 context_support,
9377 completion_list,
9378 }
9379 }
9380}
9381
9382#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9383#[serde(rename_all = "camelCase")]
9384pub struct HoverClientCapabilities {
9385 #[serde(skip_serializing_if = "Option::is_none")]
9387 pub dynamic_registration: Option<bool>,
9388 #[serde(skip_serializing_if = "Option::is_none")]
9391 pub content_format: Option<Vec<MarkupKind>>,
9392}
9393impl HoverClientCapabilities {
9394 #[must_use]
9395 pub const fn new(
9396 dynamic_registration: Option<bool>,
9397 content_format: Option<Vec<MarkupKind>>,
9398 ) -> Self {
9399 Self {
9400 dynamic_registration,
9401 content_format,
9402 }
9403 }
9404}
9405
9406#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9408#[serde(rename_all = "camelCase")]
9409pub struct SignatureHelpClientCapabilities {
9410 #[serde(skip_serializing_if = "Option::is_none")]
9412 pub dynamic_registration: Option<bool>,
9413 #[serde(skip_serializing_if = "Option::is_none")]
9416 pub signature_information: Option<ClientSignatureInformationOptions>,
9417 #[serde(skip_serializing_if = "Option::is_none")]
9424 pub context_support: Option<bool>,
9425}
9426impl SignatureHelpClientCapabilities {
9427 #[must_use]
9428 pub const fn new(
9429 dynamic_registration: Option<bool>,
9430 signature_information: Option<ClientSignatureInformationOptions>,
9431 context_support: Option<bool>,
9432 ) -> Self {
9433 Self {
9434 dynamic_registration,
9435 signature_information,
9436 context_support,
9437 }
9438 }
9439}
9440
9441#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9443#[serde(rename_all = "camelCase")]
9444pub struct DeclarationClientCapabilities {
9445 #[serde(skip_serializing_if = "Option::is_none")]
9449 pub dynamic_registration: Option<bool>,
9450 #[serde(skip_serializing_if = "Option::is_none")]
9452 pub link_support: Option<bool>,
9453}
9454impl DeclarationClientCapabilities {
9455 #[must_use]
9456 pub const fn new(
9457 dynamic_registration: Option<bool>,
9458 link_support: Option<bool>,
9459 ) -> Self {
9460 Self {
9461 dynamic_registration,
9462 link_support,
9463 }
9464 }
9465}
9466
9467#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9469#[serde(rename_all = "camelCase")]
9470pub struct DefinitionClientCapabilities {
9471 #[serde(skip_serializing_if = "Option::is_none")]
9473 pub dynamic_registration: Option<bool>,
9474 #[serde(skip_serializing_if = "Option::is_none")]
9478 pub link_support: Option<bool>,
9479}
9480impl DefinitionClientCapabilities {
9481 #[must_use]
9482 pub const fn new(
9483 dynamic_registration: Option<bool>,
9484 link_support: Option<bool>,
9485 ) -> Self {
9486 Self {
9487 dynamic_registration,
9488 link_support,
9489 }
9490 }
9491}
9492
9493#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9495#[serde(rename_all = "camelCase")]
9496pub struct TypeDefinitionClientCapabilities {
9497 #[serde(skip_serializing_if = "Option::is_none")]
9501 pub dynamic_registration: Option<bool>,
9502 #[serde(skip_serializing_if = "Option::is_none")]
9506 pub link_support: Option<bool>,
9507}
9508impl TypeDefinitionClientCapabilities {
9509 #[must_use]
9510 pub const fn new(
9511 dynamic_registration: Option<bool>,
9512 link_support: Option<bool>,
9513 ) -> Self {
9514 Self {
9515 dynamic_registration,
9516 link_support,
9517 }
9518 }
9519}
9520
9521#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9523#[serde(rename_all = "camelCase")]
9524pub struct ImplementationClientCapabilities {
9525 #[serde(skip_serializing_if = "Option::is_none")]
9529 pub dynamic_registration: Option<bool>,
9530 #[serde(skip_serializing_if = "Option::is_none")]
9534 pub link_support: Option<bool>,
9535}
9536impl ImplementationClientCapabilities {
9537 #[must_use]
9538 pub const fn new(
9539 dynamic_registration: Option<bool>,
9540 link_support: Option<bool>,
9541 ) -> Self {
9542 Self {
9543 dynamic_registration,
9544 link_support,
9545 }
9546 }
9547}
9548
9549#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9551#[serde(rename_all = "camelCase")]
9552pub struct ReferenceClientCapabilities {
9553 #[serde(skip_serializing_if = "Option::is_none")]
9555 pub dynamic_registration: Option<bool>,
9556}
9557impl ReferenceClientCapabilities {
9558 #[must_use]
9559 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9560 Self { dynamic_registration }
9561 }
9562}
9563
9564#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9566#[serde(rename_all = "camelCase")]
9567pub struct DocumentHighlightClientCapabilities {
9568 #[serde(skip_serializing_if = "Option::is_none")]
9570 pub dynamic_registration: Option<bool>,
9571}
9572impl DocumentHighlightClientCapabilities {
9573 #[must_use]
9574 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9575 Self { dynamic_registration }
9576 }
9577}
9578
9579#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9581#[serde(rename_all = "camelCase")]
9582pub struct DocumentSymbolClientCapabilities {
9583 #[serde(skip_serializing_if = "Option::is_none")]
9585 pub dynamic_registration: Option<bool>,
9586 #[serde(skip_serializing_if = "Option::is_none")]
9589 pub symbol_kind: Option<ClientSymbolKindOptions>,
9590 #[serde(skip_serializing_if = "Option::is_none")]
9592 pub hierarchical_document_symbol_support: Option<bool>,
9593 #[serde(skip_serializing_if = "Option::is_none")]
9599 pub tag_support: Option<ClientSymbolTagOptions>,
9600 #[serde(skip_serializing_if = "Option::is_none")]
9605 pub label_support: Option<bool>,
9606}
9607impl DocumentSymbolClientCapabilities {
9608 #[must_use]
9609 pub const fn new(
9610 dynamic_registration: Option<bool>,
9611 symbol_kind: Option<ClientSymbolKindOptions>,
9612 hierarchical_document_symbol_support: Option<bool>,
9613 tag_support: Option<ClientSymbolTagOptions>,
9614 label_support: Option<bool>,
9615 ) -> Self {
9616 Self {
9617 dynamic_registration,
9618 symbol_kind,
9619 hierarchical_document_symbol_support,
9620 tag_support,
9621 label_support,
9622 }
9623 }
9624}
9625
9626#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9628#[serde(rename_all = "camelCase")]
9629pub struct CodeActionClientCapabilities {
9630 #[serde(skip_serializing_if = "Option::is_none")]
9632 pub dynamic_registration: Option<bool>,
9633 #[serde(skip_serializing_if = "Option::is_none")]
9639 pub code_action_literal_support: Option<ClientCodeActionLiteralOptions>,
9640 #[serde(skip_serializing_if = "Option::is_none")]
9644 pub is_preferred_support: Option<bool>,
9645 #[serde(skip_serializing_if = "Option::is_none")]
9649 pub disabled_support: Option<bool>,
9650 #[serde(skip_serializing_if = "Option::is_none")]
9656 pub data_support: Option<bool>,
9657 #[serde(skip_serializing_if = "Option::is_none")]
9662 pub resolve_support: Option<ClientCodeActionResolveOptions>,
9663 #[serde(skip_serializing_if = "Option::is_none")]
9671 pub honors_change_annotations: Option<bool>,
9672 #[serde(skip_serializing_if = "Option::is_none")]
9677 pub documentation_support: Option<bool>,
9678 #[serde(skip_serializing_if = "Option::is_none")]
9683 pub tag_support: Option<CodeActionTagOptions>,
9684}
9685impl CodeActionClientCapabilities {
9686 #[must_use]
9687 pub const fn new(
9688 dynamic_registration: Option<bool>,
9689 code_action_literal_support: Option<ClientCodeActionLiteralOptions>,
9690 is_preferred_support: Option<bool>,
9691 disabled_support: Option<bool>,
9692 data_support: Option<bool>,
9693 resolve_support: Option<ClientCodeActionResolveOptions>,
9694 honors_change_annotations: Option<bool>,
9695 documentation_support: Option<bool>,
9696 tag_support: Option<CodeActionTagOptions>,
9697 ) -> Self {
9698 Self {
9699 dynamic_registration,
9700 code_action_literal_support,
9701 is_preferred_support,
9702 disabled_support,
9703 data_support,
9704 resolve_support,
9705 honors_change_annotations,
9706 documentation_support,
9707 tag_support,
9708 }
9709 }
9710}
9711
9712#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9714#[serde(rename_all = "camelCase")]
9715pub struct CodeLensClientCapabilities {
9716 #[serde(skip_serializing_if = "Option::is_none")]
9718 pub dynamic_registration: Option<bool>,
9719 #[serde(skip_serializing_if = "Option::is_none")]
9724 pub resolve_support: Option<ClientCodeLensResolveOptions>,
9725}
9726impl CodeLensClientCapabilities {
9727 #[must_use]
9728 pub const fn new(
9729 dynamic_registration: Option<bool>,
9730 resolve_support: Option<ClientCodeLensResolveOptions>,
9731 ) -> Self {
9732 Self {
9733 dynamic_registration,
9734 resolve_support,
9735 }
9736 }
9737}
9738
9739#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9741#[serde(rename_all = "camelCase")]
9742pub struct DocumentLinkClientCapabilities {
9743 #[serde(skip_serializing_if = "Option::is_none")]
9745 pub dynamic_registration: Option<bool>,
9746 #[serde(skip_serializing_if = "Option::is_none")]
9750 pub tooltip_support: Option<bool>,
9751}
9752impl DocumentLinkClientCapabilities {
9753 #[must_use]
9754 pub const fn new(
9755 dynamic_registration: Option<bool>,
9756 tooltip_support: Option<bool>,
9757 ) -> Self {
9758 Self {
9759 dynamic_registration,
9760 tooltip_support,
9761 }
9762 }
9763}
9764
9765#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9766#[serde(rename_all = "camelCase")]
9767pub struct DocumentColorClientCapabilities {
9768 #[serde(skip_serializing_if = "Option::is_none")]
9772 pub dynamic_registration: Option<bool>,
9773}
9774impl DocumentColorClientCapabilities {
9775 #[must_use]
9776 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9777 Self { dynamic_registration }
9778 }
9779}
9780
9781#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9783#[serde(rename_all = "camelCase")]
9784pub struct DocumentFormattingClientCapabilities {
9785 #[serde(skip_serializing_if = "Option::is_none")]
9787 pub dynamic_registration: Option<bool>,
9788}
9789impl DocumentFormattingClientCapabilities {
9790 #[must_use]
9791 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9792 Self { dynamic_registration }
9793 }
9794}
9795
9796#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9798#[serde(rename_all = "camelCase")]
9799pub struct DocumentRangeFormattingClientCapabilities {
9800 #[serde(skip_serializing_if = "Option::is_none")]
9802 pub dynamic_registration: Option<bool>,
9803 #[serde(skip_serializing_if = "Option::is_none")]
9807 pub ranges_support: Option<bool>,
9808}
9809impl DocumentRangeFormattingClientCapabilities {
9810 #[must_use]
9811 pub const fn new(
9812 dynamic_registration: Option<bool>,
9813 ranges_support: Option<bool>,
9814 ) -> Self {
9815 Self {
9816 dynamic_registration,
9817 ranges_support,
9818 }
9819 }
9820}
9821
9822#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9824#[serde(rename_all = "camelCase")]
9825pub struct DocumentOnTypeFormattingClientCapabilities {
9826 #[serde(skip_serializing_if = "Option::is_none")]
9828 pub dynamic_registration: Option<bool>,
9829}
9830impl DocumentOnTypeFormattingClientCapabilities {
9831 #[must_use]
9832 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9833 Self { dynamic_registration }
9834 }
9835}
9836
9837#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9838#[serde(rename_all = "camelCase")]
9839pub struct RenameClientCapabilities {
9840 #[serde(skip_serializing_if = "Option::is_none")]
9842 pub dynamic_registration: Option<bool>,
9843 #[serde(skip_serializing_if = "Option::is_none")]
9848 pub prepare_support: Option<bool>,
9849 #[serde(skip_serializing_if = "Option::is_none")]
9856 pub prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
9857 #[serde(skip_serializing_if = "Option::is_none")]
9865 pub honors_change_annotations: Option<bool>,
9866}
9867impl RenameClientCapabilities {
9868 #[must_use]
9869 pub const fn new(
9870 dynamic_registration: Option<bool>,
9871 prepare_support: Option<bool>,
9872 prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
9873 honors_change_annotations: Option<bool>,
9874 ) -> Self {
9875 Self {
9876 dynamic_registration,
9877 prepare_support,
9878 prepare_support_default_behavior,
9879 honors_change_annotations,
9880 }
9881 }
9882}
9883
9884#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9885#[serde(rename_all = "camelCase")]
9886pub struct FoldingRangeClientCapabilities {
9887 #[serde(skip_serializing_if = "Option::is_none")]
9892 pub dynamic_registration: Option<bool>,
9893 #[serde(skip_serializing_if = "Option::is_none")]
9897 pub range_limit: Option<u32>,
9898 #[serde(skip_serializing_if = "Option::is_none")]
9902 pub line_folding_only: Option<bool>,
9903 #[serde(skip_serializing_if = "Option::is_none")]
9907 pub folding_range_kind: Option<ClientFoldingRangeKindOptions>,
9908 #[serde(skip_serializing_if = "Option::is_none")]
9912 pub folding_range: Option<ClientFoldingRangeOptions>,
9913}
9914impl FoldingRangeClientCapabilities {
9915 #[must_use]
9916 pub const fn new(
9917 dynamic_registration: Option<bool>,
9918 range_limit: Option<u32>,
9919 line_folding_only: Option<bool>,
9920 folding_range_kind: Option<ClientFoldingRangeKindOptions>,
9921 folding_range: Option<ClientFoldingRangeOptions>,
9922 ) -> Self {
9923 Self {
9924 dynamic_registration,
9925 range_limit,
9926 line_folding_only,
9927 folding_range_kind,
9928 folding_range,
9929 }
9930 }
9931}
9932
9933#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9934#[serde(rename_all = "camelCase")]
9935pub struct SelectionRangeClientCapabilities {
9936 #[serde(skip_serializing_if = "Option::is_none")]
9940 pub dynamic_registration: Option<bool>,
9941}
9942impl SelectionRangeClientCapabilities {
9943 #[must_use]
9944 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9945 Self { dynamic_registration }
9946 }
9947}
9948
9949#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9951#[serde(rename_all = "camelCase")]
9952pub struct PublishDiagnosticsClientCapabilities {
9953 #[serde(skip_serializing_if = "Option::is_none")]
9958 pub version_support: Option<bool>,
9959 #[serde(flatten)]
9960 pub diagnostics_capabilities: DiagnosticsCapabilities,
9961}
9962impl PublishDiagnosticsClientCapabilities {
9963 #[must_use]
9964 pub const fn new(
9965 version_support: Option<bool>,
9966 diagnostics_capabilities: DiagnosticsCapabilities,
9967 ) -> Self {
9968 Self {
9969 version_support,
9970 diagnostics_capabilities,
9971 }
9972 }
9973}
9974
9975#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
9977#[serde(rename_all = "camelCase")]
9978pub struct CallHierarchyClientCapabilities {
9979 #[serde(skip_serializing_if = "Option::is_none")]
9983 pub dynamic_registration: Option<bool>,
9984}
9985impl CallHierarchyClientCapabilities {
9986 #[must_use]
9987 pub const fn new(dynamic_registration: Option<bool>) -> Self {
9988 Self { dynamic_registration }
9989 }
9990}
9991
9992#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
9994#[serde(rename_all = "camelCase")]
9995pub struct SemanticTokensClientCapabilities {
9996 #[serde(skip_serializing_if = "Option::is_none")]
10000 pub dynamic_registration: Option<bool>,
10001 pub requests: ClientSemanticTokensRequestOptions,
10010 pub token_types: Vec<String>,
10012 pub token_modifiers: Vec<String>,
10014 pub formats: Vec<TokenFormat>,
10016 #[serde(skip_serializing_if = "Option::is_none")]
10018 pub overlapping_token_support: Option<bool>,
10019 #[serde(skip_serializing_if = "Option::is_none")]
10021 pub multiline_token_support: Option<bool>,
10022 #[serde(skip_serializing_if = "Option::is_none")]
10029 pub server_cancel_support: Option<bool>,
10030 #[serde(skip_serializing_if = "Option::is_none")]
10041 pub augments_syntax_tokens: Option<bool>,
10042}
10043impl SemanticTokensClientCapabilities {
10044 #[must_use]
10045 pub const fn new(
10046 dynamic_registration: Option<bool>,
10047 requests: ClientSemanticTokensRequestOptions,
10048 token_types: Vec<String>,
10049 token_modifiers: Vec<String>,
10050 formats: Vec<TokenFormat>,
10051 overlapping_token_support: Option<bool>,
10052 multiline_token_support: Option<bool>,
10053 server_cancel_support: Option<bool>,
10054 augments_syntax_tokens: Option<bool>,
10055 ) -> Self {
10056 Self {
10057 dynamic_registration,
10058 requests,
10059 token_types,
10060 token_modifiers,
10061 formats,
10062 overlapping_token_support,
10063 multiline_token_support,
10064 server_cancel_support,
10065 augments_syntax_tokens,
10066 }
10067 }
10068}
10069
10070#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10074#[serde(rename_all = "camelCase")]
10075pub struct LinkedEditingRangeClientCapabilities {
10076 #[serde(skip_serializing_if = "Option::is_none")]
10080 pub dynamic_registration: Option<bool>,
10081}
10082impl LinkedEditingRangeClientCapabilities {
10083 #[must_use]
10084 pub const fn new(dynamic_registration: Option<bool>) -> Self {
10085 Self { dynamic_registration }
10086 }
10087}
10088
10089#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10093#[serde(rename_all = "camelCase")]
10094pub struct MonikerClientCapabilities {
10095 #[serde(skip_serializing_if = "Option::is_none")]
10099 pub dynamic_registration: Option<bool>,
10100}
10101impl MonikerClientCapabilities {
10102 #[must_use]
10103 pub const fn new(dynamic_registration: Option<bool>) -> Self {
10104 Self { dynamic_registration }
10105 }
10106}
10107
10108#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10110#[serde(rename_all = "camelCase")]
10111pub struct TypeHierarchyClientCapabilities {
10112 #[serde(skip_serializing_if = "Option::is_none")]
10116 pub dynamic_registration: Option<bool>,
10117}
10118impl TypeHierarchyClientCapabilities {
10119 #[must_use]
10120 pub const fn new(dynamic_registration: Option<bool>) -> Self {
10121 Self { dynamic_registration }
10122 }
10123}
10124
10125#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10129#[serde(rename_all = "camelCase")]
10130pub struct InlineValueClientCapabilities {
10131 #[serde(skip_serializing_if = "Option::is_none")]
10133 pub dynamic_registration: Option<bool>,
10134}
10135impl InlineValueClientCapabilities {
10136 #[must_use]
10137 pub const fn new(dynamic_registration: Option<bool>) -> Self {
10138 Self { dynamic_registration }
10139 }
10140}
10141
10142#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10146#[serde(rename_all = "camelCase")]
10147pub struct InlayHintClientCapabilities {
10148 #[serde(skip_serializing_if = "Option::is_none")]
10150 pub dynamic_registration: Option<bool>,
10151 #[serde(skip_serializing_if = "Option::is_none")]
10154 pub resolve_support: Option<ClientInlayHintResolveOptions>,
10155}
10156impl InlayHintClientCapabilities {
10157 #[must_use]
10158 pub const fn new(
10159 dynamic_registration: Option<bool>,
10160 resolve_support: Option<ClientInlayHintResolveOptions>,
10161 ) -> Self {
10162 Self {
10163 dynamic_registration,
10164 resolve_support,
10165 }
10166 }
10167}
10168
10169#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10173#[serde(rename_all = "camelCase")]
10174pub struct DiagnosticClientCapabilities {
10175 #[serde(skip_serializing_if = "Option::is_none")]
10179 pub dynamic_registration: Option<bool>,
10180 #[serde(skip_serializing_if = "Option::is_none")]
10182 pub related_document_support: Option<bool>,
10183 #[serde(skip_serializing_if = "Option::is_none")]
10187 pub markup_message_support: Option<bool>,
10188 #[serde(flatten)]
10189 pub diagnostics_capabilities: DiagnosticsCapabilities,
10190}
10191impl DiagnosticClientCapabilities {
10192 #[must_use]
10193 pub const fn new(
10194 dynamic_registration: Option<bool>,
10195 related_document_support: Option<bool>,
10196 markup_message_support: Option<bool>,
10197 diagnostics_capabilities: DiagnosticsCapabilities,
10198 ) -> Self {
10199 Self {
10200 dynamic_registration,
10201 related_document_support,
10202 markup_message_support,
10203 diagnostics_capabilities,
10204 }
10205 }
10206}
10207
10208#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10212#[serde(rename_all = "camelCase")]
10213pub struct InlineCompletionClientCapabilities {
10214 #[serde(skip_serializing_if = "Option::is_none")]
10216 pub dynamic_registration: Option<bool>,
10217}
10218impl InlineCompletionClientCapabilities {
10219 #[must_use]
10220 pub const fn new(dynamic_registration: Option<bool>) -> Self {
10221 Self { dynamic_registration }
10222 }
10223}
10224
10225#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10229#[serde(rename_all = "camelCase")]
10230pub struct NotebookDocumentSyncClientCapabilities {
10231 #[serde(skip_serializing_if = "Option::is_none")]
10236 pub dynamic_registration: Option<bool>,
10237 #[serde(skip_serializing_if = "Option::is_none")]
10239 pub execution_summary_support: Option<bool>,
10240}
10241impl NotebookDocumentSyncClientCapabilities {
10242 #[must_use]
10243 pub const fn new(
10244 dynamic_registration: Option<bool>,
10245 execution_summary_support: Option<bool>,
10246 ) -> Self {
10247 Self {
10248 dynamic_registration,
10249 execution_summary_support,
10250 }
10251 }
10252}
10253
10254#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10256#[serde(rename_all = "camelCase")]
10257pub struct ShowMessageRequestClientCapabilities {
10258 #[serde(skip_serializing_if = "Option::is_none")]
10260 pub message_action_item: Option<ClientShowMessageActionItemOptions>,
10261}
10262impl ShowMessageRequestClientCapabilities {
10263 #[must_use]
10264 pub const fn new(
10265 message_action_item: Option<ClientShowMessageActionItemOptions>,
10266 ) -> Self {
10267 Self { message_action_item }
10268 }
10269}
10270
10271#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10275#[serde(rename_all = "camelCase")]
10276pub struct ShowDocumentClientCapabilities {
10277 pub support: bool,
10280}
10281impl ShowDocumentClientCapabilities {
10282 #[must_use]
10283 pub const fn new(support: bool) -> Self {
10284 Self { support }
10285 }
10286}
10287
10288#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10290#[serde(rename_all = "camelCase")]
10291pub struct StaleRequestSupportOptions {
10292 pub cancel: bool,
10294 pub retry_on_content_modified: Vec<String>,
10298}
10299impl StaleRequestSupportOptions {
10300 #[must_use]
10301 pub const fn new(cancel: bool, retry_on_content_modified: Vec<String>) -> Self {
10302 Self {
10303 cancel,
10304 retry_on_content_modified,
10305 }
10306 }
10307}
10308
10309#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10313#[serde(rename_all = "camelCase")]
10314pub struct RegularExpressionsClientCapabilities {
10315 pub engine: RegularExpressionEngineKind,
10317 #[serde(skip_serializing_if = "Option::is_none")]
10319 pub version: Option<String>,
10320}
10321impl RegularExpressionsClientCapabilities {
10322 #[must_use]
10323 pub const fn new(
10324 engine: RegularExpressionEngineKind,
10325 version: Option<String>,
10326 ) -> Self {
10327 Self { engine, version }
10328 }
10329}
10330
10331#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10335#[serde(rename_all = "camelCase")]
10336pub struct MarkdownClientCapabilities {
10337 pub parser: String,
10339 #[serde(skip_serializing_if = "Option::is_none")]
10341 pub version: Option<String>,
10342 #[serde(skip_serializing_if = "Option::is_none")]
10347 pub allowed_tags: Option<Vec<String>>,
10348}
10349impl MarkdownClientCapabilities {
10350 #[must_use]
10351 pub const fn new(
10352 parser: String,
10353 version: Option<String>,
10354 allowed_tags: Option<Vec<String>>,
10355 ) -> Self {
10356 Self {
10357 parser,
10358 version,
10359 allowed_tags,
10360 }
10361 }
10362}
10363
10364#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10368#[serde(rename_all = "camelCase")]
10369pub struct TextDocumentFilterLanguage {
10370 pub language: String,
10372 #[serde(skip_serializing_if = "Option::is_none")]
10374 pub scheme: Option<String>,
10375 #[serde(skip_serializing_if = "Option::is_none")]
10381 pub pattern: Option<GlobPattern>,
10382}
10383impl TextDocumentFilterLanguage {
10384 #[must_use]
10385 pub const fn new(
10386 language: String,
10387 scheme: Option<String>,
10388 pattern: Option<GlobPattern>,
10389 ) -> Self {
10390 Self { language, scheme, pattern }
10391 }
10392}
10393
10394#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10398#[serde(rename_all = "camelCase")]
10399pub struct TextDocumentFilterScheme {
10400 #[serde(skip_serializing_if = "Option::is_none")]
10402 pub language: Option<String>,
10403 pub scheme: String,
10405 #[serde(skip_serializing_if = "Option::is_none")]
10411 pub pattern: Option<GlobPattern>,
10412}
10413impl TextDocumentFilterScheme {
10414 #[must_use]
10415 pub const fn new(
10416 language: Option<String>,
10417 scheme: String,
10418 pattern: Option<GlobPattern>,
10419 ) -> Self {
10420 Self { language, scheme, pattern }
10421 }
10422}
10423
10424#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
10428#[serde(rename_all = "camelCase")]
10429pub struct TextDocumentFilterPattern {
10430 #[serde(skip_serializing_if = "Option::is_none")]
10432 pub language: Option<String>,
10433 #[serde(skip_serializing_if = "Option::is_none")]
10435 pub scheme: Option<String>,
10436 pub pattern: GlobPattern,
10442}
10443impl TextDocumentFilterPattern {
10444 #[must_use]
10445 pub const fn new(
10446 language: Option<String>,
10447 scheme: Option<String>,
10448 pattern: GlobPattern,
10449 ) -> Self {
10450 Self { language, scheme, pattern }
10451 }
10452}
10453
10454#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10456#[serde(rename_all = "camelCase")]
10457pub struct ChangeAnnotationsSupportOptions {
10458 #[serde(skip_serializing_if = "Option::is_none")]
10462 pub groups_on_label: Option<bool>,
10463}
10464impl ChangeAnnotationsSupportOptions {
10465 #[must_use]
10466 pub const fn new(groups_on_label: Option<bool>) -> Self {
10467 Self { groups_on_label }
10468 }
10469}
10470
10471#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10473#[serde(rename_all = "camelCase")]
10474pub struct ClientSymbolKindOptions {
10475 #[serde(skip_serializing_if = "Option::is_none")]
10484 pub value_set: Option<Vec<SymbolKind>>,
10485}
10486impl ClientSymbolKindOptions {
10487 #[must_use]
10488 pub const fn new(value_set: Option<Vec<SymbolKind>>) -> Self {
10489 Self { value_set }
10490 }
10491}
10492
10493#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10495#[serde(rename_all = "camelCase")]
10496pub struct ClientSymbolTagOptions {
10497 pub value_set: Vec<SymbolTag>,
10499}
10500impl ClientSymbolTagOptions {
10501 #[must_use]
10502 pub const fn new(value_set: Vec<SymbolTag>) -> Self {
10503 Self { value_set }
10504 }
10505}
10506
10507#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10509#[serde(rename_all = "camelCase")]
10510pub struct ClientSymbolResolveOptions {
10511 pub properties: Vec<String>,
10514}
10515impl ClientSymbolResolveOptions {
10516 #[must_use]
10517 pub const fn new(properties: Vec<String>) -> Self {
10518 Self { properties }
10519 }
10520}
10521
10522#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10524#[serde(rename_all = "camelCase")]
10525pub struct ClientCompletionItemOptions {
10526 #[serde(skip_serializing_if = "Option::is_none")]
10533 pub snippet_support: Option<bool>,
10534 #[serde(skip_serializing_if = "Option::is_none")]
10536 pub commit_characters_support: Option<bool>,
10537 #[serde(skip_serializing_if = "Option::is_none")]
10540 pub documentation_format: Option<Vec<MarkupKind>>,
10541 #[serde(skip_serializing_if = "Option::is_none")]
10543 pub deprecated_support: Option<bool>,
10544 #[serde(skip_serializing_if = "Option::is_none")]
10546 pub preselect_support: Option<bool>,
10547 #[serde(skip_serializing_if = "Option::is_none")]
10554 pub tag_support: Option<CompletionItemTagOptions>,
10555 #[serde(skip_serializing_if = "Option::is_none")]
10560 pub insert_replace_support: Option<bool>,
10561 #[serde(skip_serializing_if = "Option::is_none")]
10567 pub resolve_support: Option<ClientCompletionItemResolveOptions>,
10568 #[serde(skip_serializing_if = "Option::is_none")]
10574 pub insert_text_mode_support: Option<ClientCompletionItemInsertTextModeOptions>,
10575 #[serde(skip_serializing_if = "Option::is_none")]
10580 pub label_details_support: Option<bool>,
10581}
10582impl ClientCompletionItemOptions {
10583 #[must_use]
10584 pub const fn new(
10585 snippet_support: Option<bool>,
10586 commit_characters_support: Option<bool>,
10587 documentation_format: Option<Vec<MarkupKind>>,
10588 deprecated_support: Option<bool>,
10589 preselect_support: Option<bool>,
10590 tag_support: Option<CompletionItemTagOptions>,
10591 insert_replace_support: Option<bool>,
10592 resolve_support: Option<ClientCompletionItemResolveOptions>,
10593 insert_text_mode_support: Option<ClientCompletionItemInsertTextModeOptions>,
10594 label_details_support: Option<bool>,
10595 ) -> Self {
10596 Self {
10597 snippet_support,
10598 commit_characters_support,
10599 documentation_format,
10600 deprecated_support,
10601 preselect_support,
10602 tag_support,
10603 insert_replace_support,
10604 resolve_support,
10605 insert_text_mode_support,
10606 label_details_support,
10607 }
10608 }
10609}
10610
10611#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10613#[serde(rename_all = "camelCase")]
10614pub struct ClientCompletionItemOptionsKind {
10615 #[serde(skip_serializing_if = "Option::is_none")]
10624 pub value_set: Option<Vec<CompletionItemKind>>,
10625}
10626impl ClientCompletionItemOptionsKind {
10627 #[must_use]
10628 pub const fn new(value_set: Option<Vec<CompletionItemKind>>) -> Self {
10629 Self { value_set }
10630 }
10631}
10632
10633#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10638#[serde(rename_all = "camelCase")]
10639pub struct CompletionListCapabilities {
10640 #[serde(skip_serializing_if = "Option::is_none")]
10649 pub item_defaults: Option<Vec<String>>,
10650 #[serde(skip_serializing_if = "Option::is_none")]
10662 pub apply_kind_support: Option<bool>,
10663}
10664impl CompletionListCapabilities {
10665 #[must_use]
10666 pub const fn new(
10667 item_defaults: Option<Vec<String>>,
10668 apply_kind_support: Option<bool>,
10669 ) -> Self {
10670 Self {
10671 item_defaults,
10672 apply_kind_support,
10673 }
10674 }
10675}
10676
10677#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10679#[serde(rename_all = "camelCase")]
10680pub struct ClientSignatureInformationOptions {
10681 #[serde(skip_serializing_if = "Option::is_none")]
10684 pub documentation_format: Option<Vec<MarkupKind>>,
10685 #[serde(skip_serializing_if = "Option::is_none")]
10687 pub parameter_information: Option<ClientSignatureParameterInformationOptions>,
10688 #[serde(skip_serializing_if = "Option::is_none")]
10693 pub active_parameter_support: Option<bool>,
10694 #[serde(skip_serializing_if = "Option::is_none")]
10700 pub no_active_parameter_support: Option<bool>,
10701}
10702impl ClientSignatureInformationOptions {
10703 #[must_use]
10704 pub const fn new(
10705 documentation_format: Option<Vec<MarkupKind>>,
10706 parameter_information: Option<ClientSignatureParameterInformationOptions>,
10707 active_parameter_support: Option<bool>,
10708 no_active_parameter_support: Option<bool>,
10709 ) -> Self {
10710 Self {
10711 documentation_format,
10712 parameter_information,
10713 active_parameter_support,
10714 no_active_parameter_support,
10715 }
10716 }
10717}
10718
10719#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10721#[serde(rename_all = "camelCase")]
10722pub struct ClientCodeActionLiteralOptions {
10723 pub code_action_kind: ClientCodeActionKindOptions,
10726}
10727impl ClientCodeActionLiteralOptions {
10728 #[must_use]
10729 pub const fn new(code_action_kind: ClientCodeActionKindOptions) -> Self {
10730 Self { code_action_kind }
10731 }
10732}
10733
10734#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10736#[serde(rename_all = "camelCase")]
10737pub struct ClientCodeActionResolveOptions {
10738 pub properties: Vec<String>,
10740}
10741impl ClientCodeActionResolveOptions {
10742 #[must_use]
10743 pub const fn new(properties: Vec<String>) -> Self {
10744 Self { properties }
10745 }
10746}
10747
10748#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10750#[serde(rename_all = "camelCase")]
10751pub struct CodeActionTagOptions {
10752 pub value_set: Vec<CodeActionTag>,
10754}
10755impl CodeActionTagOptions {
10756 #[must_use]
10757 pub const fn new(value_set: Vec<CodeActionTag>) -> Self {
10758 Self { value_set }
10759 }
10760}
10761
10762#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10764#[serde(rename_all = "camelCase")]
10765pub struct ClientCodeLensResolveOptions {
10766 pub properties: Vec<String>,
10768}
10769impl ClientCodeLensResolveOptions {
10770 #[must_use]
10771 pub const fn new(properties: Vec<String>) -> Self {
10772 Self { properties }
10773 }
10774}
10775
10776#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10778#[serde(rename_all = "camelCase")]
10779pub struct ClientFoldingRangeKindOptions {
10780 #[serde(skip_serializing_if = "Option::is_none")]
10785 pub value_set: Option<Vec<FoldingRangeKind>>,
10786}
10787impl ClientFoldingRangeKindOptions {
10788 #[must_use]
10789 pub const fn new(value_set: Option<Vec<FoldingRangeKind>>) -> Self {
10790 Self { value_set }
10791 }
10792}
10793
10794#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10796#[serde(rename_all = "camelCase")]
10797pub struct ClientFoldingRangeOptions {
10798 #[serde(skip_serializing_if = "Option::is_none")]
10803 pub collapsed_text: Option<bool>,
10804}
10805impl ClientFoldingRangeOptions {
10806 #[must_use]
10807 pub const fn new(collapsed_text: Option<bool>) -> Self {
10808 Self { collapsed_text }
10809 }
10810}
10811
10812#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10814#[serde(rename_all = "camelCase")]
10815pub struct DiagnosticsCapabilities {
10816 #[serde(skip_serializing_if = "Option::is_none")]
10818 pub related_information: Option<bool>,
10819 #[serde(skip_serializing_if = "Option::is_none")]
10824 pub tag_support: Option<ClientDiagnosticsTagOptions>,
10825 #[serde(skip_serializing_if = "Option::is_none")]
10829 pub code_description_support: Option<bool>,
10830 #[serde(skip_serializing_if = "Option::is_none")]
10836 pub data_support: Option<bool>,
10837}
10838impl DiagnosticsCapabilities {
10839 #[must_use]
10840 pub const fn new(
10841 related_information: Option<bool>,
10842 tag_support: Option<ClientDiagnosticsTagOptions>,
10843 code_description_support: Option<bool>,
10844 data_support: Option<bool>,
10845 ) -> Self {
10846 Self {
10847 related_information,
10848 tag_support,
10849 code_description_support,
10850 data_support,
10851 }
10852 }
10853}
10854
10855#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10857#[serde(rename_all = "camelCase")]
10858pub struct ClientSemanticTokensRequestOptions {
10859 #[serde(skip_serializing_if = "Option::is_none")]
10862 pub range: Option<ClientSemanticTokensRequestOptionsRange>,
10863 #[serde(skip_serializing_if = "Option::is_none")]
10866 pub full: Option<ClientSemanticTokensRequestOptionsFull>,
10867}
10868impl ClientSemanticTokensRequestOptions {
10869 #[must_use]
10870 pub const fn new(
10871 range: Option<ClientSemanticTokensRequestOptionsRange>,
10872 full: Option<ClientSemanticTokensRequestOptionsFull>,
10873 ) -> Self {
10874 Self { range, full }
10875 }
10876}
10877
10878#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10880#[serde(rename_all = "camelCase")]
10881pub struct ClientInlayHintResolveOptions {
10882 pub properties: Vec<String>,
10884}
10885impl ClientInlayHintResolveOptions {
10886 #[must_use]
10887 pub const fn new(properties: Vec<String>) -> Self {
10888 Self { properties }
10889 }
10890}
10891
10892#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10894#[serde(rename_all = "camelCase")]
10895pub struct ClientShowMessageActionItemOptions {
10896 #[serde(skip_serializing_if = "Option::is_none")]
10900 pub additional_properties_support: Option<bool>,
10901}
10902impl ClientShowMessageActionItemOptions {
10903 #[must_use]
10904 pub const fn new(additional_properties_support: Option<bool>) -> Self {
10905 Self {
10906 additional_properties_support,
10907 }
10908 }
10909}
10910
10911#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10913#[serde(rename_all = "camelCase")]
10914pub struct CompletionItemTagOptions {
10915 pub value_set: Vec<CompletionItemTag>,
10917}
10918impl CompletionItemTagOptions {
10919 #[must_use]
10920 pub const fn new(value_set: Vec<CompletionItemTag>) -> Self {
10921 Self { value_set }
10922 }
10923}
10924
10925#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10927#[serde(rename_all = "camelCase")]
10928pub struct ClientCompletionItemResolveOptions {
10929 pub properties: Vec<String>,
10931}
10932impl ClientCompletionItemResolveOptions {
10933 #[must_use]
10934 pub const fn new(properties: Vec<String>) -> Self {
10935 Self { properties }
10936 }
10937}
10938
10939#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10941#[serde(rename_all = "camelCase")]
10942pub struct ClientCompletionItemInsertTextModeOptions {
10943 pub value_set: Vec<InsertTextMode>,
10944}
10945impl ClientCompletionItemInsertTextModeOptions {
10946 #[must_use]
10947 pub const fn new(value_set: Vec<InsertTextMode>) -> Self {
10948 Self { value_set }
10949 }
10950}
10951
10952#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
10954#[serde(rename_all = "camelCase")]
10955pub struct ClientSignatureParameterInformationOptions {
10956 #[serde(skip_serializing_if = "Option::is_none")]
10961 pub label_offset_support: Option<bool>,
10962}
10963impl ClientSignatureParameterInformationOptions {
10964 #[must_use]
10965 pub const fn new(label_offset_support: Option<bool>) -> Self {
10966 Self { label_offset_support }
10967 }
10968}
10969
10970#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10972#[serde(rename_all = "camelCase")]
10973pub struct ClientCodeActionKindOptions {
10974 pub value_set: Vec<CodeActionKind>,
10979}
10980impl ClientCodeActionKindOptions {
10981 #[must_use]
10982 pub const fn new(value_set: Vec<CodeActionKind>) -> Self {
10983 Self { value_set }
10984 }
10985}
10986
10987#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
10989#[serde(rename_all = "camelCase")]
10990pub struct ClientDiagnosticsTagOptions {
10991 pub value_set: Vec<DiagnosticTag>,
10993}
10994impl ClientDiagnosticsTagOptions {
10995 #[must_use]
10996 pub const fn new(value_set: Vec<DiagnosticTag>) -> Self {
10997 Self { value_set }
10998 }
10999}
11000
11001#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
11003#[serde(rename_all = "camelCase")]
11004pub struct ClientSemanticTokensRequestFullDelta {
11005 #[serde(skip_serializing_if = "Option::is_none")]
11008 pub delta: Option<bool>,
11009}
11010impl ClientSemanticTokensRequestFullDelta {
11011 #[must_use]
11012 pub const fn new(delta: Option<bool>) -> Self {
11013 Self { delta }
11014 }
11015}
11016
11017impl Default for Message {
11018 fn default() -> Self {
11019 Message::String(String::default())
11020 }
11021}
11022#[derive(Debug, Eq, PartialEq, Copy, Clone, Default, Hash)]
11024pub struct SemanticToken {
11025 pub delta_line: u32,
11027 pub delta_start: u32,
11030 pub length: u32,
11032 pub token_type: u32,
11035 pub token_modifiers_bitset: u32,
11037}
11038impl From<[u32; 5]> for SemanticToken {
11039 fn from(slice: [u32; 5]) -> Self {
11040 Self {
11041 delta_line: slice[0],
11042 delta_start: slice[1],
11043 length: slice[2],
11044 token_type: slice[3],
11045 token_modifiers_bitset: slice[4],
11046 }
11047 }
11048}
11049impl From<SemanticToken> for [u32; 5] {
11050 fn from(token: SemanticToken) -> Self {
11051 [
11052 token.delta_line,
11053 token.delta_start,
11054 token.length,
11055 token.token_type,
11056 token.token_modifiers_bitset,
11057 ]
11058 }
11059}
11060impl SemanticToken {
11061 fn deserialize_tokens<'de, D>(
11062 deserializer: D,
11063 ) -> Result<Vec<SemanticToken>, D::Error>
11064 where
11065 D: serde::Deserializer<'de>,
11066 {
11067 let data = Vec::<u32>::deserialize(deserializer)?;
11068 let chunks = data.chunks_exact(5);
11069 if !chunks.remainder().is_empty() {
11070 return Result::Err(serde::de::Error::custom("Length is not divisible by 5"));
11071 }
11072 Result::Ok(
11073 chunks
11074 .map(|chunk| Self {
11075 delta_line: chunk[0],
11076 delta_start: chunk[1],
11077 length: chunk[2],
11078 token_type: chunk[3],
11079 token_modifiers_bitset: chunk[4],
11080 })
11081 .collect(),
11082 )
11083 }
11084 fn serialize_tokens<S>(
11085 tokens: &[SemanticToken],
11086 serializer: S,
11087 ) -> Result<S::Ok, S::Error>
11088 where
11089 S: serde::Serializer,
11090 {
11091 let mut seq = serializer.serialize_seq(Some(tokens.len() * 5))?;
11092 for token in tokens {
11093 seq.serialize_element(&token.delta_line)?;
11094 seq.serialize_element(&token.delta_start)?;
11095 seq.serialize_element(&token.length)?;
11096 seq.serialize_element(&token.token_type)?;
11097 seq.serialize_element(&token.token_modifiers_bitset)?;
11098 }
11099 seq.end()
11100 }
11101}
11102#[derive(Debug, Eq, Hash, PartialEq, Clone, Deserialize, Serialize)]
11103#[serde(untagged)]
11104pub enum MessageActionItemProperty {
11105 String(String),
11106 Bool(bool),
11107 Int(i32),
11108 Object(LspObject),
11109}