Skip to main content

lsp_max_protocol/
lsp_3_18.rs

1//! Generated from the official LSP meta-model.
2//! Do not hand-edit generated protocol vocabulary.
3#![cfg_attr(rustfmt, rustfmt_skip)]
4#![allow(clippy::large_enum_variant)]
5#![allow(clippy::enum_variant_names)]
6#![allow(clippy::upper_case_acronyms)]
7#![allow(clippy::doc_lazy_continuation)]
8#![allow(clippy::derive_partial_eq_without_eq)]
9#![allow(dead_code)]
10#![allow(unused_imports)]
11#![allow(non_upper_case_globals)]
12use serde::{Deserialize, Serialize};
13use serde_json::Value as LspAny;
14pub const LSP_SPEC_VERSION: &str = "3.18.0";
15pub type URI = String;
16pub type DocumentUri = String;
17pub type RegExp = String;
18pub type Integer = i32;
19pub type Uinteger = u32;
20pub type Decimal = f64;
21/**The definition of a symbol represented as one or many {@link Location locations}.
22For most programming languages there is only one location at which a symbol is
23defined.
24
25Servers should prefer returning `DefinitionLink` over `Definition` if supported
26by the client.*/
27pub type Definition = LocationOrLocationArray;
28/**Information about where a symbol is defined.
29
30Provides additional metadata over normal {@link Location location} definitions, including the range of
31the defining symbol*/
32pub type DefinitionLink = LocationLink;
33/**LSP arrays.
34@since 3.17.0*/
35pub type LSPArray = Vec<LSPAny>;
36/**The LSP any type.
37Please note that strictly speaking a property with the value `undefined`
38can't be converted into JSON preserving the property name. However for
39convenience it is allowed and assumed that all these properties are
40optional as well.
41@since 3.17.0*/
42pub type LSPAny = Option<
43    BooleanOrDecimalOrIntegerOrLSPArrayOrLSPObjectOrStringOrUinteger,
44>;
45///The declaration of a symbol representation as one or many {@link Location locations}.
46pub type Declaration = LocationOrLocationArray;
47/**Information about where a symbol is declared.
48
49Provides additional metadata over normal {@link Location location} declarations, including the range of
50the declaring symbol.
51
52Servers should prefer returning `DeclarationLink` over `Declaration` if supported
53by the client.*/
54pub type DeclarationLink = LocationLink;
55/**Inline value information can be provided by different means:
56- directly as a text value (class InlineValueText).
57- as a name to use for a variable lookup (class InlineValueVariableLookup)
58- as an evaluatable expression (class InlineValueEvaluatableExpression)
59The InlineValue types combines all inline value types into one type.
60
61@since 3.17.0*/
62pub type InlineValue = InlineValueEvaluatableExpressionOrInlineValueTextOrInlineValueVariableLookup;
63/**The result of a document diagnostic pull request. A report can
64either be a full report containing all diagnostics for the
65requested document or an unchanged report indicating that nothing
66has changed in terms of diagnostics in comparison to the last
67pull request.
68
69@since 3.17.0*/
70pub type DocumentDiagnosticReport = RelatedFullDocumentDiagnosticReportOrRelatedUnchangedDocumentDiagnosticReport;
71pub type PrepareRenameResult = PrepareRenameDefaultBehaviorOrPrepareRenamePlaceholderOrRange;
72/**A document selector is the combination of one or many document filters.
73
74@sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`;
75
76The use of a string as a document filter is deprecated @since 3.16.0.*/
77pub type DocumentSelector = Vec<DocumentFilter>;
78pub type ProgressToken = IntegerOrString;
79///An identifier to refer to a change annotation stored with a workspace edit.
80pub type ChangeAnnotationIdentifier = String;
81/**A workspace diagnostic document report.
82
83@since 3.17.0*/
84pub type WorkspaceDocumentDiagnosticReport = WorkspaceFullDocumentDiagnosticReportOrWorkspaceUnchangedDocumentDiagnosticReport;
85/**An event describing a change to a text document. If only a text is provided
86it is considered to be the full content of the document.*/
87pub type TextDocumentContentChangeEvent = TextDocumentContentChangePartialOrTextDocumentContentChangeWholeDocument;
88/**MarkedString can be used to render human readable text. It is either a markdown string
89or a code-block that provides a language and a code snippet. The language identifier
90is semantically equal to the optional language identifier in fenced code blocks in GitHub
91issues. See <https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting>
92
93The pair of a language and a value is an equivalent to markdown:
94```text
95${language}
96${value}
97```
98
99Note that markdown strings will be sanitized - that means html will be escaped.
100@deprecated use MarkupContent instead.*/
101pub type MarkedString = MarkedStringWithLanguageOrString;
102/**A document filter describes a top level text document or
103a notebook cell document.
104
105@since 3.17.0 - support for NotebookCellTextDocumentFilter.*/
106pub type DocumentFilter = NotebookCellTextDocumentFilterOrTextDocumentFilter;
107/**LSP object definition.
108@since 3.17.0*/
109pub type LSPObject = std::collections::BTreeMap<String, LSPAny>;
110/**The glob pattern. Either a string pattern or a relative pattern.
111
112@since 3.17.0*/
113pub type GlobPattern = PatternOrRelativePattern;
114#[doc = "A document filter denotes a document by different properties like\nthe {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of\nits resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}.\n\nGlob patterns can have the following syntax:\n- `*` to match zero or more characters in a path segment\n- `?` to match on one character in a path segment\n- `**` to match any number of path segments, including none\n- `{}` to group sub patterns into an OR expression. (e.g. `**\u{200b}/*.{ts,js}` matches all TypeScript and JavaScript files)\n- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)\n- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)\n\n@sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }`\n@sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }`\n\n@since 3.17.0"]
115pub type TextDocumentFilter = TextDocumentFilterLanguageOrTextDocumentFilterPatternOrTextDocumentFilterScheme;
116/**A notebook document filter denotes a notebook document by
117different properties. The properties will be match
118against the notebook's URI (same as with documents)
119
120@since 3.17.0*/
121pub type NotebookDocumentFilter = NotebookDocumentFilterNotebookTypeOrNotebookDocumentFilterPatternOrNotebookDocumentFilterScheme;
122#[doc = "The glob pattern to watch relative to the base path. Glob patterns can have the following syntax:\n- `*` to match zero or more characters in a path segment\n- `?` to match on one character in a path segment\n- `**` to match any number of path segments, including none\n- `{}` to group conditions (e.g. `**\u{200b}/*.{ts,js}` matches all TypeScript and JavaScript files)\n- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)\n- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)\n\n@since 3.17.0"]
123pub type Pattern = String;
124pub type RegularExpressionEngineKind = String;
125/**A set of predefined token types. This set is not fixed
126an clients can specify additional token types via the
127corresponding client capabilities.
128
129@since 3.16.0*/
130#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
131#[serde(transparent)]
132pub struct SemanticTokenTypes(pub String);
133impl SemanticTokenTypes {
134    pub const NAMESPACE: &'static str = "namespace";
135    pub const TYPE: &'static str = "type";
136    pub const CLASS: &'static str = "class";
137    pub const ENUM: &'static str = "enum";
138    pub const INTERFACE: &'static str = "interface";
139    pub const STRUCT: &'static str = "struct";
140    pub const TYPE_PARAMETER: &'static str = "typeParameter";
141    pub const PARAMETER: &'static str = "parameter";
142    pub const VARIABLE: &'static str = "variable";
143    pub const PROPERTY: &'static str = "property";
144    pub const ENUM_MEMBER: &'static str = "enumMember";
145    pub const EVENT: &'static str = "event";
146    pub const FUNCTION: &'static str = "function";
147    pub const METHOD: &'static str = "method";
148    pub const MACRO: &'static str = "macro";
149    pub const KEYWORD: &'static str = "keyword";
150    pub const MODIFIER: &'static str = "modifier";
151    pub const COMMENT: &'static str = "comment";
152    pub const STRING: &'static str = "string";
153    pub const NUMBER: &'static str = "number";
154    pub const REGEXP: &'static str = "regexp";
155    pub const OPERATOR: &'static str = "operator";
156    pub const DECORATOR: &'static str = "decorator";
157    pub const LABEL: &'static str = "label";
158}
159/**A set of predefined token modifiers. This set is not fixed
160an clients can specify additional token types via the
161corresponding client capabilities.
162
163@since 3.16.0*/
164#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
165#[serde(transparent)]
166pub struct SemanticTokenModifiers(pub String);
167impl SemanticTokenModifiers {
168    pub const DECLARATION: &'static str = "declaration";
169    pub const DEFINITION: &'static str = "definition";
170    pub const READONLY: &'static str = "readonly";
171    pub const STATIC: &'static str = "static";
172    pub const DEPRECATED: &'static str = "deprecated";
173    pub const ABSTRACT: &'static str = "abstract";
174    pub const ASYNC: &'static str = "async";
175    pub const MODIFICATION: &'static str = "modification";
176    pub const DOCUMENTATION: &'static str = "documentation";
177    pub const DEFAULT_LIBRARY: &'static str = "defaultLibrary";
178}
179/**The document diagnostic report kinds.
180
181@since 3.17.0*/
182#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
183pub enum DocumentDiagnosticReportKind {
184    /**A diagnostic report with a full
185set of problems.*/
186    #[serde(rename = "full")]
187    Full,
188    /**A report indicating that the last
189returned report is still accurate.*/
190    #[serde(rename = "unchanged")]
191    Unchanged,
192}
193///Predefined error codes.
194#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
195#[serde(transparent)]
196pub struct ErrorCodes(pub i32);
197impl ErrorCodes {
198    pub const PARSE_ERROR: i32 = -32700;
199    pub const INVALID_REQUEST: i32 = -32600;
200    pub const METHOD_NOT_FOUND: i32 = -32601;
201    pub const INVALID_PARAMS: i32 = -32602;
202    pub const INTERNAL_ERROR: i32 = -32603;
203    pub const SERVER_NOT_INITIALIZED: i32 = -32002;
204    pub const UNKNOWN_ERROR_CODE: i32 = -32001;
205}
206#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
207#[serde(transparent)]
208pub struct LSPErrorCodes(pub i32);
209impl LSPErrorCodes {
210    pub const REQUEST_FAILED: i32 = -32803;
211    pub const SERVER_CANCELLED: i32 = -32802;
212    pub const CONTENT_MODIFIED: i32 = -32801;
213    pub const REQUEST_CANCELLED: i32 = -32800;
214}
215///A set of predefined range kinds.
216#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
217#[serde(transparent)]
218pub struct FoldingRangeKind(pub String);
219impl FoldingRangeKind {
220    pub const COMMENT: &'static str = "comment";
221    pub const IMPORTS: &'static str = "imports";
222    pub const REGION: &'static str = "region";
223}
224///A symbol kind.
225#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
226pub enum SymbolKind {
227    File,
228    Module,
229    Namespace,
230    Package,
231    Class,
232    Method,
233    Property,
234    Field,
235    Constructor,
236    Enum,
237    Interface,
238    Function,
239    Variable,
240    Constant,
241    String,
242    Number,
243    Boolean,
244    Array,
245    Object,
246    Key,
247    Null,
248    EnumMember,
249    Struct,
250    Event,
251    Operator,
252    TypeParameter,
253}
254impl serde::Serialize for SymbolKind {
255    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
256    where
257        S: serde::Serializer,
258    {
259        match self {
260            Self::File => serializer.serialize_i64(1i64),
261            Self::Module => serializer.serialize_i64(2i64),
262            Self::Namespace => serializer.serialize_i64(3i64),
263            Self::Package => serializer.serialize_i64(4i64),
264            Self::Class => serializer.serialize_i64(5i64),
265            Self::Method => serializer.serialize_i64(6i64),
266            Self::Property => serializer.serialize_i64(7i64),
267            Self::Field => serializer.serialize_i64(8i64),
268            Self::Constructor => serializer.serialize_i64(9i64),
269            Self::Enum => serializer.serialize_i64(10i64),
270            Self::Interface => serializer.serialize_i64(11i64),
271            Self::Function => serializer.serialize_i64(12i64),
272            Self::Variable => serializer.serialize_i64(13i64),
273            Self::Constant => serializer.serialize_i64(14i64),
274            Self::String => serializer.serialize_i64(15i64),
275            Self::Number => serializer.serialize_i64(16i64),
276            Self::Boolean => serializer.serialize_i64(17i64),
277            Self::Array => serializer.serialize_i64(18i64),
278            Self::Object => serializer.serialize_i64(19i64),
279            Self::Key => serializer.serialize_i64(20i64),
280            Self::Null => serializer.serialize_i64(21i64),
281            Self::EnumMember => serializer.serialize_i64(22i64),
282            Self::Struct => serializer.serialize_i64(23i64),
283            Self::Event => serializer.serialize_i64(24i64),
284            Self::Operator => serializer.serialize_i64(25i64),
285            Self::TypeParameter => serializer.serialize_i64(26i64),
286        }
287    }
288}
289impl<'de> serde::Deserialize<'de> for SymbolKind {
290    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
291    where
292        D: serde::Deserializer<'de>,
293    {
294        struct Visitor;
295        impl<'de> serde::de::Visitor<'de> for Visitor {
296            type Value = SymbolKind;
297            fn expecting(
298                &self,
299                formatter: &mut std::fmt::Formatter,
300            ) -> std::fmt::Result {
301                formatter.write_str("a number representing the enum")
302            }
303            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
304            where
305                E: serde::de::Error,
306            {
307                match value {
308                    1i64 => Ok(SymbolKind::File),
309                    2i64 => Ok(SymbolKind::Module),
310                    3i64 => Ok(SymbolKind::Namespace),
311                    4i64 => Ok(SymbolKind::Package),
312                    5i64 => Ok(SymbolKind::Class),
313                    6i64 => Ok(SymbolKind::Method),
314                    7i64 => Ok(SymbolKind::Property),
315                    8i64 => Ok(SymbolKind::Field),
316                    9i64 => Ok(SymbolKind::Constructor),
317                    10i64 => Ok(SymbolKind::Enum),
318                    11i64 => Ok(SymbolKind::Interface),
319                    12i64 => Ok(SymbolKind::Function),
320                    13i64 => Ok(SymbolKind::Variable),
321                    14i64 => Ok(SymbolKind::Constant),
322                    15i64 => Ok(SymbolKind::String),
323                    16i64 => Ok(SymbolKind::Number),
324                    17i64 => Ok(SymbolKind::Boolean),
325                    18i64 => Ok(SymbolKind::Array),
326                    19i64 => Ok(SymbolKind::Object),
327                    20i64 => Ok(SymbolKind::Key),
328                    21i64 => Ok(SymbolKind::Null),
329                    22i64 => Ok(SymbolKind::EnumMember),
330                    23i64 => Ok(SymbolKind::Struct),
331                    24i64 => Ok(SymbolKind::Event),
332                    25i64 => Ok(SymbolKind::Operator),
333                    26i64 => Ok(SymbolKind::TypeParameter),
334                    _ => Err(E::custom(format!("unknown variant: {}", value))),
335                }
336            }
337            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
338            where
339                E: serde::de::Error,
340            {
341                self.visit_i64(value as i64)
342            }
343        }
344        deserializer.deserialize_i64(Visitor)
345    }
346}
347/**Symbol tags are extra annotations that tweak the rendering of a symbol.
348
349@since 3.16*/
350#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
351pub enum SymbolTag {
352    ///Render a symbol as obsolete, usually using a strike-out.
353    Deprecated,
354}
355impl serde::Serialize for SymbolTag {
356    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
357    where
358        S: serde::Serializer,
359    {
360        match self {
361            Self::Deprecated => serializer.serialize_i64(1i64),
362        }
363    }
364}
365impl<'de> serde::Deserialize<'de> for SymbolTag {
366    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
367    where
368        D: serde::Deserializer<'de>,
369    {
370        struct Visitor;
371        impl<'de> serde::de::Visitor<'de> for Visitor {
372            type Value = SymbolTag;
373            fn expecting(
374                &self,
375                formatter: &mut std::fmt::Formatter,
376            ) -> std::fmt::Result {
377                formatter.write_str("a number representing the enum")
378            }
379            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
380            where
381                E: serde::de::Error,
382            {
383                match value {
384                    1i64 => Ok(SymbolTag::Deprecated),
385                    _ => Err(E::custom(format!("unknown variant: {}", value))),
386                }
387            }
388            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
389            where
390                E: serde::de::Error,
391            {
392                self.visit_i64(value as i64)
393            }
394        }
395        deserializer.deserialize_i64(Visitor)
396    }
397}
398/**Moniker uniqueness level to define scope of the moniker.
399
400@since 3.16.0*/
401#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
402pub enum UniquenessLevel {
403    ///The moniker is only unique inside a document
404    #[serde(rename = "document")]
405    Document,
406    ///The moniker is unique inside a project for which a dump got created
407    #[serde(rename = "project")]
408    Project,
409    ///The moniker is unique inside the group to which a project belongs
410    #[serde(rename = "group")]
411    Group,
412    ///The moniker is unique inside the moniker scheme.
413    #[serde(rename = "scheme")]
414    Scheme,
415    ///The moniker is globally unique
416    #[serde(rename = "global")]
417    Global,
418}
419/**The moniker kind.
420
421@since 3.16.0*/
422#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
423pub enum MonikerKind {
424    ///The moniker represent a symbol that is imported into a project
425    #[serde(rename = "import")]
426    Import,
427    ///The moniker represents a symbol that is exported from a project
428    #[serde(rename = "export")]
429    Export,
430    /**The moniker represents a symbol that is local to a project (e.g. a local
431variable of a function, a class not visible outside the project, ...)*/
432    #[serde(rename = "local")]
433    Local,
434}
435/**Inlay hint kinds.
436
437@since 3.17.0*/
438#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
439pub enum InlayHintKind {
440    ///An inlay hint that for a type annotation.
441    Type,
442    ///An inlay hint that is for a parameter.
443    Parameter,
444}
445impl serde::Serialize for InlayHintKind {
446    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
447    where
448        S: serde::Serializer,
449    {
450        match self {
451            Self::Type => serializer.serialize_i64(1i64),
452            Self::Parameter => serializer.serialize_i64(2i64),
453        }
454    }
455}
456impl<'de> serde::Deserialize<'de> for InlayHintKind {
457    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
458    where
459        D: serde::Deserializer<'de>,
460    {
461        struct Visitor;
462        impl<'de> serde::de::Visitor<'de> for Visitor {
463            type Value = InlayHintKind;
464            fn expecting(
465                &self,
466                formatter: &mut std::fmt::Formatter,
467            ) -> std::fmt::Result {
468                formatter.write_str("a number representing the enum")
469            }
470            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
471            where
472                E: serde::de::Error,
473            {
474                match value {
475                    1i64 => Ok(InlayHintKind::Type),
476                    2i64 => Ok(InlayHintKind::Parameter),
477                    _ => Err(E::custom(format!("unknown variant: {}", value))),
478                }
479            }
480            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
481            where
482                E: serde::de::Error,
483            {
484                self.visit_i64(value as i64)
485            }
486        }
487        deserializer.deserialize_i64(Visitor)
488    }
489}
490///The message type
491#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
492pub enum MessageType {
493    ///An error message.
494    Error,
495    ///A warning message.
496    Warning,
497    ///An information message.
498    Info,
499    ///A log message.
500    Log,
501    /**A debug message.
502
503@since 3.18.0*/
504    Debug,
505}
506impl serde::Serialize for MessageType {
507    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
508    where
509        S: serde::Serializer,
510    {
511        match self {
512            Self::Error => serializer.serialize_i64(1i64),
513            Self::Warning => serializer.serialize_i64(2i64),
514            Self::Info => serializer.serialize_i64(3i64),
515            Self::Log => serializer.serialize_i64(4i64),
516            Self::Debug => serializer.serialize_i64(5i64),
517        }
518    }
519}
520impl<'de> serde::Deserialize<'de> for MessageType {
521    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
522    where
523        D: serde::Deserializer<'de>,
524    {
525        struct Visitor;
526        impl<'de> serde::de::Visitor<'de> for Visitor {
527            type Value = MessageType;
528            fn expecting(
529                &self,
530                formatter: &mut std::fmt::Formatter,
531            ) -> std::fmt::Result {
532                formatter.write_str("a number representing the enum")
533            }
534            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
535            where
536                E: serde::de::Error,
537            {
538                match value {
539                    1i64 => Ok(MessageType::Error),
540                    2i64 => Ok(MessageType::Warning),
541                    3i64 => Ok(MessageType::Info),
542                    4i64 => Ok(MessageType::Log),
543                    5i64 => Ok(MessageType::Debug),
544                    _ => Err(E::custom(format!("unknown variant: {}", value))),
545                }
546            }
547            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
548            where
549                E: serde::de::Error,
550            {
551                self.visit_i64(value as i64)
552            }
553        }
554        deserializer.deserialize_i64(Visitor)
555    }
556}
557/**Defines how the host (editor) should sync
558document changes to the language server.*/
559#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
560pub enum TextDocumentSyncKind {
561    ///Documents should not be synced at all.
562    None,
563    /**Documents are synced by always sending the full content
564of the document.*/
565    Full,
566    /**Documents are synced by sending the full content on open.
567After that only incremental updates to the document are
568send.*/
569    Incremental,
570}
571impl serde::Serialize for TextDocumentSyncKind {
572    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
573    where
574        S: serde::Serializer,
575    {
576        match self {
577            Self::None => serializer.serialize_i64(0i64),
578            Self::Full => serializer.serialize_i64(1i64),
579            Self::Incremental => serializer.serialize_i64(2i64),
580        }
581    }
582}
583impl<'de> serde::Deserialize<'de> for TextDocumentSyncKind {
584    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
585    where
586        D: serde::Deserializer<'de>,
587    {
588        struct Visitor;
589        impl<'de> serde::de::Visitor<'de> for Visitor {
590            type Value = TextDocumentSyncKind;
591            fn expecting(
592                &self,
593                formatter: &mut std::fmt::Formatter,
594            ) -> std::fmt::Result {
595                formatter.write_str("a number representing the enum")
596            }
597            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
598            where
599                E: serde::de::Error,
600            {
601                match value {
602                    0i64 => Ok(TextDocumentSyncKind::None),
603                    1i64 => Ok(TextDocumentSyncKind::Full),
604                    2i64 => Ok(TextDocumentSyncKind::Incremental),
605                    _ => Err(E::custom(format!("unknown variant: {}", value))),
606                }
607            }
608            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
609            where
610                E: serde::de::Error,
611            {
612                self.visit_i64(value as i64)
613            }
614        }
615        deserializer.deserialize_i64(Visitor)
616    }
617}
618///Represents reasons why a text document is saved.
619#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
620pub enum TextDocumentSaveReason {
621    /**Manually triggered, e.g. by the user pressing save, by starting debugging,
622or by an API call.*/
623    Manual,
624    ///Automatic after a delay.
625    AfterDelay,
626    ///When the editor lost focus.
627    FocusOut,
628}
629impl serde::Serialize for TextDocumentSaveReason {
630    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
631    where
632        S: serde::Serializer,
633    {
634        match self {
635            Self::Manual => serializer.serialize_i64(1i64),
636            Self::AfterDelay => serializer.serialize_i64(2i64),
637            Self::FocusOut => serializer.serialize_i64(3i64),
638        }
639    }
640}
641impl<'de> serde::Deserialize<'de> for TextDocumentSaveReason {
642    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
643    where
644        D: serde::Deserializer<'de>,
645    {
646        struct Visitor;
647        impl<'de> serde::de::Visitor<'de> for Visitor {
648            type Value = TextDocumentSaveReason;
649            fn expecting(
650                &self,
651                formatter: &mut std::fmt::Formatter,
652            ) -> std::fmt::Result {
653                formatter.write_str("a number representing the enum")
654            }
655            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
656            where
657                E: serde::de::Error,
658            {
659                match value {
660                    1i64 => Ok(TextDocumentSaveReason::Manual),
661                    2i64 => Ok(TextDocumentSaveReason::AfterDelay),
662                    3i64 => Ok(TextDocumentSaveReason::FocusOut),
663                    _ => Err(E::custom(format!("unknown variant: {}", value))),
664                }
665            }
666            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
667            where
668                E: serde::de::Error,
669            {
670                self.visit_i64(value as i64)
671            }
672        }
673        deserializer.deserialize_i64(Visitor)
674    }
675}
676///The kind of a completion entry.
677#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
678pub enum CompletionItemKind {
679    Text,
680    Method,
681    Function,
682    Constructor,
683    Field,
684    Variable,
685    Class,
686    Interface,
687    Module,
688    Property,
689    Unit,
690    Value,
691    Enum,
692    Keyword,
693    Snippet,
694    Color,
695    File,
696    Reference,
697    Folder,
698    EnumMember,
699    Constant,
700    Struct,
701    Event,
702    Operator,
703    TypeParameter,
704}
705impl serde::Serialize for CompletionItemKind {
706    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
707    where
708        S: serde::Serializer,
709    {
710        match self {
711            Self::Text => serializer.serialize_i64(1i64),
712            Self::Method => serializer.serialize_i64(2i64),
713            Self::Function => serializer.serialize_i64(3i64),
714            Self::Constructor => serializer.serialize_i64(4i64),
715            Self::Field => serializer.serialize_i64(5i64),
716            Self::Variable => serializer.serialize_i64(6i64),
717            Self::Class => serializer.serialize_i64(7i64),
718            Self::Interface => serializer.serialize_i64(8i64),
719            Self::Module => serializer.serialize_i64(9i64),
720            Self::Property => serializer.serialize_i64(10i64),
721            Self::Unit => serializer.serialize_i64(11i64),
722            Self::Value => serializer.serialize_i64(12i64),
723            Self::Enum => serializer.serialize_i64(13i64),
724            Self::Keyword => serializer.serialize_i64(14i64),
725            Self::Snippet => serializer.serialize_i64(15i64),
726            Self::Color => serializer.serialize_i64(16i64),
727            Self::File => serializer.serialize_i64(17i64),
728            Self::Reference => serializer.serialize_i64(18i64),
729            Self::Folder => serializer.serialize_i64(19i64),
730            Self::EnumMember => serializer.serialize_i64(20i64),
731            Self::Constant => serializer.serialize_i64(21i64),
732            Self::Struct => serializer.serialize_i64(22i64),
733            Self::Event => serializer.serialize_i64(23i64),
734            Self::Operator => serializer.serialize_i64(24i64),
735            Self::TypeParameter => serializer.serialize_i64(25i64),
736        }
737    }
738}
739impl<'de> serde::Deserialize<'de> for CompletionItemKind {
740    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
741    where
742        D: serde::Deserializer<'de>,
743    {
744        struct Visitor;
745        impl<'de> serde::de::Visitor<'de> for Visitor {
746            type Value = CompletionItemKind;
747            fn expecting(
748                &self,
749                formatter: &mut std::fmt::Formatter,
750            ) -> std::fmt::Result {
751                formatter.write_str("a number representing the enum")
752            }
753            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
754            where
755                E: serde::de::Error,
756            {
757                match value {
758                    1i64 => Ok(CompletionItemKind::Text),
759                    2i64 => Ok(CompletionItemKind::Method),
760                    3i64 => Ok(CompletionItemKind::Function),
761                    4i64 => Ok(CompletionItemKind::Constructor),
762                    5i64 => Ok(CompletionItemKind::Field),
763                    6i64 => Ok(CompletionItemKind::Variable),
764                    7i64 => Ok(CompletionItemKind::Class),
765                    8i64 => Ok(CompletionItemKind::Interface),
766                    9i64 => Ok(CompletionItemKind::Module),
767                    10i64 => Ok(CompletionItemKind::Property),
768                    11i64 => Ok(CompletionItemKind::Unit),
769                    12i64 => Ok(CompletionItemKind::Value),
770                    13i64 => Ok(CompletionItemKind::Enum),
771                    14i64 => Ok(CompletionItemKind::Keyword),
772                    15i64 => Ok(CompletionItemKind::Snippet),
773                    16i64 => Ok(CompletionItemKind::Color),
774                    17i64 => Ok(CompletionItemKind::File),
775                    18i64 => Ok(CompletionItemKind::Reference),
776                    19i64 => Ok(CompletionItemKind::Folder),
777                    20i64 => Ok(CompletionItemKind::EnumMember),
778                    21i64 => Ok(CompletionItemKind::Constant),
779                    22i64 => Ok(CompletionItemKind::Struct),
780                    23i64 => Ok(CompletionItemKind::Event),
781                    24i64 => Ok(CompletionItemKind::Operator),
782                    25i64 => Ok(CompletionItemKind::TypeParameter),
783                    _ => Err(E::custom(format!("unknown variant: {}", value))),
784                }
785            }
786            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
787            where
788                E: serde::de::Error,
789            {
790                self.visit_i64(value as i64)
791            }
792        }
793        deserializer.deserialize_i64(Visitor)
794    }
795}
796/**Completion item tags are extra annotations that tweak the rendering of a completion
797item.
798
799@since 3.15.0*/
800#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
801pub enum CompletionItemTag {
802    ///Render a completion as obsolete, usually using a strike-out.
803    Deprecated,
804}
805impl serde::Serialize for CompletionItemTag {
806    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
807    where
808        S: serde::Serializer,
809    {
810        match self {
811            Self::Deprecated => serializer.serialize_i64(1i64),
812        }
813    }
814}
815impl<'de> serde::Deserialize<'de> for CompletionItemTag {
816    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
817    where
818        D: serde::Deserializer<'de>,
819    {
820        struct Visitor;
821        impl<'de> serde::de::Visitor<'de> for Visitor {
822            type Value = CompletionItemTag;
823            fn expecting(
824                &self,
825                formatter: &mut std::fmt::Formatter,
826            ) -> std::fmt::Result {
827                formatter.write_str("a number representing the enum")
828            }
829            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
830            where
831                E: serde::de::Error,
832            {
833                match value {
834                    1i64 => Ok(CompletionItemTag::Deprecated),
835                    _ => Err(E::custom(format!("unknown variant: {}", value))),
836                }
837            }
838            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
839            where
840                E: serde::de::Error,
841            {
842                self.visit_i64(value as i64)
843            }
844        }
845        deserializer.deserialize_i64(Visitor)
846    }
847}
848/**Defines whether the insert text in a completion item should be interpreted as
849plain text or a snippet.*/
850#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
851pub enum InsertTextFormat {
852    ///The primary text to be inserted is treated as a plain string.
853    PlainText,
854    /**The primary text to be inserted is treated as a snippet.
855
856A snippet can define tab stops and placeholders with `$1`, `$2`
857and `${3:foo}`. `$0` defines the final tab stop, it defaults to
858the end of the snippet. Placeholders with equal identifiers are linked,
859that is typing in one will update others too.
860
861See also: <https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax>*/
862    Snippet,
863}
864impl serde::Serialize for InsertTextFormat {
865    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
866    where
867        S: serde::Serializer,
868    {
869        match self {
870            Self::PlainText => serializer.serialize_i64(1i64),
871            Self::Snippet => serializer.serialize_i64(2i64),
872        }
873    }
874}
875impl<'de> serde::Deserialize<'de> for InsertTextFormat {
876    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
877    where
878        D: serde::Deserializer<'de>,
879    {
880        struct Visitor;
881        impl<'de> serde::de::Visitor<'de> for Visitor {
882            type Value = InsertTextFormat;
883            fn expecting(
884                &self,
885                formatter: &mut std::fmt::Formatter,
886            ) -> std::fmt::Result {
887                formatter.write_str("a number representing the enum")
888            }
889            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
890            where
891                E: serde::de::Error,
892            {
893                match value {
894                    1i64 => Ok(InsertTextFormat::PlainText),
895                    2i64 => Ok(InsertTextFormat::Snippet),
896                    _ => Err(E::custom(format!("unknown variant: {}", value))),
897                }
898            }
899            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
900            where
901                E: serde::de::Error,
902            {
903                self.visit_i64(value as i64)
904            }
905        }
906        deserializer.deserialize_i64(Visitor)
907    }
908}
909/**How whitespace and indentation is handled during completion
910item insertion.
911
912@since 3.16.0*/
913#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
914pub enum InsertTextMode {
915    /**The insertion or replace strings is taken as it is. If the
916value is multi line the lines below the cursor will be
917inserted using the indentation defined in the string value.
918The client will not apply any kind of adjustments to the
919string.*/
920    AsIs,
921    /**The editor adjusts leading whitespace of new lines so that
922they match the indentation up to the cursor of the line for
923which the item is accepted.
924
925Consider a line like this: `<2tabs><cursor><3tabs>`foo. Accepting a
926multi line completion item is indented using 2 tabs and all
927following lines inserted will be indented using 2 tabs as well.*/
928    AdjustIndentation,
929}
930impl serde::Serialize for InsertTextMode {
931    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
932    where
933        S: serde::Serializer,
934    {
935        match self {
936            Self::AsIs => serializer.serialize_i64(1i64),
937            Self::AdjustIndentation => serializer.serialize_i64(2i64),
938        }
939    }
940}
941impl<'de> serde::Deserialize<'de> for InsertTextMode {
942    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
943    where
944        D: serde::Deserializer<'de>,
945    {
946        struct Visitor;
947        impl<'de> serde::de::Visitor<'de> for Visitor {
948            type Value = InsertTextMode;
949            fn expecting(
950                &self,
951                formatter: &mut std::fmt::Formatter,
952            ) -> std::fmt::Result {
953                formatter.write_str("a number representing the enum")
954            }
955            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
956            where
957                E: serde::de::Error,
958            {
959                match value {
960                    1i64 => Ok(InsertTextMode::AsIs),
961                    2i64 => Ok(InsertTextMode::AdjustIndentation),
962                    _ => Err(E::custom(format!("unknown variant: {}", value))),
963                }
964            }
965            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
966            where
967                E: serde::de::Error,
968            {
969                self.visit_i64(value as i64)
970            }
971        }
972        deserializer.deserialize_i64(Visitor)
973    }
974}
975///A document highlight kind.
976#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
977pub enum DocumentHighlightKind {
978    ///A textual occurrence.
979    Text,
980    ///Read-access of a symbol, like reading a variable.
981    Read,
982    ///Write-access of a symbol, like writing to a variable.
983    Write,
984}
985impl serde::Serialize for DocumentHighlightKind {
986    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
987    where
988        S: serde::Serializer,
989    {
990        match self {
991            Self::Text => serializer.serialize_i64(1i64),
992            Self::Read => serializer.serialize_i64(2i64),
993            Self::Write => serializer.serialize_i64(3i64),
994        }
995    }
996}
997impl<'de> serde::Deserialize<'de> for DocumentHighlightKind {
998    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
999    where
1000        D: serde::Deserializer<'de>,
1001    {
1002        struct Visitor;
1003        impl<'de> serde::de::Visitor<'de> for Visitor {
1004            type Value = DocumentHighlightKind;
1005            fn expecting(
1006                &self,
1007                formatter: &mut std::fmt::Formatter,
1008            ) -> std::fmt::Result {
1009                formatter.write_str("a number representing the enum")
1010            }
1011            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1012            where
1013                E: serde::de::Error,
1014            {
1015                match value {
1016                    1i64 => Ok(DocumentHighlightKind::Text),
1017                    2i64 => Ok(DocumentHighlightKind::Read),
1018                    3i64 => Ok(DocumentHighlightKind::Write),
1019                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1020                }
1021            }
1022            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1023            where
1024                E: serde::de::Error,
1025            {
1026                self.visit_i64(value as i64)
1027            }
1028        }
1029        deserializer.deserialize_i64(Visitor)
1030    }
1031}
1032///A set of predefined code action kinds
1033#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
1034#[serde(transparent)]
1035pub struct CodeActionKind(pub String);
1036impl CodeActionKind {
1037    pub const EMPTY: &'static str = "";
1038    pub const QUICK_FIX: &'static str = "quickfix";
1039    pub const REFACTOR: &'static str = "refactor";
1040    pub const REFACTOR_EXTRACT: &'static str = "refactor.extract";
1041    pub const REFACTOR_INLINE: &'static str = "refactor.inline";
1042    pub const REFACTOR_MOVE: &'static str = "refactor.move";
1043    pub const REFACTOR_REWRITE: &'static str = "refactor.rewrite";
1044    pub const SOURCE: &'static str = "source";
1045    pub const SOURCE_ORGANIZE_IMPORTS: &'static str = "source.organizeImports";
1046    pub const SOURCE_FIX_ALL: &'static str = "source.fixAll";
1047    pub const NOTEBOOK: &'static str = "notebook";
1048}
1049/**Code action tags are extra annotations that tweak the behavior of a code action.
1050
1051@since 3.18.0 - proposed*/
1052#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1053pub enum CodeActionTag {
1054    ///Marks the code action as LLM-generated.
1055    LlmGenerated,
1056}
1057impl serde::Serialize for CodeActionTag {
1058    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1059    where
1060        S: serde::Serializer,
1061    {
1062        match self {
1063            Self::LlmGenerated => serializer.serialize_i64(1i64),
1064        }
1065    }
1066}
1067impl<'de> serde::Deserialize<'de> for CodeActionTag {
1068    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1069    where
1070        D: serde::Deserializer<'de>,
1071    {
1072        struct Visitor;
1073        impl<'de> serde::de::Visitor<'de> for Visitor {
1074            type Value = CodeActionTag;
1075            fn expecting(
1076                &self,
1077                formatter: &mut std::fmt::Formatter,
1078            ) -> std::fmt::Result {
1079                formatter.write_str("a number representing the enum")
1080            }
1081            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1082            where
1083                E: serde::de::Error,
1084            {
1085                match value {
1086                    1i64 => Ok(CodeActionTag::LlmGenerated),
1087                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1088                }
1089            }
1090            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1091            where
1092                E: serde::de::Error,
1093            {
1094                self.visit_i64(value as i64)
1095            }
1096        }
1097        deserializer.deserialize_i64(Visitor)
1098    }
1099}
1100#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1101pub enum TraceValue {
1102    ///Turn tracing off.
1103    #[serde(rename = "off")]
1104    Off,
1105    ///Trace messages only.
1106    #[serde(rename = "messages")]
1107    Messages,
1108    ///Verbose message tracing.
1109    #[serde(rename = "verbose")]
1110    Verbose,
1111}
1112/**Describes the content type that a client supports in various
1113result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
1114
1115Please note that `MarkupKinds` must not start with a `$`. This kinds
1116are reserved for internal usage.*/
1117#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1118pub enum MarkupKind {
1119    ///Plain text is supported as a content format
1120    #[serde(rename = "plaintext")]
1121    PlainText,
1122    ///Markdown is supported as a content format
1123    #[serde(rename = "markdown")]
1124    Markdown,
1125}
1126/**Predefined Language kinds
1127@since 3.18.0*/
1128#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
1129#[serde(transparent)]
1130pub struct LanguageKind(pub String);
1131impl LanguageKind {
1132    pub const ABAP: &'static str = "abap";
1133    pub const WINDOWS_BAT: &'static str = "bat";
1134    pub const BIB_TE_X: &'static str = "bibtex";
1135    pub const CLOJURE: &'static str = "clojure";
1136    pub const COFFEESCRIPT: &'static str = "coffeescript";
1137    pub const C: &'static str = "c";
1138    pub const CPP: &'static str = "cpp";
1139    pub const C_SHARP: &'static str = "csharp";
1140    pub const CSS: &'static str = "css";
1141    pub const D: &'static str = "d";
1142    pub const DELPHI: &'static str = "pascal";
1143    pub const DIFF: &'static str = "diff";
1144    pub const DART: &'static str = "dart";
1145    pub const DOCKERFILE: &'static str = "dockerfile";
1146    pub const ELIXIR: &'static str = "elixir";
1147    pub const ERLANG: &'static str = "erlang";
1148    pub const F_SHARP: &'static str = "fsharp";
1149    pub const GIT_COMMIT: &'static str = "git-commit";
1150    pub const GIT_REBASE: &'static str = "git-rebase";
1151    pub const GO: &'static str = "go";
1152    pub const GROOVY: &'static str = "groovy";
1153    pub const HANDLEBARS: &'static str = "handlebars";
1154    pub const HASKELL: &'static str = "haskell";
1155    pub const HTML: &'static str = "html";
1156    pub const INI: &'static str = "ini";
1157    pub const JAVA: &'static str = "java";
1158    pub const JAVA_SCRIPT: &'static str = "javascript";
1159    pub const JAVA_SCRIPT_REACT: &'static str = "javascriptreact";
1160    pub const JSON: &'static str = "json";
1161    pub const LA_TE_X: &'static str = "latex";
1162    pub const LESS: &'static str = "less";
1163    pub const LUA: &'static str = "lua";
1164    pub const MAKEFILE: &'static str = "makefile";
1165    pub const MARKDOWN: &'static str = "markdown";
1166    pub const OBJECTIVE_C: &'static str = "objective-c";
1167    pub const OBJECTIVE_CPP: &'static str = "objective-cpp";
1168    pub const PASCAL: &'static str = "pascal";
1169    pub const PERL: &'static str = "perl";
1170    pub const PERL6: &'static str = "perl6";
1171    pub const PHP: &'static str = "php";
1172    pub const PLAINTEXT: &'static str = "plaintext";
1173    pub const POWERSHELL: &'static str = "powershell";
1174    pub const PUG: &'static str = "jade";
1175    pub const PYTHON: &'static str = "python";
1176    pub const R: &'static str = "r";
1177    pub const RAZOR: &'static str = "razor";
1178    pub const RUBY: &'static str = "ruby";
1179    pub const RUST: &'static str = "rust";
1180    pub const SCSS: &'static str = "scss";
1181    pub const SASS: &'static str = "sass";
1182    pub const SCALA: &'static str = "scala";
1183    pub const SHADER_LAB: &'static str = "shaderlab";
1184    pub const SHELL_SCRIPT: &'static str = "shellscript";
1185    pub const SQL: &'static str = "sql";
1186    pub const SWIFT: &'static str = "swift";
1187    pub const TYPE_SCRIPT: &'static str = "typescript";
1188    pub const TYPE_SCRIPT_REACT: &'static str = "typescriptreact";
1189    pub const TE_X: &'static str = "tex";
1190    pub const VISUAL_BASIC: &'static str = "vb";
1191    pub const XML: &'static str = "xml";
1192    pub const XSL: &'static str = "xsl";
1193    pub const YAML: &'static str = "yaml";
1194}
1195/**Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.
1196
1197@since 3.18.0*/
1198#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1199pub enum InlineCompletionTriggerKind {
1200    ///Completion was triggered explicitly by a user gesture.
1201    Invoked,
1202    ///Completion was triggered automatically while editing.
1203    Automatic,
1204}
1205impl serde::Serialize for InlineCompletionTriggerKind {
1206    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1207    where
1208        S: serde::Serializer,
1209    {
1210        match self {
1211            Self::Invoked => serializer.serialize_i64(1i64),
1212            Self::Automatic => serializer.serialize_i64(2i64),
1213        }
1214    }
1215}
1216impl<'de> serde::Deserialize<'de> for InlineCompletionTriggerKind {
1217    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1218    where
1219        D: serde::Deserializer<'de>,
1220    {
1221        struct Visitor;
1222        impl<'de> serde::de::Visitor<'de> for Visitor {
1223            type Value = InlineCompletionTriggerKind;
1224            fn expecting(
1225                &self,
1226                formatter: &mut std::fmt::Formatter,
1227            ) -> std::fmt::Result {
1228                formatter.write_str("a number representing the enum")
1229            }
1230            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1231            where
1232                E: serde::de::Error,
1233            {
1234                match value {
1235                    1i64 => Ok(InlineCompletionTriggerKind::Invoked),
1236                    2i64 => Ok(InlineCompletionTriggerKind::Automatic),
1237                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1238                }
1239            }
1240            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1241            where
1242                E: serde::de::Error,
1243            {
1244                self.visit_i64(value as i64)
1245            }
1246        }
1247        deserializer.deserialize_i64(Visitor)
1248    }
1249}
1250/**A set of predefined position encoding kinds.
1251
1252@since 3.17.0*/
1253#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
1254#[serde(transparent)]
1255pub struct PositionEncodingKind(pub String);
1256impl PositionEncodingKind {
1257    pub const UTF8: &'static str = "utf-8";
1258    pub const UTF16: &'static str = "utf-16";
1259    pub const UTF32: &'static str = "utf-32";
1260}
1261///The file event type
1262#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1263pub enum FileChangeType {
1264    ///The file got created.
1265    Created,
1266    ///The file got changed.
1267    Changed,
1268    ///The file got deleted.
1269    Deleted,
1270}
1271impl serde::Serialize for FileChangeType {
1272    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1273    where
1274        S: serde::Serializer,
1275    {
1276        match self {
1277            Self::Created => serializer.serialize_i64(1i64),
1278            Self::Changed => serializer.serialize_i64(2i64),
1279            Self::Deleted => serializer.serialize_i64(3i64),
1280        }
1281    }
1282}
1283impl<'de> serde::Deserialize<'de> for FileChangeType {
1284    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1285    where
1286        D: serde::Deserializer<'de>,
1287    {
1288        struct Visitor;
1289        impl<'de> serde::de::Visitor<'de> for Visitor {
1290            type Value = FileChangeType;
1291            fn expecting(
1292                &self,
1293                formatter: &mut std::fmt::Formatter,
1294            ) -> std::fmt::Result {
1295                formatter.write_str("a number representing the enum")
1296            }
1297            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1298            where
1299                E: serde::de::Error,
1300            {
1301                match value {
1302                    1i64 => Ok(FileChangeType::Created),
1303                    2i64 => Ok(FileChangeType::Changed),
1304                    3i64 => Ok(FileChangeType::Deleted),
1305                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1306                }
1307            }
1308            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1309            where
1310                E: serde::de::Error,
1311            {
1312                self.visit_i64(value as i64)
1313            }
1314        }
1315        deserializer.deserialize_i64(Visitor)
1316    }
1317}
1318#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
1319#[serde(transparent)]
1320pub struct WatchKind(pub u32);
1321impl WatchKind {
1322    pub const CREATE: u32 = 1;
1323    pub const CHANGE: u32 = 2;
1324    pub const DELETE: u32 = 4;
1325}
1326///The diagnostic's severity.
1327#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1328pub enum DiagnosticSeverity {
1329    ///Reports an error.
1330    Error,
1331    ///Reports a warning.
1332    Warning,
1333    ///Reports an information.
1334    Information,
1335    ///Reports a hint.
1336    Hint,
1337}
1338impl serde::Serialize for DiagnosticSeverity {
1339    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1340    where
1341        S: serde::Serializer,
1342    {
1343        match self {
1344            Self::Error => serializer.serialize_i64(1i64),
1345            Self::Warning => serializer.serialize_i64(2i64),
1346            Self::Information => serializer.serialize_i64(3i64),
1347            Self::Hint => serializer.serialize_i64(4i64),
1348        }
1349    }
1350}
1351impl<'de> serde::Deserialize<'de> for DiagnosticSeverity {
1352    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1353    where
1354        D: serde::Deserializer<'de>,
1355    {
1356        struct Visitor;
1357        impl<'de> serde::de::Visitor<'de> for Visitor {
1358            type Value = DiagnosticSeverity;
1359            fn expecting(
1360                &self,
1361                formatter: &mut std::fmt::Formatter,
1362            ) -> std::fmt::Result {
1363                formatter.write_str("a number representing the enum")
1364            }
1365            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1366            where
1367                E: serde::de::Error,
1368            {
1369                match value {
1370                    1i64 => Ok(DiagnosticSeverity::Error),
1371                    2i64 => Ok(DiagnosticSeverity::Warning),
1372                    3i64 => Ok(DiagnosticSeverity::Information),
1373                    4i64 => Ok(DiagnosticSeverity::Hint),
1374                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1375                }
1376            }
1377            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1378            where
1379                E: serde::de::Error,
1380            {
1381                self.visit_i64(value as i64)
1382            }
1383        }
1384        deserializer.deserialize_i64(Visitor)
1385    }
1386}
1387/**The diagnostic tags.
1388
1389@since 3.15.0*/
1390#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1391pub enum DiagnosticTag {
1392    /**Unused or unnecessary code.
1393
1394Clients are allowed to render diagnostics with this tag faded out instead of having
1395an error squiggle.*/
1396    Unnecessary,
1397    /**Deprecated or obsolete code.
1398
1399Clients are allowed to rendered diagnostics with this tag strike through.*/
1400    Deprecated,
1401}
1402impl serde::Serialize for DiagnosticTag {
1403    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1404    where
1405        S: serde::Serializer,
1406    {
1407        match self {
1408            Self::Unnecessary => serializer.serialize_i64(1i64),
1409            Self::Deprecated => serializer.serialize_i64(2i64),
1410        }
1411    }
1412}
1413impl<'de> serde::Deserialize<'de> for DiagnosticTag {
1414    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1415    where
1416        D: serde::Deserializer<'de>,
1417    {
1418        struct Visitor;
1419        impl<'de> serde::de::Visitor<'de> for Visitor {
1420            type Value = DiagnosticTag;
1421            fn expecting(
1422                &self,
1423                formatter: &mut std::fmt::Formatter,
1424            ) -> std::fmt::Result {
1425                formatter.write_str("a number representing the enum")
1426            }
1427            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1428            where
1429                E: serde::de::Error,
1430            {
1431                match value {
1432                    1i64 => Ok(DiagnosticTag::Unnecessary),
1433                    2i64 => Ok(DiagnosticTag::Deprecated),
1434                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1435                }
1436            }
1437            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1438            where
1439                E: serde::de::Error,
1440            {
1441                self.visit_i64(value as i64)
1442            }
1443        }
1444        deserializer.deserialize_i64(Visitor)
1445    }
1446}
1447///How a completion was triggered
1448#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1449pub enum CompletionTriggerKind {
1450    /**Completion was triggered by typing an identifier (24x7 code
1451complete), manual invocation (e.g Ctrl+Space) or via API.*/
1452    Invoked,
1453    /**Completion was triggered by a trigger character specified by
1454the `triggerCharacters` properties of the `CompletionRegistrationOptions`.*/
1455    TriggerCharacter,
1456    ///Completion was re-triggered as current completion list is incomplete
1457    TriggerForIncompleteCompletions,
1458}
1459impl serde::Serialize for CompletionTriggerKind {
1460    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1461    where
1462        S: serde::Serializer,
1463    {
1464        match self {
1465            Self::Invoked => serializer.serialize_i64(1i64),
1466            Self::TriggerCharacter => serializer.serialize_i64(2i64),
1467            Self::TriggerForIncompleteCompletions => serializer.serialize_i64(3i64),
1468        }
1469    }
1470}
1471impl<'de> serde::Deserialize<'de> for CompletionTriggerKind {
1472    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1473    where
1474        D: serde::Deserializer<'de>,
1475    {
1476        struct Visitor;
1477        impl<'de> serde::de::Visitor<'de> for Visitor {
1478            type Value = CompletionTriggerKind;
1479            fn expecting(
1480                &self,
1481                formatter: &mut std::fmt::Formatter,
1482            ) -> std::fmt::Result {
1483                formatter.write_str("a number representing the enum")
1484            }
1485            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1486            where
1487                E: serde::de::Error,
1488            {
1489                match value {
1490                    1i64 => Ok(CompletionTriggerKind::Invoked),
1491                    2i64 => Ok(CompletionTriggerKind::TriggerCharacter),
1492                    3i64 => Ok(CompletionTriggerKind::TriggerForIncompleteCompletions),
1493                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1494                }
1495            }
1496            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1497            where
1498                E: serde::de::Error,
1499            {
1500                self.visit_i64(value as i64)
1501            }
1502        }
1503        deserializer.deserialize_i64(Visitor)
1504    }
1505}
1506/**Defines how values from a set of defaults and an individual item will be
1507merged.
1508
1509@since 3.18.0*/
1510#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1511pub enum ApplyKind {
1512    /**The value from the individual item (if provided and not `null`) will be
1513used instead of the default.*/
1514    Replace,
1515    /**The value from the item will be merged with the default.
1516
1517The specific rules for mergeing values are defined against each field
1518that supports merging.*/
1519    Merge,
1520}
1521impl serde::Serialize for ApplyKind {
1522    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1523    where
1524        S: serde::Serializer,
1525    {
1526        match self {
1527            Self::Replace => serializer.serialize_i64(1i64),
1528            Self::Merge => serializer.serialize_i64(2i64),
1529        }
1530    }
1531}
1532impl<'de> serde::Deserialize<'de> for ApplyKind {
1533    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1534    where
1535        D: serde::Deserializer<'de>,
1536    {
1537        struct Visitor;
1538        impl<'de> serde::de::Visitor<'de> for Visitor {
1539            type Value = ApplyKind;
1540            fn expecting(
1541                &self,
1542                formatter: &mut std::fmt::Formatter,
1543            ) -> std::fmt::Result {
1544                formatter.write_str("a number representing the enum")
1545            }
1546            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1547            where
1548                E: serde::de::Error,
1549            {
1550                match value {
1551                    1i64 => Ok(ApplyKind::Replace),
1552                    2i64 => Ok(ApplyKind::Merge),
1553                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1554                }
1555            }
1556            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1557            where
1558                E: serde::de::Error,
1559            {
1560                self.visit_i64(value as i64)
1561            }
1562        }
1563        deserializer.deserialize_i64(Visitor)
1564    }
1565}
1566/**How a signature help was triggered.
1567
1568@since 3.15.0*/
1569#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1570pub enum SignatureHelpTriggerKind {
1571    ///Signature help was invoked manually by the user or by a command.
1572    Invoked,
1573    ///Signature help was triggered by a trigger character.
1574    TriggerCharacter,
1575    ///Signature help was triggered by the cursor moving or by the document content changing.
1576    ContentChange,
1577}
1578impl serde::Serialize for SignatureHelpTriggerKind {
1579    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1580    where
1581        S: serde::Serializer,
1582    {
1583        match self {
1584            Self::Invoked => serializer.serialize_i64(1i64),
1585            Self::TriggerCharacter => serializer.serialize_i64(2i64),
1586            Self::ContentChange => serializer.serialize_i64(3i64),
1587        }
1588    }
1589}
1590impl<'de> serde::Deserialize<'de> for SignatureHelpTriggerKind {
1591    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1592    where
1593        D: serde::Deserializer<'de>,
1594    {
1595        struct Visitor;
1596        impl<'de> serde::de::Visitor<'de> for Visitor {
1597            type Value = SignatureHelpTriggerKind;
1598            fn expecting(
1599                &self,
1600                formatter: &mut std::fmt::Formatter,
1601            ) -> std::fmt::Result {
1602                formatter.write_str("a number representing the enum")
1603            }
1604            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1605            where
1606                E: serde::de::Error,
1607            {
1608                match value {
1609                    1i64 => Ok(SignatureHelpTriggerKind::Invoked),
1610                    2i64 => Ok(SignatureHelpTriggerKind::TriggerCharacter),
1611                    3i64 => Ok(SignatureHelpTriggerKind::ContentChange),
1612                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1613                }
1614            }
1615            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1616            where
1617                E: serde::de::Error,
1618            {
1619                self.visit_i64(value as i64)
1620            }
1621        }
1622        deserializer.deserialize_i64(Visitor)
1623    }
1624}
1625/**The reason why code actions were requested.
1626
1627@since 3.17.0*/
1628#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1629pub enum CodeActionTriggerKind {
1630    ///Code actions were explicitly requested by the user or by an extension.
1631    Invoked,
1632    /**Code actions were requested automatically.
1633
1634This typically happens when current selection in a file changes, but can
1635also be triggered when file content changes.*/
1636    Automatic,
1637}
1638impl serde::Serialize for CodeActionTriggerKind {
1639    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1640    where
1641        S: serde::Serializer,
1642    {
1643        match self {
1644            Self::Invoked => serializer.serialize_i64(1i64),
1645            Self::Automatic => serializer.serialize_i64(2i64),
1646        }
1647    }
1648}
1649impl<'de> serde::Deserialize<'de> for CodeActionTriggerKind {
1650    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1651    where
1652        D: serde::Deserializer<'de>,
1653    {
1654        struct Visitor;
1655        impl<'de> serde::de::Visitor<'de> for Visitor {
1656            type Value = CodeActionTriggerKind;
1657            fn expecting(
1658                &self,
1659                formatter: &mut std::fmt::Formatter,
1660            ) -> std::fmt::Result {
1661                formatter.write_str("a number representing the enum")
1662            }
1663            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1664            where
1665                E: serde::de::Error,
1666            {
1667                match value {
1668                    1i64 => Ok(CodeActionTriggerKind::Invoked),
1669                    2i64 => Ok(CodeActionTriggerKind::Automatic),
1670                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1671                }
1672            }
1673            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1674            where
1675                E: serde::de::Error,
1676            {
1677                self.visit_i64(value as i64)
1678            }
1679        }
1680        deserializer.deserialize_i64(Visitor)
1681    }
1682}
1683/**A pattern kind describing if a glob pattern matches a file a folder or
1684both.
1685
1686@since 3.16.0*/
1687#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1688pub enum FileOperationPatternKind {
1689    ///The pattern matches a file only.
1690    #[serde(rename = "file")]
1691    File,
1692    ///The pattern matches a folder only.
1693    #[serde(rename = "folder")]
1694    Folder,
1695}
1696/**A notebook cell kind.
1697
1698@since 3.17.0*/
1699#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1700pub enum NotebookCellKind {
1701    ///A markup-cell is formatted source that is used for display.
1702    Markup,
1703    ///A code-cell is source code.
1704    Code,
1705}
1706impl serde::Serialize for NotebookCellKind {
1707    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1708    where
1709        S: serde::Serializer,
1710    {
1711        match self {
1712            Self::Markup => serializer.serialize_i64(1i64),
1713            Self::Code => serializer.serialize_i64(2i64),
1714        }
1715    }
1716}
1717impl<'de> serde::Deserialize<'de> for NotebookCellKind {
1718    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1719    where
1720        D: serde::Deserializer<'de>,
1721    {
1722        struct Visitor;
1723        impl<'de> serde::de::Visitor<'de> for Visitor {
1724            type Value = NotebookCellKind;
1725            fn expecting(
1726                &self,
1727                formatter: &mut std::fmt::Formatter,
1728            ) -> std::fmt::Result {
1729                formatter.write_str("a number representing the enum")
1730            }
1731            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1732            where
1733                E: serde::de::Error,
1734            {
1735                match value {
1736                    1i64 => Ok(NotebookCellKind::Markup),
1737                    2i64 => Ok(NotebookCellKind::Code),
1738                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1739                }
1740            }
1741            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1742            where
1743                E: serde::de::Error,
1744            {
1745                self.visit_i64(value as i64)
1746            }
1747        }
1748        deserializer.deserialize_i64(Visitor)
1749    }
1750}
1751#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1752pub enum ResourceOperationKind {
1753    ///Supports creating new files and folders.
1754    #[serde(rename = "create")]
1755    Create,
1756    ///Supports renaming existing files and folders.
1757    #[serde(rename = "rename")]
1758    Rename,
1759    ///Supports deleting existing files and folders.
1760    #[serde(rename = "delete")]
1761    Delete,
1762}
1763#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1764pub enum FailureHandlingKind {
1765    /**Applying the workspace change is simply aborted if one of the changes provided
1766fails. All operations executed before the failing operation stay executed.*/
1767    #[serde(rename = "abort")]
1768    Abort,
1769    /**All operations are executed transactional. That means they either all
1770succeed or no changes at all are applied to the workspace.*/
1771    #[serde(rename = "transactional")]
1772    Transactional,
1773    /**If the workspace edit contains only textual file changes they are executed transactional.
1774If resource changes (create, rename or delete file) are part of the change the failure
1775handling strategy is abort.*/
1776    #[serde(rename = "textOnlyTransactional")]
1777    TextOnlyTransactional,
1778    /**The client tries to undo the operations already executed. But there is no
1779guarantee that this is succeeding.*/
1780    #[serde(rename = "undo")]
1781    Undo,
1782}
1783#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1784pub enum PrepareSupportDefaultBehavior {
1785    /**The client's default behavior is to select the identifier
1786according the to language's syntax rule.*/
1787    Identifier,
1788}
1789impl serde::Serialize for PrepareSupportDefaultBehavior {
1790    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1791    where
1792        S: serde::Serializer,
1793    {
1794        match self {
1795            Self::Identifier => serializer.serialize_i64(1i64),
1796        }
1797    }
1798}
1799impl<'de> serde::Deserialize<'de> for PrepareSupportDefaultBehavior {
1800    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1801    where
1802        D: serde::Deserializer<'de>,
1803    {
1804        struct Visitor;
1805        impl<'de> serde::de::Visitor<'de> for Visitor {
1806            type Value = PrepareSupportDefaultBehavior;
1807            fn expecting(
1808                &self,
1809                formatter: &mut std::fmt::Formatter,
1810            ) -> std::fmt::Result {
1811                formatter.write_str("a number representing the enum")
1812            }
1813            fn visit_i64<E>(self, value: i64) -> Result<Self::Value, E>
1814            where
1815                E: serde::de::Error,
1816            {
1817                match value {
1818                    1i64 => Ok(PrepareSupportDefaultBehavior::Identifier),
1819                    _ => Err(E::custom(format!("unknown variant: {}", value))),
1820                }
1821            }
1822            fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
1823            where
1824                E: serde::de::Error,
1825            {
1826                self.visit_i64(value as i64)
1827            }
1828        }
1829        deserializer.deserialize_i64(Visitor)
1830    }
1831}
1832#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
1833pub enum TokenFormat {
1834    #[serde(rename = "relative")]
1835    Relative,
1836}
1837#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1838#[serde(rename_all = "camelCase")]
1839pub struct ImplementationParams {
1840    #[serde(flatten)]
1841    pub text_document_position_params_base: TextDocumentPositionParams,
1842    #[serde(flatten)]
1843    pub work_done_progress_params_mixin: WorkDoneProgressParams,
1844    #[serde(flatten)]
1845    pub partial_result_params_mixin: PartialResultParams,
1846}
1847/**Represents a location inside a resource, such as a line
1848inside a text file.*/
1849#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1850#[serde(rename_all = "camelCase")]
1851pub struct Location {
1852    pub uri: DocumentUri,
1853    pub range: Range,
1854}
1855#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1856#[serde(rename_all = "camelCase")]
1857pub struct ImplementationRegistrationOptions {
1858    #[serde(flatten)]
1859    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
1860    #[serde(flatten)]
1861    pub implementation_options_base: ImplementationOptions,
1862    #[serde(flatten)]
1863    pub static_registration_options_mixin: StaticRegistrationOptions,
1864}
1865#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1866#[serde(rename_all = "camelCase")]
1867pub struct TypeDefinitionParams {
1868    #[serde(flatten)]
1869    pub text_document_position_params_base: TextDocumentPositionParams,
1870    #[serde(flatten)]
1871    pub work_done_progress_params_mixin: WorkDoneProgressParams,
1872    #[serde(flatten)]
1873    pub partial_result_params_mixin: PartialResultParams,
1874}
1875#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1876#[serde(rename_all = "camelCase")]
1877pub struct TypeDefinitionRegistrationOptions {
1878    #[serde(flatten)]
1879    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
1880    #[serde(flatten)]
1881    pub type_definition_options_base: TypeDefinitionOptions,
1882    #[serde(flatten)]
1883    pub static_registration_options_mixin: StaticRegistrationOptions,
1884}
1885///A workspace folder inside a client.
1886#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1887#[serde(rename_all = "camelCase")]
1888pub struct WorkspaceFolder {
1889    ///The associated URI for this workspace folder.
1890    pub uri: URI,
1891    /**The name of the workspace folder. Used to refer to this
1892workspace folder in the user interface.*/
1893    pub name: String,
1894}
1895///The parameters of a `workspace/didChangeWorkspaceFolders` notification.
1896#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1897#[serde(rename_all = "camelCase")]
1898pub struct DidChangeWorkspaceFoldersParams {
1899    ///The actual workspace folder change event.
1900    pub event: WorkspaceFoldersChangeEvent,
1901}
1902///The parameters of a configuration request.
1903#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1904#[serde(rename_all = "camelCase")]
1905pub struct ConfigurationParams {
1906    pub items: Vec<ConfigurationItem>,
1907}
1908///Parameters for a {@link DocumentColorRequest}.
1909#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1910#[serde(rename_all = "camelCase")]
1911pub struct DocumentColorParams {
1912    #[serde(flatten)]
1913    pub work_done_progress_params_mixin: WorkDoneProgressParams,
1914    #[serde(flatten)]
1915    pub partial_result_params_mixin: PartialResultParams,
1916    ///The text document.
1917    #[serde(rename = "textDocument")]
1918    pub text_document: TextDocumentIdentifier,
1919}
1920///Represents a color range from a document.
1921#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1922#[serde(rename_all = "camelCase")]
1923pub struct ColorInformation {
1924    ///The range in the document where this color appears.
1925    pub range: Range,
1926    ///The actual color value for this color range.
1927    pub color: Color,
1928}
1929#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1930#[serde(rename_all = "camelCase")]
1931pub struct DocumentColorRegistrationOptions {
1932    #[serde(flatten)]
1933    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
1934    #[serde(flatten)]
1935    pub document_color_options_base: DocumentColorOptions,
1936    #[serde(flatten)]
1937    pub static_registration_options_mixin: StaticRegistrationOptions,
1938}
1939///Parameters for a {@link ColorPresentationRequest}.
1940#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1941#[serde(rename_all = "camelCase")]
1942pub struct ColorPresentationParams {
1943    #[serde(flatten)]
1944    pub work_done_progress_params_mixin: WorkDoneProgressParams,
1945    #[serde(flatten)]
1946    pub partial_result_params_mixin: PartialResultParams,
1947    ///The text document.
1948    #[serde(rename = "textDocument")]
1949    pub text_document: TextDocumentIdentifier,
1950    ///The color to request presentations for.
1951    pub color: Color,
1952    ///The range where the color would be inserted. Serves as a context.
1953    pub range: Range,
1954}
1955#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1956#[serde(rename_all = "camelCase")]
1957pub struct ColorPresentation {
1958    /**The label of this color presentation. It will be shown on the color
1959picker header. By default this is also the text that is inserted when selecting
1960this color presentation.*/
1961    pub label: String,
1962    /**An {@link TextEdit edit} which is applied to a document when selecting
1963this presentation for the color.  When `falsy` the {@link ColorPresentation.label label}
1964is used.*/
1965    #[serde(rename = "textEdit")]
1966    #[serde(default)]
1967    pub text_edit: Option<TextEdit>,
1968    /**An optional array of additional {@link TextEdit text edits} that are applied when
1969selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves.*/
1970    #[serde(rename = "additionalTextEdits")]
1971    #[serde(default)]
1972    pub additional_text_edits: Option<Vec<TextEdit>>,
1973}
1974#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1975#[serde(rename_all = "camelCase")]
1976pub struct WorkDoneProgressOptions {
1977    #[serde(rename = "workDoneProgress")]
1978    #[serde(default)]
1979    pub work_done_progress: Option<bool>,
1980}
1981///General text document registration options.
1982#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1983#[serde(rename_all = "camelCase")]
1984pub struct TextDocumentRegistrationOptions {
1985    /**A document selector to identify the scope of the registration. If set to null
1986the document selector provided on the client side will be used.*/
1987    #[serde(rename = "documentSelector")]
1988    pub document_selector: Option<DocumentSelector>,
1989}
1990///Parameters for a {@link FoldingRangeRequest}.
1991#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1992#[serde(rename_all = "camelCase")]
1993pub struct FoldingRangeParams {
1994    #[serde(flatten)]
1995    pub work_done_progress_params_mixin: WorkDoneProgressParams,
1996    #[serde(flatten)]
1997    pub partial_result_params_mixin: PartialResultParams,
1998    ///The text document.
1999    #[serde(rename = "textDocument")]
2000    pub text_document: TextDocumentIdentifier,
2001}
2002/**Represents a folding range. To be valid, start and end line must be bigger than zero and smaller
2003than the number of lines in the document. Clients are free to ignore invalid ranges.*/
2004#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2005#[serde(rename_all = "camelCase")]
2006pub struct FoldingRange {
2007    /**The zero-based start line of the range to fold. The folded area starts after the line's last character.
2008To be valid, the end must be zero or larger and smaller than the number of lines in the document.*/
2009    #[serde(rename = "startLine")]
2010    pub start_line: Uinteger,
2011    ///The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line.
2012    #[serde(rename = "startCharacter")]
2013    #[serde(default)]
2014    pub start_character: Option<Uinteger>,
2015    /**The zero-based end line of the range to fold. The folded area ends with the line's last character.
2016To be valid, the end must be zero or larger and smaller than the number of lines in the document.*/
2017    #[serde(rename = "endLine")]
2018    pub end_line: Uinteger,
2019    ///The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line.
2020    #[serde(rename = "endCharacter")]
2021    #[serde(default)]
2022    pub end_character: Option<Uinteger>,
2023    /**Describes the kind of the folding range such as 'comment' or 'region'. The kind
2024is used to categorize folding ranges and used by commands like 'Fold all comments'.
2025See {@link FoldingRangeKind} for an enumeration of standardized kinds.*/
2026    #[serde(default)]
2027    pub kind: Option<FoldingRangeKind>,
2028    /**The text that the client should show when the specified range is
2029collapsed. If not defined or not supported by the client, a default
2030will be chosen by the client.
2031
2032@since 3.17.0*/
2033    #[serde(rename = "collapsedText")]
2034    #[serde(default)]
2035    pub collapsed_text: Option<String>,
2036}
2037#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2038#[serde(rename_all = "camelCase")]
2039pub struct FoldingRangeRegistrationOptions {
2040    #[serde(flatten)]
2041    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2042    #[serde(flatten)]
2043    pub folding_range_options_base: FoldingRangeOptions,
2044    #[serde(flatten)]
2045    pub static_registration_options_mixin: StaticRegistrationOptions,
2046}
2047#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2048#[serde(rename_all = "camelCase")]
2049pub struct DeclarationParams {
2050    #[serde(flatten)]
2051    pub text_document_position_params_base: TextDocumentPositionParams,
2052    #[serde(flatten)]
2053    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2054    #[serde(flatten)]
2055    pub partial_result_params_mixin: PartialResultParams,
2056}
2057#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2058#[serde(rename_all = "camelCase")]
2059pub struct DeclarationRegistrationOptions {
2060    #[serde(flatten)]
2061    pub declaration_options_base: DeclarationOptions,
2062    #[serde(flatten)]
2063    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2064    #[serde(flatten)]
2065    pub static_registration_options_mixin: StaticRegistrationOptions,
2066}
2067///A parameter literal used in selection range requests.
2068#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2069#[serde(rename_all = "camelCase")]
2070pub struct SelectionRangeParams {
2071    #[serde(flatten)]
2072    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2073    #[serde(flatten)]
2074    pub partial_result_params_mixin: PartialResultParams,
2075    ///The text document.
2076    #[serde(rename = "textDocument")]
2077    pub text_document: TextDocumentIdentifier,
2078    ///The positions inside the text document.
2079    pub positions: Vec<Position>,
2080}
2081/**A selection range represents a part of a selection hierarchy. A selection range
2082may have a parent selection range that contains it.*/
2083#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2084#[serde(rename_all = "camelCase")]
2085pub struct SelectionRange {
2086    ///The {@link Range range} of this selection range.
2087    pub range: Range,
2088    ///The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
2089    #[serde(default)]
2090    pub parent: Option<Box<SelectionRange>>,
2091}
2092#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2093#[serde(rename_all = "camelCase")]
2094pub struct SelectionRangeRegistrationOptions {
2095    #[serde(flatten)]
2096    pub selection_range_options_base: SelectionRangeOptions,
2097    #[serde(flatten)]
2098    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2099    #[serde(flatten)]
2100    pub static_registration_options_mixin: StaticRegistrationOptions,
2101}
2102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2103#[serde(rename_all = "camelCase")]
2104pub struct WorkDoneProgressCreateParams {
2105    ///The token to be used to report progress.
2106    pub token: ProgressToken,
2107}
2108#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2109#[serde(rename_all = "camelCase")]
2110pub struct WorkDoneProgressCancelParams {
2111    ///The token to be used to report progress.
2112    pub token: ProgressToken,
2113}
2114/**The parameter of a `textDocument/prepareCallHierarchy` request.
2115
2116@since 3.16.0*/
2117#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2118#[serde(rename_all = "camelCase")]
2119pub struct CallHierarchyPrepareParams {
2120    #[serde(flatten)]
2121    pub text_document_position_params_base: TextDocumentPositionParams,
2122    #[serde(flatten)]
2123    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2124}
2125/**Represents programming constructs like functions or constructors in the context
2126of call hierarchy.
2127
2128@since 3.16.0*/
2129#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2130#[serde(rename_all = "camelCase")]
2131pub struct CallHierarchyItem {
2132    ///The name of this item.
2133    pub name: String,
2134    ///The kind of this item.
2135    pub kind: SymbolKind,
2136    ///Tags for this item.
2137    #[serde(default)]
2138    pub tags: Option<Vec<SymbolTag>>,
2139    ///More detail for this item, e.g. the signature of a function.
2140    #[serde(default)]
2141    pub detail: Option<String>,
2142    ///The resource identifier of this item.
2143    pub uri: DocumentUri,
2144    ///The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
2145    pub range: Range,
2146    /**The range that should be selected and revealed when this symbol is being picked, e.g. the name of a function.
2147Must be contained by the {@link CallHierarchyItem.range `range`}.*/
2148    #[serde(rename = "selectionRange")]
2149    pub selection_range: Range,
2150    /**A data entry field that is preserved between a call hierarchy prepare and
2151incoming calls or outgoing calls requests.*/
2152    #[serde(default)]
2153    pub data: Option<LSPAny>,
2154}
2155/**Call hierarchy options used during static or dynamic registration.
2156
2157@since 3.16.0*/
2158#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2159#[serde(rename_all = "camelCase")]
2160pub struct CallHierarchyRegistrationOptions {
2161    #[serde(flatten)]
2162    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2163    #[serde(flatten)]
2164    pub call_hierarchy_options_base: CallHierarchyOptions,
2165    #[serde(flatten)]
2166    pub static_registration_options_mixin: StaticRegistrationOptions,
2167}
2168/**The parameter of a `callHierarchy/incomingCalls` request.
2169
2170@since 3.16.0*/
2171#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2172#[serde(rename_all = "camelCase")]
2173pub struct CallHierarchyIncomingCallsParams {
2174    #[serde(flatten)]
2175    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2176    #[serde(flatten)]
2177    pub partial_result_params_mixin: PartialResultParams,
2178    pub item: CallHierarchyItem,
2179}
2180/**Represents an incoming call, e.g. a caller of a method or constructor.
2181
2182@since 3.16.0*/
2183#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2184#[serde(rename_all = "camelCase")]
2185pub struct CallHierarchyIncomingCall {
2186    ///The item that makes the call.
2187    pub from: CallHierarchyItem,
2188    /**The ranges at which the calls appear. This is relative to the caller
2189denoted by {@link CallHierarchyIncomingCall.from `this.from`}.*/
2190    #[serde(rename = "fromRanges")]
2191    pub from_ranges: Vec<Range>,
2192}
2193/**The parameter of a `callHierarchy/outgoingCalls` request.
2194
2195@since 3.16.0*/
2196#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2197#[serde(rename_all = "camelCase")]
2198pub struct CallHierarchyOutgoingCallsParams {
2199    #[serde(flatten)]
2200    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2201    #[serde(flatten)]
2202    pub partial_result_params_mixin: PartialResultParams,
2203    pub item: CallHierarchyItem,
2204}
2205/**Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.
2206
2207@since 3.16.0*/
2208#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2209#[serde(rename_all = "camelCase")]
2210pub struct CallHierarchyOutgoingCall {
2211    ///The item that is called.
2212    pub to: CallHierarchyItem,
2213    /**The range at which this item is called. This is the range relative to the caller, e.g the item
2214passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`}
2215and not {@link CallHierarchyOutgoingCall.to `this.to`}.*/
2216    #[serde(rename = "fromRanges")]
2217    pub from_ranges: Vec<Range>,
2218}
2219///@since 3.16.0
2220#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2221#[serde(rename_all = "camelCase")]
2222pub struct SemanticTokensParams {
2223    #[serde(flatten)]
2224    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2225    #[serde(flatten)]
2226    pub partial_result_params_mixin: PartialResultParams,
2227    ///The text document.
2228    #[serde(rename = "textDocument")]
2229    pub text_document: TextDocumentIdentifier,
2230}
2231///@since 3.16.0
2232#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2233#[serde(rename_all = "camelCase")]
2234pub struct SemanticTokens {
2235    /**An optional result id. If provided and clients support delta updating
2236the client will include the result id in the next semantic token request.
2237A server can then instead of computing all semantic tokens again simply
2238send a delta.*/
2239    #[serde(rename = "resultId")]
2240    #[serde(default)]
2241    pub result_id: Option<String>,
2242    ///The actual tokens.
2243    pub data: Vec<Uinteger>,
2244}
2245///@since 3.16.0
2246#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2247#[serde(rename_all = "camelCase")]
2248pub struct SemanticTokensPartialResult {
2249    pub data: Vec<Uinteger>,
2250}
2251///@since 3.16.0
2252#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2253#[serde(rename_all = "camelCase")]
2254pub struct SemanticTokensRegistrationOptions {
2255    #[serde(flatten)]
2256    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2257    #[serde(flatten)]
2258    pub semantic_tokens_options_base: SemanticTokensOptions,
2259    #[serde(flatten)]
2260    pub static_registration_options_mixin: StaticRegistrationOptions,
2261}
2262///@since 3.16.0
2263#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2264#[serde(rename_all = "camelCase")]
2265pub struct SemanticTokensDeltaParams {
2266    #[serde(flatten)]
2267    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2268    #[serde(flatten)]
2269    pub partial_result_params_mixin: PartialResultParams,
2270    ///The text document.
2271    #[serde(rename = "textDocument")]
2272    pub text_document: TextDocumentIdentifier,
2273    /**The result id of a previous response. The result Id can either point to a full response
2274or a delta response depending on what was received last.*/
2275    #[serde(rename = "previousResultId")]
2276    pub previous_result_id: String,
2277}
2278///@since 3.16.0
2279#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2280#[serde(rename_all = "camelCase")]
2281pub struct SemanticTokensDelta {
2282    #[serde(rename = "resultId")]
2283    #[serde(default)]
2284    pub result_id: Option<String>,
2285    ///The semantic token edits to transform a previous result into a new result.
2286    pub edits: Vec<SemanticTokensEdit>,
2287}
2288///@since 3.16.0
2289#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2290#[serde(rename_all = "camelCase")]
2291pub struct SemanticTokensDeltaPartialResult {
2292    pub edits: Vec<SemanticTokensEdit>,
2293}
2294///@since 3.16.0
2295#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2296#[serde(rename_all = "camelCase")]
2297pub struct SemanticTokensRangeParams {
2298    #[serde(flatten)]
2299    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2300    #[serde(flatten)]
2301    pub partial_result_params_mixin: PartialResultParams,
2302    ///The text document.
2303    #[serde(rename = "textDocument")]
2304    pub text_document: TextDocumentIdentifier,
2305    ///The range the semantic tokens are requested for.
2306    pub range: Range,
2307}
2308/**Params to show a resource in the UI.
2309
2310@since 3.16.0*/
2311#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2312#[serde(rename_all = "camelCase")]
2313pub struct ShowDocumentParams {
2314    ///The uri to show.
2315    pub uri: URI,
2316    /**Indicates to show the resource in an external program.
2317To show, for example, `https://code.visualstudio.com/`
2318in the default WEB browser set `external` to `true`.*/
2319    #[serde(default)]
2320    pub external: Option<bool>,
2321    /**An optional property to indicate whether the editor
2322showing the document should take focus or not.
2323Clients might ignore this property if an external
2324program is started.*/
2325    #[serde(rename = "takeFocus")]
2326    #[serde(default)]
2327    pub take_focus: Option<bool>,
2328    /**An optional selection range if the document is a text
2329document. Clients might ignore the property if an
2330external program is started or the file is not a text
2331file.*/
2332    #[serde(default)]
2333    pub selection: Option<Range>,
2334}
2335/**The result of a showDocument request.
2336
2337@since 3.16.0*/
2338#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2339#[serde(rename_all = "camelCase")]
2340pub struct ShowDocumentResult {
2341    ///A boolean indicating if the show was successful.
2342    pub success: bool,
2343}
2344#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2345#[serde(rename_all = "camelCase")]
2346pub struct LinkedEditingRangeParams {
2347    #[serde(flatten)]
2348    pub text_document_position_params_base: TextDocumentPositionParams,
2349    #[serde(flatten)]
2350    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2351}
2352/**The result of a linked editing range request.
2353
2354@since 3.16.0*/
2355#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2356#[serde(rename_all = "camelCase")]
2357pub struct LinkedEditingRanges {
2358    /**A list of ranges that can be edited together. The ranges must have
2359identical length and contain identical text content. The ranges cannot overlap.*/
2360    pub ranges: Vec<Range>,
2361    /**An optional word pattern (regular expression) that describes valid contents for
2362the given ranges. If no pattern is provided, the client configuration's word
2363pattern will be used.*/
2364    #[serde(rename = "wordPattern")]
2365    #[serde(default)]
2366    pub word_pattern: Option<String>,
2367}
2368#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2369#[serde(rename_all = "camelCase")]
2370pub struct LinkedEditingRangeRegistrationOptions {
2371    #[serde(flatten)]
2372    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2373    #[serde(flatten)]
2374    pub linked_editing_range_options_base: LinkedEditingRangeOptions,
2375    #[serde(flatten)]
2376    pub static_registration_options_mixin: StaticRegistrationOptions,
2377}
2378/**The parameters sent in notifications/requests for user-initiated creation of
2379files.
2380
2381@since 3.16.0*/
2382#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2383#[serde(rename_all = "camelCase")]
2384pub struct CreateFilesParams {
2385    ///An array of all files/folders created in this operation.
2386    pub files: Vec<FileCreate>,
2387}
2388/**A workspace edit represents changes to many resources managed in the workspace. The edit
2389should either provide `changes` or `documentChanges`. If documentChanges are present
2390they are preferred over `changes` if the client can handle versioned document edits.
2391
2392Since version 3.13.0 a workspace edit can contain resource operations as well. If resource
2393operations are present clients need to execute the operations in the order in which they
2394are provided. So a workspace edit for example can consist of the following two changes:
2395(1) a create file a.txt and (2) a text document edit which insert text into file a.txt.
2396
2397An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will
2398cause failure of the operation. How the client recovers from the failure is described by
2399the client capability: `workspace.workspaceEdit.failureHandling`*/
2400#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2401#[serde(rename_all = "camelCase")]
2402pub struct WorkspaceEdit {
2403    ///Holds changes to existing resources.
2404    #[serde(default)]
2405    pub changes: Option<std::collections::BTreeMap<DocumentUri, Vec<TextEdit>>>,
2406    /**Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes
2407are either an array of `TextDocumentEdit`s to express changes to n different text documents
2408where each text document edit addresses a specific version of a text document. Or it can contain
2409above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations.
2410
2411Whether a client supports versioned document edits is expressed via
2412`workspace.workspaceEdit.documentChanges` client capability.
2413
2414If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then
2415only plain `TextEdit`s using the `changes` property are supported.*/
2416    #[serde(rename = "documentChanges")]
2417    #[serde(default)]
2418    pub document_changes: Option<
2419        Vec<CreateFileOrDeleteFileOrRenameFileOrTextDocumentEdit>,
2420    >,
2421    /**A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and
2422delete file / folder operations.
2423
2424Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`.
2425
2426@since 3.16.0*/
2427    #[serde(rename = "changeAnnotations")]
2428    #[serde(default)]
2429    pub change_annotations: Option<
2430        std::collections::BTreeMap<ChangeAnnotationIdentifier, ChangeAnnotation>,
2431    >,
2432}
2433/**The options to register for file operations.
2434
2435@since 3.16.0*/
2436#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2437#[serde(rename_all = "camelCase")]
2438pub struct FileOperationRegistrationOptions {
2439    ///The actual filters.
2440    pub filters: Vec<FileOperationFilter>,
2441}
2442/**The parameters sent in notifications/requests for user-initiated renames of
2443files.
2444
2445@since 3.16.0*/
2446#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2447#[serde(rename_all = "camelCase")]
2448pub struct RenameFilesParams {
2449    /**An array of all files/folders renamed in this operation. When a folder is renamed, only
2450the folder will be included, and not its children.*/
2451    pub files: Vec<FileRename>,
2452}
2453/**The parameters sent in notifications/requests for user-initiated deletes of
2454files.
2455
2456@since 3.16.0*/
2457#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2458#[serde(rename_all = "camelCase")]
2459pub struct DeleteFilesParams {
2460    ///An array of all files/folders deleted in this operation.
2461    pub files: Vec<FileDelete>,
2462}
2463#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2464#[serde(rename_all = "camelCase")]
2465pub struct MonikerParams {
2466    #[serde(flatten)]
2467    pub text_document_position_params_base: TextDocumentPositionParams,
2468    #[serde(flatten)]
2469    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2470    #[serde(flatten)]
2471    pub partial_result_params_mixin: PartialResultParams,
2472}
2473/**Moniker definition to match LSIF 0.5 moniker definition.
2474
2475@since 3.16.0*/
2476#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2477#[serde(rename_all = "camelCase")]
2478pub struct Moniker {
2479    ///The scheme of the moniker. For example tsc or .Net
2480    pub scheme: String,
2481    /**The identifier of the moniker. The value is opaque in LSIF however
2482schema owners are allowed to define the structure if they want.*/
2483    pub identifier: String,
2484    ///The scope in which the moniker is unique
2485    pub unique: UniquenessLevel,
2486    ///The moniker kind if known.
2487    #[serde(default)]
2488    pub kind: Option<MonikerKind>,
2489}
2490#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2491#[serde(rename_all = "camelCase")]
2492pub struct MonikerRegistrationOptions {
2493    #[serde(flatten)]
2494    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2495    #[serde(flatten)]
2496    pub moniker_options_base: MonikerOptions,
2497}
2498/**The parameter of a `textDocument/prepareTypeHierarchy` request.
2499
2500@since 3.17.0*/
2501#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2502#[serde(rename_all = "camelCase")]
2503pub struct TypeHierarchyPrepareParams {
2504    #[serde(flatten)]
2505    pub text_document_position_params_base: TextDocumentPositionParams,
2506    #[serde(flatten)]
2507    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2508}
2509///@since 3.17.0
2510#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2511#[serde(rename_all = "camelCase")]
2512pub struct TypeHierarchyItem {
2513    ///The name of this item.
2514    pub name: String,
2515    ///The kind of this item.
2516    pub kind: SymbolKind,
2517    ///Tags for this item.
2518    #[serde(default)]
2519    pub tags: Option<Vec<SymbolTag>>,
2520    ///More detail for this item, e.g. the signature of a function.
2521    #[serde(default)]
2522    pub detail: Option<String>,
2523    ///The resource identifier of this item.
2524    pub uri: DocumentUri,
2525    /**The range enclosing this symbol not including leading/trailing whitespace
2526but everything else, e.g. comments and code.*/
2527    pub range: Range,
2528    /**The range that should be selected and revealed when this symbol is being
2529picked, e.g. the name of a function. Must be contained by the
2530{@link TypeHierarchyItem.range `range`}.*/
2531    #[serde(rename = "selectionRange")]
2532    pub selection_range: Range,
2533    /**A data entry field that is preserved between a type hierarchy prepare and
2534supertypes or subtypes requests. It could also be used to identify the
2535type hierarchy in the server, helping improve the performance on
2536resolving supertypes and subtypes.*/
2537    #[serde(default)]
2538    pub data: Option<LSPAny>,
2539}
2540/**Type hierarchy options used during static or dynamic registration.
2541
2542@since 3.17.0*/
2543#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2544#[serde(rename_all = "camelCase")]
2545pub struct TypeHierarchyRegistrationOptions {
2546    #[serde(flatten)]
2547    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2548    #[serde(flatten)]
2549    pub type_hierarchy_options_base: TypeHierarchyOptions,
2550    #[serde(flatten)]
2551    pub static_registration_options_mixin: StaticRegistrationOptions,
2552}
2553/**The parameter of a `typeHierarchy/supertypes` request.
2554
2555@since 3.17.0*/
2556#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2557#[serde(rename_all = "camelCase")]
2558pub struct TypeHierarchySupertypesParams {
2559    #[serde(flatten)]
2560    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2561    #[serde(flatten)]
2562    pub partial_result_params_mixin: PartialResultParams,
2563    pub item: TypeHierarchyItem,
2564}
2565/**The parameter of a `typeHierarchy/subtypes` request.
2566
2567@since 3.17.0*/
2568#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2569#[serde(rename_all = "camelCase")]
2570pub struct TypeHierarchySubtypesParams {
2571    #[serde(flatten)]
2572    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2573    #[serde(flatten)]
2574    pub partial_result_params_mixin: PartialResultParams,
2575    pub item: TypeHierarchyItem,
2576}
2577/**A parameter literal used in inline value requests.
2578
2579@since 3.17.0*/
2580#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2581#[serde(rename_all = "camelCase")]
2582pub struct InlineValueParams {
2583    #[serde(flatten)]
2584    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2585    ///The text document.
2586    #[serde(rename = "textDocument")]
2587    pub text_document: TextDocumentIdentifier,
2588    ///The document range for which inline values information will be returned.
2589    pub range: Range,
2590    #[doc = "Additional information about the context in which inline values information was\nrequested.\t */"]
2591    pub context: InlineValueContext,
2592}
2593/**Inline value options used during static or dynamic registration.
2594
2595@since 3.17.0*/
2596#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2597#[serde(rename_all = "camelCase")]
2598pub struct InlineValueRegistrationOptions {
2599    #[serde(flatten)]
2600    pub inline_value_options_base: InlineValueOptions,
2601    #[serde(flatten)]
2602    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2603    #[serde(flatten)]
2604    pub static_registration_options_mixin: StaticRegistrationOptions,
2605}
2606/**A parameter literal used in inlay hint requests.
2607
2608@since 3.17.0*/
2609#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2610#[serde(rename_all = "camelCase")]
2611pub struct InlayHintParams {
2612    #[serde(flatten)]
2613    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2614    ///The text document.
2615    #[serde(rename = "textDocument")]
2616    pub text_document: TextDocumentIdentifier,
2617    ///The document range for which inlay hints should be computed.
2618    pub range: Range,
2619}
2620/**Inlay hint information.
2621
2622@since 3.17.0*/
2623#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2624#[serde(rename_all = "camelCase")]
2625pub struct InlayHint {
2626    /**The position of this hint.
2627
2628If multiple hints have the same position, they will be shown in the order
2629they appear in the response.*/
2630    pub position: Position,
2631    /**The label of this hint. A human readable string or an array of
2632InlayHintLabelPart label parts.
2633
2634*Note* that neither the string nor the label part can be empty.*/
2635    pub label: InlayHintLabelPartArrayOrString,
2636    /**The kind of this hint. Can be omitted in which case the client
2637should fall back to a reasonable default.*/
2638    #[serde(default)]
2639    pub kind: Option<InlayHintKind>,
2640    /**Optional text edits that are performed when accepting this inlay hint.
2641
2642*Note* that edits are expected to change the document so that the inlay
2643hint (or its nearest variant) is now part of the document and the inlay
2644hint itself is now obsolete.*/
2645    #[serde(rename = "textEdits")]
2646    #[serde(default)]
2647    pub text_edits: Option<Vec<TextEdit>>,
2648    ///The tooltip text when you hover over this item.
2649    #[serde(default)]
2650    pub tooltip: Option<MarkupContentOrString>,
2651    /**Render padding before the hint.
2652
2653Note: Padding should use the editor's background color, not the
2654background color of the hint itself. That means padding can be used
2655to visually align/separate an inlay hint.*/
2656    #[serde(rename = "paddingLeft")]
2657    #[serde(default)]
2658    pub padding_left: Option<bool>,
2659    /**Render padding after the hint.
2660
2661Note: Padding should use the editor's background color, not the
2662background color of the hint itself. That means padding can be used
2663to visually align/separate an inlay hint.*/
2664    #[serde(rename = "paddingRight")]
2665    #[serde(default)]
2666    pub padding_right: Option<bool>,
2667    /**A data entry field that is preserved on an inlay hint between
2668a `textDocument/inlayHint` and a `inlayHint/resolve` request.*/
2669    #[serde(default)]
2670    pub data: Option<LSPAny>,
2671}
2672/**Inlay hint options used during static or dynamic registration.
2673
2674@since 3.17.0*/
2675#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2676#[serde(rename_all = "camelCase")]
2677pub struct InlayHintRegistrationOptions {
2678    #[serde(flatten)]
2679    pub inlay_hint_options_base: InlayHintOptions,
2680    #[serde(flatten)]
2681    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2682    #[serde(flatten)]
2683    pub static_registration_options_mixin: StaticRegistrationOptions,
2684}
2685/**Parameters of the document diagnostic request.
2686
2687@since 3.17.0*/
2688#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2689#[serde(rename_all = "camelCase")]
2690pub struct DocumentDiagnosticParams {
2691    #[serde(flatten)]
2692    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2693    #[serde(flatten)]
2694    pub partial_result_params_mixin: PartialResultParams,
2695    ///The text document.
2696    #[serde(rename = "textDocument")]
2697    pub text_document: TextDocumentIdentifier,
2698    ///The additional identifier  provided during registration.
2699    #[serde(default)]
2700    pub identifier: Option<String>,
2701    ///The result id of a previous response if provided.
2702    #[serde(rename = "previousResultId")]
2703    #[serde(default)]
2704    pub previous_result_id: Option<String>,
2705}
2706/**A partial result for a document diagnostic report.
2707
2708@since 3.17.0*/
2709#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2710#[serde(rename_all = "camelCase")]
2711pub struct DocumentDiagnosticReportPartialResult {
2712    #[serde(rename = "relatedDocuments")]
2713    pub related_documents: std::collections::BTreeMap<
2714        DocumentUri,
2715        FullDocumentDiagnosticReportOrUnchangedDocumentDiagnosticReport,
2716    >,
2717}
2718/**Cancellation data returned from a diagnostic request.
2719
2720@since 3.17.0*/
2721#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2722#[serde(rename_all = "camelCase")]
2723pub struct DiagnosticServerCancellationData {
2724    #[serde(rename = "retriggerRequest")]
2725    pub retrigger_request: bool,
2726}
2727/**Diagnostic registration options.
2728
2729@since 3.17.0*/
2730#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2731#[serde(rename_all = "camelCase")]
2732pub struct DiagnosticRegistrationOptions {
2733    #[serde(flatten)]
2734    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2735    #[serde(flatten)]
2736    pub diagnostic_options_base: DiagnosticOptions,
2737    #[serde(flatten)]
2738    pub static_registration_options_mixin: StaticRegistrationOptions,
2739}
2740/**Parameters of the workspace diagnostic request.
2741
2742@since 3.17.0*/
2743#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2744#[serde(rename_all = "camelCase")]
2745pub struct WorkspaceDiagnosticParams {
2746    #[serde(flatten)]
2747    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2748    #[serde(flatten)]
2749    pub partial_result_params_mixin: PartialResultParams,
2750    ///The additional identifier provided during registration.
2751    #[serde(default)]
2752    pub identifier: Option<String>,
2753    /**The currently known diagnostic reports with their
2754previous result ids.*/
2755    #[serde(rename = "previousResultIds")]
2756    pub previous_result_ids: Vec<PreviousResultId>,
2757}
2758/**A workspace diagnostic report.
2759
2760@since 3.17.0*/
2761#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2762#[serde(rename_all = "camelCase")]
2763pub struct WorkspaceDiagnosticReport {
2764    pub items: Vec<WorkspaceDocumentDiagnosticReport>,
2765}
2766/**A partial result for a workspace diagnostic report.
2767
2768@since 3.17.0*/
2769#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2770#[serde(rename_all = "camelCase")]
2771pub struct WorkspaceDiagnosticReportPartialResult {
2772    pub items: Vec<WorkspaceDocumentDiagnosticReport>,
2773}
2774/**The params sent in an open notebook document notification.
2775
2776@since 3.17.0*/
2777#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2778#[serde(rename_all = "camelCase")]
2779pub struct DidOpenNotebookDocumentParams {
2780    ///The notebook document that got opened.
2781    #[serde(rename = "notebookDocument")]
2782    pub notebook_document: NotebookDocument,
2783    /**The text documents that represent the content
2784of a notebook cell.*/
2785    #[serde(rename = "cellTextDocuments")]
2786    pub cell_text_documents: Vec<TextDocumentItem>,
2787}
2788/**Registration options specific to a notebook.
2789
2790@since 3.17.0*/
2791#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2792#[serde(rename_all = "camelCase")]
2793pub struct NotebookDocumentSyncRegistrationOptions {
2794    #[serde(flatten)]
2795    pub notebook_document_sync_options_base: NotebookDocumentSyncOptions,
2796    #[serde(flatten)]
2797    pub static_registration_options_mixin: StaticRegistrationOptions,
2798}
2799/**The params sent in a change notebook document notification.
2800
2801@since 3.17.0*/
2802#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2803#[serde(rename_all = "camelCase")]
2804pub struct DidChangeNotebookDocumentParams {
2805    /**The notebook document that did change. The version number points
2806to the version after all provided changes have been applied. If
2807only the text document content of a cell changes the notebook version
2808doesn't necessarily have to change.*/
2809    #[serde(rename = "notebookDocument")]
2810    pub notebook_document: VersionedNotebookDocumentIdentifier,
2811    /**The actual changes to the notebook document.
2812
2813The changes describe single state changes to the notebook document.
2814So if there are two changes c1 (at array index 0) and c2 (at array
2815index 1) for a notebook in state S then c1 moves the notebook from
2816S to S' and c2 from S' to S''. So c1 is computed on the state S and
2817c2 is computed on the state S'.
2818
2819To mirror the content of a notebook using change events use the following approach:
2820- start with the same initial content
2821- apply the 'notebookDocument/didChange' notifications in the order you receive them.
2822- apply the `NotebookChangeEvent`s in a single notification in the order
2823  you receive them.*/
2824    pub change: NotebookDocumentChangeEvent,
2825}
2826/**The params sent in a save notebook document notification.
2827
2828@since 3.17.0*/
2829#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2830#[serde(rename_all = "camelCase")]
2831pub struct DidSaveNotebookDocumentParams {
2832    ///The notebook document that got saved.
2833    #[serde(rename = "notebookDocument")]
2834    pub notebook_document: NotebookDocumentIdentifier,
2835}
2836/**The params sent in a close notebook document notification.
2837
2838@since 3.17.0*/
2839#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2840#[serde(rename_all = "camelCase")]
2841pub struct DidCloseNotebookDocumentParams {
2842    ///The notebook document that got closed.
2843    #[serde(rename = "notebookDocument")]
2844    pub notebook_document: NotebookDocumentIdentifier,
2845    /**The text documents that represent the content
2846of a notebook cell that got closed.*/
2847    #[serde(rename = "cellTextDocuments")]
2848    pub cell_text_documents: Vec<TextDocumentIdentifier>,
2849}
2850/**A parameter literal used in inline completion requests.
2851
2852@since 3.18.0*/
2853#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2854#[serde(rename_all = "camelCase")]
2855pub struct InlineCompletionParams {
2856    #[serde(flatten)]
2857    pub text_document_position_params_base: TextDocumentPositionParams,
2858    #[serde(flatten)]
2859    pub work_done_progress_params_mixin: WorkDoneProgressParams,
2860    /**Additional information about the context in which inline completions were
2861requested.*/
2862    pub context: InlineCompletionContext,
2863}
2864/**Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor.
2865
2866@since 3.18.0*/
2867#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2868#[serde(rename_all = "camelCase")]
2869pub struct InlineCompletionList {
2870    ///The inline completion items
2871    pub items: Vec<InlineCompletionItem>,
2872}
2873/**An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.
2874
2875@since 3.18.0*/
2876#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2877#[serde(rename_all = "camelCase")]
2878pub struct InlineCompletionItem {
2879    ///The text to replace the range with. Must be set.
2880    #[serde(rename = "insertText")]
2881    pub insert_text: StringOrStringValue,
2882    ///A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used.
2883    #[serde(rename = "filterText")]
2884    #[serde(default)]
2885    pub filter_text: Option<String>,
2886    ///The range to replace. Must begin and end on the same line.
2887    #[serde(default)]
2888    pub range: Option<Range>,
2889    ///An optional {@link Command} that is executed *after* inserting this completion.
2890    #[serde(default)]
2891    pub command: Option<Command>,
2892}
2893/**Inline completion options used during static or dynamic registration.
2894
2895@since 3.18.0*/
2896#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2897#[serde(rename_all = "camelCase")]
2898pub struct InlineCompletionRegistrationOptions {
2899    #[serde(flatten)]
2900    pub inline_completion_options_base: InlineCompletionOptions,
2901    #[serde(flatten)]
2902    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
2903    #[serde(flatten)]
2904    pub static_registration_options_mixin: StaticRegistrationOptions,
2905}
2906/**Parameters for the `workspace/textDocumentContent` request.
2907
2908@since 3.18.0*/
2909#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2910#[serde(rename_all = "camelCase")]
2911pub struct TextDocumentContentParams {
2912    ///The text document.
2913    #[serde(rename = "textDocument")]
2914    pub text_document: TextDocumentIdentifier,
2915}
2916/**Result of the `workspace/textDocumentContent` request.
2917
2918@since 3.18.0*/
2919#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2920#[serde(rename_all = "camelCase")]
2921pub struct TextDocumentContentResult {
2922    /**The text content of the text document. Please note, that the content of
2923any subsequent open notifications for the text document might differ
2924from the returned content due to whitespace and line ending
2925normalizations done on the client*/
2926    pub text: String,
2927}
2928/**Text document content provider registration options.
2929
2930@since 3.18.0*/
2931#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2932#[serde(rename_all = "camelCase")]
2933pub struct TextDocumentContentRegistrationOptions {
2934    #[serde(flatten)]
2935    pub text_document_content_options_base: TextDocumentContentOptions,
2936    #[serde(flatten)]
2937    pub static_registration_options_mixin: StaticRegistrationOptions,
2938}
2939/**Parameters for the `workspace/textDocumentContent/refresh` request.
2940
2941@since 3.18.0*/
2942#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2943#[serde(rename_all = "camelCase")]
2944pub struct TextDocumentContentRefreshParams {
2945    ///The uri of the text document to refresh.
2946    pub uri: DocumentUri,
2947}
2948#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2949#[serde(rename_all = "camelCase")]
2950pub struct RegistrationParams {
2951    pub registrations: Vec<Registration>,
2952}
2953#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2954#[serde(rename_all = "camelCase")]
2955pub struct UnregistrationParams {
2956    pub unregisterations: Vec<Unregistration>,
2957}
2958#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2959#[serde(rename_all = "camelCase")]
2960pub struct InitializeParams {
2961    #[serde(flatten)]
2962    pub initialize_params_base: _InitializeParams,
2963    #[serde(flatten)]
2964    pub workspace_folders_initialize_params_base: WorkspaceFoldersInitializeParams,
2965}
2966///The result returned from an initialize request.
2967#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2968#[serde(rename_all = "camelCase")]
2969pub struct InitializeResult {
2970    ///The capabilities the language server provides.
2971    pub capabilities: ServerCapabilities,
2972    /**Information about the server.
2973
2974@since 3.15.0*/
2975    #[serde(rename = "serverInfo")]
2976    #[serde(default)]
2977    pub server_info: Option<ServerInfo>,
2978}
2979/**The data type of the ResponseError if the
2980initialize request fails.*/
2981#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2982#[serde(rename_all = "camelCase")]
2983pub struct InitializeError {
2984    /**Indicates whether the client execute the following retry logic:
2985(1) show the message provided by the ResponseError to the user
2986(2) user selects retry or cancel
2987(3) if user selected retry the initialize method is sent again.*/
2988    pub retry: bool,
2989}
2990#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2991#[serde(rename_all = "camelCase")]
2992pub struct InitializedParams {}
2993///The parameters of a change configuration notification.
2994#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2995#[serde(rename_all = "camelCase")]
2996pub struct DidChangeConfigurationParams {
2997    ///The actual changed settings
2998    pub settings: LSPAny,
2999}
3000#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3001#[serde(rename_all = "camelCase")]
3002pub struct DidChangeConfigurationRegistrationOptions {
3003    #[serde(default)]
3004    pub section: Option<StringOrStringArray>,
3005}
3006///The parameters of a notification message.
3007#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3008#[serde(rename_all = "camelCase")]
3009pub struct ShowMessageParams {
3010    ///The message type. See {@link MessageType}
3011    pub type_: MessageType,
3012    ///The actual message.
3013    pub message: String,
3014}
3015#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3016#[serde(rename_all = "camelCase")]
3017pub struct ShowMessageRequestParams {
3018    ///The message type. See {@link MessageType}
3019    pub type_: MessageType,
3020    ///The actual message.
3021    pub message: String,
3022    ///The message action items to present.
3023    #[serde(default)]
3024    pub actions: Option<Vec<MessageActionItem>>,
3025}
3026#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3027#[serde(rename_all = "camelCase")]
3028pub struct MessageActionItem {
3029    ///A short title like 'Retry', 'Open Log' etc.
3030    pub title: String,
3031}
3032///The log message parameters.
3033#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3034#[serde(rename_all = "camelCase")]
3035pub struct LogMessageParams {
3036    ///The message type. See {@link MessageType}
3037    pub type_: MessageType,
3038    ///The actual message.
3039    pub message: String,
3040}
3041///The parameters sent in an open text document notification
3042#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3043#[serde(rename_all = "camelCase")]
3044pub struct DidOpenTextDocumentParams {
3045    ///The document that was opened.
3046    #[serde(rename = "textDocument")]
3047    pub text_document: TextDocumentItem,
3048}
3049///The change text document notification's parameters.
3050#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3051#[serde(rename_all = "camelCase")]
3052pub struct DidChangeTextDocumentParams {
3053    /**The document that did change. The version number points
3054to the version after all provided content changes have
3055been applied.*/
3056    #[serde(rename = "textDocument")]
3057    pub text_document: VersionedTextDocumentIdentifier,
3058    /**The actual content changes. The content changes describe single state changes
3059to the document. So if there are two content changes c1 (at array index 0) and
3060c2 (at array index 1) for a document in state S then c1 moves the document from
3061S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed
3062on the state S'.
3063
3064To mirror the content of a document using change events use the following approach:
3065- start with the same initial content
3066- apply the 'textDocument/didChange' notifications in the order you receive them.
3067- apply the `TextDocumentContentChangeEvent`s in a single notification in the order
3068  you receive them.*/
3069    #[serde(rename = "contentChanges")]
3070    pub content_changes: Vec<TextDocumentContentChangeEvent>,
3071}
3072///Describe options to be used when registered for text document change events.
3073#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3074#[serde(rename_all = "camelCase")]
3075pub struct TextDocumentChangeRegistrationOptions {
3076    #[serde(flatten)]
3077    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3078    ///How documents are synced to the server.
3079    #[serde(rename = "syncKind")]
3080    pub sync_kind: TextDocumentSyncKind,
3081}
3082///The parameters sent in a close text document notification
3083#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3084#[serde(rename_all = "camelCase")]
3085pub struct DidCloseTextDocumentParams {
3086    ///The document that was closed.
3087    #[serde(rename = "textDocument")]
3088    pub text_document: TextDocumentIdentifier,
3089}
3090///The parameters sent in a save text document notification
3091#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3092#[serde(rename_all = "camelCase")]
3093pub struct DidSaveTextDocumentParams {
3094    ///The document that was saved.
3095    #[serde(rename = "textDocument")]
3096    pub text_document: TextDocumentIdentifier,
3097    /**Optional the content when saved. Depends on the includeText value
3098when the save notification was requested.*/
3099    #[serde(default)]
3100    pub text: Option<String>,
3101}
3102///Save registration options.
3103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3104#[serde(rename_all = "camelCase")]
3105pub struct TextDocumentSaveRegistrationOptions {
3106    #[serde(flatten)]
3107    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3108    #[serde(flatten)]
3109    pub save_options_base: SaveOptions,
3110}
3111///The parameters sent in a will save text document notification.
3112#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3113#[serde(rename_all = "camelCase")]
3114pub struct WillSaveTextDocumentParams {
3115    ///The document that will be saved.
3116    #[serde(rename = "textDocument")]
3117    pub text_document: TextDocumentIdentifier,
3118    ///The 'TextDocumentSaveReason'.
3119    pub reason: TextDocumentSaveReason,
3120}
3121///A text edit applicable to a text document.
3122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3123#[serde(rename_all = "camelCase")]
3124pub struct TextEdit {
3125    /**The range of the text document to be manipulated. To insert
3126text into a document create a range where start === end.*/
3127    pub range: Range,
3128    /**The string to be inserted. For delete operations use an
3129empty string.*/
3130    #[serde(rename = "newText")]
3131    pub new_text: String,
3132}
3133///The watched files change notification's parameters.
3134#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3135#[serde(rename_all = "camelCase")]
3136pub struct DidChangeWatchedFilesParams {
3137    ///The actual file events.
3138    pub changes: Vec<FileEvent>,
3139}
3140///Describe options to be used when registered for text document change events.
3141#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3142#[serde(rename_all = "camelCase")]
3143pub struct DidChangeWatchedFilesRegistrationOptions {
3144    ///The watchers to register.
3145    pub watchers: Vec<FileSystemWatcher>,
3146}
3147///The publish diagnostic notification's parameters.
3148#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3149#[serde(rename_all = "camelCase")]
3150pub struct PublishDiagnosticsParams {
3151    ///The URI for which diagnostic information is reported.
3152    pub uri: DocumentUri,
3153    /**Optional the version number of the document the diagnostics are published for.
3154
3155@since 3.15.0*/
3156    #[serde(default)]
3157    pub version: Option<Integer>,
3158    ///An array of diagnostic information items.
3159    pub diagnostics: Vec<Diagnostic>,
3160}
3161///Completion parameters
3162#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3163#[serde(rename_all = "camelCase")]
3164pub struct CompletionParams {
3165    #[serde(flatten)]
3166    pub text_document_position_params_base: TextDocumentPositionParams,
3167    #[serde(flatten)]
3168    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3169    #[serde(flatten)]
3170    pub partial_result_params_mixin: PartialResultParams,
3171    /**The completion context. This is only available it the client specifies
3172to send this using the client capability `textDocument.completion.contextSupport === true`*/
3173    #[serde(default)]
3174    pub context: Option<CompletionContext>,
3175}
3176/**A completion item represents a text snippet that is
3177proposed to complete text that is being typed.*/
3178#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3179#[serde(rename_all = "camelCase")]
3180pub struct CompletionItem {
3181    /**The label of this completion item.
3182
3183The label property is also by default the text that
3184is inserted when selecting this completion.
3185
3186If label details are provided the label itself should
3187be an unqualified name of the completion item.*/
3188    pub label: String,
3189    /**Additional details for the label
3190
3191@since 3.17.0*/
3192    #[serde(rename = "labelDetails")]
3193    #[serde(default)]
3194    pub label_details: Option<CompletionItemLabelDetails>,
3195    /**The kind of this completion item. Based of the kind
3196an icon is chosen by the editor.*/
3197    #[serde(default)]
3198    pub kind: Option<CompletionItemKind>,
3199    /**Tags for this completion item.
3200
3201@since 3.15.0*/
3202    #[serde(default)]
3203    pub tags: Option<Vec<CompletionItemTag>>,
3204    /**A human-readable string with additional information
3205about this item, like type or symbol information.*/
3206    #[serde(default)]
3207    pub detail: Option<String>,
3208    ///A human-readable string that represents a doc-comment.
3209    #[serde(default)]
3210    pub documentation: Option<MarkupContentOrString>,
3211    /**Indicates if this item is deprecated.
3212@deprecated Use `tags` instead.*/
3213    #[serde(default)]
3214    pub deprecated: Option<bool>,
3215    /**Select this item when showing.
3216
3217*Note* that only one completion item can be selected and that the
3218tool / client decides which item that is. The rule is that the *first*
3219item of those that match best is selected.*/
3220    #[serde(default)]
3221    pub preselect: Option<bool>,
3222    /**A string that should be used when comparing this item
3223with other items. When `falsy` the {@link CompletionItem.label label}
3224is used.*/
3225    #[serde(rename = "sortText")]
3226    #[serde(default)]
3227    pub sort_text: Option<String>,
3228    /**A string that should be used when filtering a set of
3229completion items. When `falsy` the {@link CompletionItem.label label}
3230is used.*/
3231    #[serde(rename = "filterText")]
3232    #[serde(default)]
3233    pub filter_text: Option<String>,
3234    /**A string that should be inserted into a document when selecting
3235this completion. When `falsy` the {@link CompletionItem.label label}
3236is used.
3237
3238The `insertText` is subject to interpretation by the client side.
3239Some tools might not take the string literally. For example
3240VS Code when code complete is requested in this example
3241`con<cursor position>` and a completion item with an `insertText` of
3242`console` is provided it will only insert `sole`. Therefore it is
3243recommended to use `textEdit` instead since it avoids additional client
3244side interpretation.*/
3245    #[serde(rename = "insertText")]
3246    #[serde(default)]
3247    pub insert_text: Option<String>,
3248    /**The format of the insert text. The format applies to both the
3249`insertText` property and the `newText` property of a provided
3250`textEdit`. If omitted defaults to `InsertTextFormat.PlainText`.
3251
3252Please note that the insertTextFormat doesn't apply to
3253`additionalTextEdits`.*/
3254    #[serde(rename = "insertTextFormat")]
3255    #[serde(default)]
3256    pub insert_text_format: Option<InsertTextFormat>,
3257    /**How whitespace and indentation is handled during completion
3258item insertion. If not provided the clients default value depends on
3259the `textDocument.completion.insertTextMode` client capability.
3260
3261@since 3.16.0*/
3262    #[serde(rename = "insertTextMode")]
3263    #[serde(default)]
3264    pub insert_text_mode: Option<InsertTextMode>,
3265    /**An {@link TextEdit edit} which is applied to a document when selecting
3266this completion. When an edit is provided the value of
3267{@link CompletionItem.insertText insertText} is ignored.
3268
3269Most editors support two different operations when accepting a completion
3270item. One is to insert a completion text and the other is to replace an
3271existing text with a completion text. Since this can usually not be
3272predetermined by a server it can report both ranges. Clients need to
3273signal support for `InsertReplaceEdits` via the
3274`textDocument.completion.insertReplaceSupport` client capability
3275property.
3276
3277*Note 1:* The text edit's range as well as both ranges from an insert
3278replace edit must be a [single line] and they must contain the position
3279at which completion has been requested.
3280*Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range
3281must be a prefix of the edit's replace range, that means it must be
3282contained and starting at the same position.
3283
3284@since 3.16.0 additional type `InsertReplaceEdit`*/
3285    #[serde(rename = "textEdit")]
3286    #[serde(default)]
3287    pub text_edit: Option<InsertReplaceEditOrTextEdit>,
3288    /**The edit text used if the completion item is part of a CompletionList and
3289CompletionList defines an item default for the text edit range.
3290
3291Clients will only honor this property if they opt into completion list
3292item defaults using the capability `completionList.itemDefaults`.
3293
3294If not provided and a list's default range is provided the label
3295property is used as a text.
3296
3297@since 3.17.0*/
3298    #[serde(rename = "textEditText")]
3299    #[serde(default)]
3300    pub text_edit_text: Option<String>,
3301    /**An optional array of additional {@link TextEdit text edits} that are applied when
3302selecting this completion. Edits must not overlap (including the same insert position)
3303with the main {@link CompletionItem.textEdit edit} nor with themselves.
3304
3305Additional text edits should be used to change text unrelated to the current cursor position
3306(for example adding an import statement at the top of the file if the completion item will
3307insert an unqualified type).*/
3308    #[serde(rename = "additionalTextEdits")]
3309    #[serde(default)]
3310    pub additional_text_edits: Option<Vec<TextEdit>>,
3311    /**An optional set of characters that when pressed while this completion is active will accept it first and
3312then type that character. *Note* that all commit characters should have `length=1` and that superfluous
3313characters will be ignored.*/
3314    #[serde(rename = "commitCharacters")]
3315    #[serde(default)]
3316    pub commit_characters: Option<Vec<String>>,
3317    /**An optional {@link Command command} that is executed *after* inserting this completion. *Note* that
3318additional modifications to the current document should be described with the
3319{@link CompletionItem.additionalTextEdits additionalTextEdits}-property.*/
3320    #[serde(default)]
3321    pub command: Option<Command>,
3322    /**A data entry field that is preserved on a completion item between a
3323{@link CompletionRequest} and a {@link CompletionResolveRequest}.*/
3324    #[serde(default)]
3325    pub data: Option<LSPAny>,
3326}
3327/**Represents a collection of {@link CompletionItem completion items} to be presented
3328in the editor.*/
3329#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3330#[serde(rename_all = "camelCase")]
3331pub struct CompletionList {
3332    /**This list it not complete. Further typing results in recomputing this list.
3333
3334Recomputed lists have all their items replaced (not appended) in the
3335incomplete completion sessions.*/
3336    #[serde(rename = "isIncomplete")]
3337    pub is_incomplete: bool,
3338    /**In many cases the items of an actual completion result share the same
3339value for properties like `commitCharacters` or the range of a text
3340edit. A completion list can therefore define item defaults which will
3341be used if a completion item itself doesn't specify the value.
3342
3343If a completion list specifies a default value and a completion item
3344also specifies a corresponding value, the rules for combining these are
3345defined by `applyKinds` (if the client supports it), defaulting to
3346ApplyKind.Replace.
3347
3348Servers are only allowed to return default values if the client
3349signals support for this via the `completionList.itemDefaults`
3350capability.
3351
3352@since 3.17.0*/
3353    #[serde(rename = "itemDefaults")]
3354    #[serde(default)]
3355    pub item_defaults: Option<CompletionItemDefaults>,
3356    /**Specifies how fields from a completion item should be combined with those
3357from `completionList.itemDefaults`.
3358
3359If unspecified, all fields will be treated as ApplyKind.Replace.
3360
3361If a field's value is ApplyKind.Replace, the value from a completion item
3362(if provided and not `null`) will always be used instead of the value
3363from `completionItem.itemDefaults`.
3364
3365If a field's value is ApplyKind.Merge, the values will be merged using
3366the rules defined against each field below.
3367
3368Servers are only allowed to return `applyKind` if the client
3369signals support for this via the `completionList.applyKindSupport`
3370capability.
3371
3372@since 3.18.0*/
3373    #[serde(rename = "applyKind")]
3374    #[serde(default)]
3375    pub apply_kind: Option<CompletionItemApplyKinds>,
3376    ///The completion items.
3377    pub items: Vec<CompletionItem>,
3378}
3379///Registration options for a {@link CompletionRequest}.
3380#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3381#[serde(rename_all = "camelCase")]
3382pub struct CompletionRegistrationOptions {
3383    #[serde(flatten)]
3384    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3385    #[serde(flatten)]
3386    pub completion_options_base: CompletionOptions,
3387}
3388///Parameters for a {@link HoverRequest}.
3389#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3390#[serde(rename_all = "camelCase")]
3391pub struct HoverParams {
3392    #[serde(flatten)]
3393    pub text_document_position_params_base: TextDocumentPositionParams,
3394    #[serde(flatten)]
3395    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3396}
3397///The result of a hover request.
3398#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3399#[serde(rename_all = "camelCase")]
3400pub struct Hover {
3401    ///The hover's content
3402    pub contents: MarkedStringOrMarkedStringArrayOrMarkupContent,
3403    /**An optional range inside the text document that is used to
3404visualize the hover, e.g. by changing the background color.*/
3405    #[serde(default)]
3406    pub range: Option<Range>,
3407}
3408///Registration options for a {@link HoverRequest}.
3409#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3410#[serde(rename_all = "camelCase")]
3411pub struct HoverRegistrationOptions {
3412    #[serde(flatten)]
3413    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3414    #[serde(flatten)]
3415    pub hover_options_base: HoverOptions,
3416}
3417///Parameters for a {@link SignatureHelpRequest}.
3418#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3419#[serde(rename_all = "camelCase")]
3420pub struct SignatureHelpParams {
3421    #[serde(flatten)]
3422    pub text_document_position_params_base: TextDocumentPositionParams,
3423    #[serde(flatten)]
3424    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3425    /**The signature help context. This is only available if the client specifies
3426to send this using the client capability `textDocument.signatureHelp.contextSupport === true`
3427
3428@since 3.15.0*/
3429    #[serde(default)]
3430    pub context: Option<SignatureHelpContext>,
3431}
3432/**Signature help represents the signature of something
3433callable. There can be multiple signature but only one
3434active and only one active parameter.*/
3435#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3436#[serde(rename_all = "camelCase")]
3437pub struct SignatureHelp {
3438    ///One or more signatures.
3439    pub signatures: Vec<SignatureInformation>,
3440    /**The active signature. If omitted or the value lies outside the
3441range of `signatures` the value defaults to zero or is ignored if
3442the `SignatureHelp` has no signatures.
3443
3444Whenever possible implementors should make an active decision about
3445the active signature and shouldn't rely on a default value.
3446
3447In future version of the protocol this property might become
3448mandatory to better express this.*/
3449    #[serde(rename = "activeSignature")]
3450    #[serde(default)]
3451    pub active_signature: Option<Uinteger>,
3452    /**The active parameter of the active signature.
3453
3454If `null`, no parameter of the signature is active (for example a named
3455argument that does not match any declared parameters). This is only valid
3456if the client specifies the client capability
3457`textDocument.signatureHelp.noActiveParameterSupport === true`
3458
3459If omitted or the value lies outside the range of
3460`signatures[activeSignature].parameters` defaults to 0 if the active
3461signature has parameters.
3462
3463If the active signature has no parameters it is ignored.
3464
3465In future version of the protocol this property might become
3466mandatory (but still nullable) to better express the active parameter if
3467the active signature does have any.
3468
3469Since version 3.16.0 the `SignatureInformation` itself provides a
3470`activeParameter` property and it should be used instead of this one.*/
3471    #[serde(rename = "activeParameter")]
3472    #[serde(default)]
3473    pub active_parameter: Option<Option<Uinteger>>,
3474}
3475///Registration options for a {@link SignatureHelpRequest}.
3476#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3477#[serde(rename_all = "camelCase")]
3478pub struct SignatureHelpRegistrationOptions {
3479    #[serde(flatten)]
3480    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3481    #[serde(flatten)]
3482    pub signature_help_options_base: SignatureHelpOptions,
3483}
3484///Parameters for a {@link DefinitionRequest}.
3485#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3486#[serde(rename_all = "camelCase")]
3487pub struct DefinitionParams {
3488    #[serde(flatten)]
3489    pub text_document_position_params_base: TextDocumentPositionParams,
3490    #[serde(flatten)]
3491    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3492    #[serde(flatten)]
3493    pub partial_result_params_mixin: PartialResultParams,
3494}
3495///Registration options for a {@link DefinitionRequest}.
3496#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3497#[serde(rename_all = "camelCase")]
3498pub struct DefinitionRegistrationOptions {
3499    #[serde(flatten)]
3500    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3501    #[serde(flatten)]
3502    pub definition_options_base: DefinitionOptions,
3503}
3504///Parameters for a {@link ReferencesRequest}.
3505#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3506#[serde(rename_all = "camelCase")]
3507pub struct ReferenceParams {
3508    #[serde(flatten)]
3509    pub text_document_position_params_base: TextDocumentPositionParams,
3510    #[serde(flatten)]
3511    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3512    #[serde(flatten)]
3513    pub partial_result_params_mixin: PartialResultParams,
3514    pub context: ReferenceContext,
3515}
3516///Registration options for a {@link ReferencesRequest}.
3517#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3518#[serde(rename_all = "camelCase")]
3519pub struct ReferenceRegistrationOptions {
3520    #[serde(flatten)]
3521    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3522    #[serde(flatten)]
3523    pub reference_options_base: ReferenceOptions,
3524}
3525///Parameters for a {@link DocumentHighlightRequest}.
3526#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3527#[serde(rename_all = "camelCase")]
3528pub struct DocumentHighlightParams {
3529    #[serde(flatten)]
3530    pub text_document_position_params_base: TextDocumentPositionParams,
3531    #[serde(flatten)]
3532    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3533    #[serde(flatten)]
3534    pub partial_result_params_mixin: PartialResultParams,
3535}
3536/**A document highlight is a range inside a text document which deserves
3537special attention. Usually a document highlight is visualized by changing
3538the background color of its range.*/
3539#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3540#[serde(rename_all = "camelCase")]
3541pub struct DocumentHighlight {
3542    ///The range this highlight applies to.
3543    pub range: Range,
3544    ///The highlight kind, default is {@link DocumentHighlightKind.Text text}.
3545    #[serde(default)]
3546    pub kind: Option<DocumentHighlightKind>,
3547}
3548///Registration options for a {@link DocumentHighlightRequest}.
3549#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3550#[serde(rename_all = "camelCase")]
3551pub struct DocumentHighlightRegistrationOptions {
3552    #[serde(flatten)]
3553    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3554    #[serde(flatten)]
3555    pub document_highlight_options_base: DocumentHighlightOptions,
3556}
3557///Parameters for a {@link DocumentSymbolRequest}.
3558#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3559#[serde(rename_all = "camelCase")]
3560pub struct DocumentSymbolParams {
3561    #[serde(flatten)]
3562    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3563    #[serde(flatten)]
3564    pub partial_result_params_mixin: PartialResultParams,
3565    ///The text document.
3566    #[serde(rename = "textDocument")]
3567    pub text_document: TextDocumentIdentifier,
3568}
3569/**Represents information about programming constructs like variables, classes,
3570interfaces etc.*/
3571#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3572#[serde(rename_all = "camelCase")]
3573pub struct SymbolInformation {
3574    #[serde(flatten)]
3575    pub base_symbol_information_base: BaseSymbolInformation,
3576    /**Indicates if this symbol is deprecated.
3577
3578@deprecated Use tags instead*/
3579    #[serde(default)]
3580    pub deprecated: Option<bool>,
3581    /**The location of this symbol. The location's range is used by a tool
3582to reveal the location in the editor. If the symbol is selected in the
3583tool the range's start information is used to position the cursor. So
3584the range usually spans more than the actual symbol's name and does
3585normally include things like visibility modifiers.
3586
3587The range doesn't have to denote a node range in the sense of an abstract
3588syntax tree. It can therefore not be used to re-construct a hierarchy of
3589the symbols.*/
3590    pub location: Location,
3591}
3592/**Represents programming constructs like variables, classes, interfaces etc.
3593that appear in a document. Document symbols can be hierarchical and they
3594have two ranges: one that encloses its definition and one that points to
3595its most interesting range, e.g. the range of an identifier.*/
3596#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3597#[serde(rename_all = "camelCase")]
3598pub struct DocumentSymbol {
3599    /**The name of this symbol. Will be displayed in the user interface and therefore must not be
3600an empty string or a string only consisting of white spaces.*/
3601    pub name: String,
3602    ///More detail for this symbol, e.g the signature of a function.
3603    #[serde(default)]
3604    pub detail: Option<String>,
3605    ///The kind of this symbol.
3606    pub kind: SymbolKind,
3607    /**Tags for this document symbol.
3608
3609@since 3.16.0*/
3610    #[serde(default)]
3611    pub tags: Option<Vec<SymbolTag>>,
3612    /**Indicates if this symbol is deprecated.
3613
3614@deprecated Use tags instead*/
3615    #[serde(default)]
3616    pub deprecated: Option<bool>,
3617    /**The range enclosing this symbol not including leading/trailing whitespace but everything else
3618like comments. This information is typically used to determine if the clients cursor is
3619inside the symbol to reveal in the symbol in the UI.*/
3620    pub range: Range,
3621    /**The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
3622Must be contained by the `range`.*/
3623    #[serde(rename = "selectionRange")]
3624    pub selection_range: Range,
3625    ///Children of this symbol, e.g. properties of a class.
3626    #[serde(default)]
3627    pub children: Option<Vec<DocumentSymbol>>,
3628}
3629///Registration options for a {@link DocumentSymbolRequest}.
3630#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3631#[serde(rename_all = "camelCase")]
3632pub struct DocumentSymbolRegistrationOptions {
3633    #[serde(flatten)]
3634    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3635    #[serde(flatten)]
3636    pub document_symbol_options_base: DocumentSymbolOptions,
3637}
3638///The parameters of a {@link CodeActionRequest}.
3639#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3640#[serde(rename_all = "camelCase")]
3641pub struct CodeActionParams {
3642    #[serde(flatten)]
3643    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3644    #[serde(flatten)]
3645    pub partial_result_params_mixin: PartialResultParams,
3646    ///The document in which the command was invoked.
3647    #[serde(rename = "textDocument")]
3648    pub text_document: TextDocumentIdentifier,
3649    ///The range for which the command was invoked.
3650    pub range: Range,
3651    ///Context carrying additional information.
3652    pub context: CodeActionContext,
3653}
3654/**Represents a reference to a command. Provides a title which
3655will be used to represent a command in the UI and, optionally,
3656an array of arguments which will be passed to the command handler
3657function when invoked.*/
3658#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3659#[serde(rename_all = "camelCase")]
3660pub struct Command {
3661    ///Title of the command, like `save`.
3662    pub title: String,
3663    /**An optional tooltip.
3664
3665@since 3.18.0*/
3666    #[serde(default)]
3667    pub tooltip: Option<String>,
3668    ///The identifier of the actual command handler.
3669    pub command: String,
3670    /**Arguments that the command handler should be
3671invoked with.*/
3672    #[serde(default)]
3673    pub arguments: Option<Vec<LSPAny>>,
3674}
3675/**A code action represents a change that can be performed in code, e.g. to fix a problem or
3676to refactor code.
3677
3678A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.*/
3679#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3680#[serde(rename_all = "camelCase")]
3681pub struct CodeAction {
3682    ///A short, human-readable, title for this code action.
3683    pub title: String,
3684    /**The kind of the code action.
3685
3686Used to filter code actions.*/
3687    #[serde(default)]
3688    pub kind: Option<CodeActionKind>,
3689    ///The diagnostics that this code action resolves.
3690    #[serde(default)]
3691    pub diagnostics: Option<Vec<Diagnostic>>,
3692    /**Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted
3693by keybindings.
3694
3695A quick fix should be marked preferred if it properly addresses the underlying error.
3696A refactoring should be marked preferred if it is the most reasonable choice of actions to take.
3697
3698@since 3.15.0*/
3699    #[serde(rename = "isPreferred")]
3700    #[serde(default)]
3701    pub is_preferred: Option<bool>,
3702    /**Marks that the code action cannot currently be applied.
3703
3704Clients should follow the following guidelines regarding disabled code actions:
3705
3706  - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action)
3707    code action menus.
3708
3709  - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type
3710    of code action, such as refactorings.
3711
3712  - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions)
3713    that auto applies a code action and only disabled code actions are returned, the client should show the user an
3714    error message with `reason` in the editor.
3715
3716@since 3.16.0*/
3717    #[serde(default)]
3718    pub disabled: Option<CodeActionDisabled>,
3719    ///The workspace edit this code action performs.
3720    #[serde(default)]
3721    pub edit: Option<WorkspaceEdit>,
3722    /**A command this code action executes. If a code action
3723provides an edit and a command, first the edit is
3724executed and then the command.*/
3725    #[serde(default)]
3726    pub command: Option<Command>,
3727    /**A data entry field that is preserved on a code action between
3728a `textDocument/codeAction` and a `codeAction/resolve` request.
3729
3730@since 3.16.0*/
3731    #[serde(default)]
3732    pub data: Option<LSPAny>,
3733    /**Tags for this code action.
3734
3735@since 3.18.0 - proposed*/
3736    #[serde(default)]
3737    pub tags: Option<Vec<CodeActionTag>>,
3738}
3739///Registration options for a {@link CodeActionRequest}.
3740#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3741#[serde(rename_all = "camelCase")]
3742pub struct CodeActionRegistrationOptions {
3743    #[serde(flatten)]
3744    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3745    #[serde(flatten)]
3746    pub code_action_options_base: CodeActionOptions,
3747}
3748///The parameters of a {@link WorkspaceSymbolRequest}.
3749#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3750#[serde(rename_all = "camelCase")]
3751pub struct WorkspaceSymbolParams {
3752    #[serde(flatten)]
3753    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3754    #[serde(flatten)]
3755    pub partial_result_params_mixin: PartialResultParams,
3756    /**A query string to filter symbols by. Clients may send an empty
3757string here to request all symbols.
3758
3759The `query`-parameter should be interpreted in a *relaxed way* as editors
3760will apply their own highlighting and scoring on the results. A good rule
3761of thumb is to match case-insensitive and to simply check that the
3762characters of *query* appear in their order in a candidate symbol.
3763Servers shouldn't use prefix, substring, or similar strict matching.*/
3764    pub query: String,
3765}
3766/**A special workspace symbol that supports locations without a range.
3767
3768See also SymbolInformation.
3769
3770@since 3.17.0*/
3771#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3772#[serde(rename_all = "camelCase")]
3773pub struct WorkspaceSymbol {
3774    #[serde(flatten)]
3775    pub base_symbol_information_base: BaseSymbolInformation,
3776    /**The location of the symbol. Whether a server is allowed to
3777return a location without a range depends on the client
3778capability `workspace.symbol.resolveSupport`.
3779
3780See SymbolInformation#location for more details.*/
3781    pub location: LocationOrLocationUriOnly,
3782    /**A data entry field that is preserved on a workspace symbol between a
3783workspace symbol request and a workspace symbol resolve request.*/
3784    #[serde(default)]
3785    pub data: Option<LSPAny>,
3786}
3787///Registration options for a {@link WorkspaceSymbolRequest}.
3788#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3789#[serde(rename_all = "camelCase")]
3790pub struct WorkspaceSymbolRegistrationOptions {
3791    #[serde(flatten)]
3792    pub workspace_symbol_options_base: WorkspaceSymbolOptions,
3793}
3794///The parameters of a {@link CodeLensRequest}.
3795#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3796#[serde(rename_all = "camelCase")]
3797pub struct CodeLensParams {
3798    #[serde(flatten)]
3799    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3800    #[serde(flatten)]
3801    pub partial_result_params_mixin: PartialResultParams,
3802    ///The document to request code lens for.
3803    #[serde(rename = "textDocument")]
3804    pub text_document: TextDocumentIdentifier,
3805}
3806/**A code lens represents a {@link Command command} that should be shown along with
3807source text, like the number of references, a way to run tests, etc.
3808
3809A code lens is _unresolved_ when no command is associated to it. For performance
3810reasons the creation of a code lens and resolving should be done in two stages.*/
3811#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3812#[serde(rename_all = "camelCase")]
3813pub struct CodeLens {
3814    ///The range in which this code lens is valid. Should only span a single line.
3815    pub range: Range,
3816    ///The command this code lens represents.
3817    #[serde(default)]
3818    pub command: Option<Command>,
3819    /**A data entry field that is preserved on a code lens item between
3820a {@link CodeLensRequest} and a {@link CodeLensResolveRequest}*/
3821    #[serde(default)]
3822    pub data: Option<LSPAny>,
3823}
3824///Registration options for a {@link CodeLensRequest}.
3825#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3826#[serde(rename_all = "camelCase")]
3827pub struct CodeLensRegistrationOptions {
3828    #[serde(flatten)]
3829    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3830    #[serde(flatten)]
3831    pub code_lens_options_base: CodeLensOptions,
3832}
3833///The parameters of a {@link DocumentLinkRequest}.
3834#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3835#[serde(rename_all = "camelCase")]
3836pub struct DocumentLinkParams {
3837    #[serde(flatten)]
3838    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3839    #[serde(flatten)]
3840    pub partial_result_params_mixin: PartialResultParams,
3841    ///The document to provide document links for.
3842    #[serde(rename = "textDocument")]
3843    pub text_document: TextDocumentIdentifier,
3844}
3845/**A document link is a range in a text document that links to an internal or external resource, like another
3846text document or a web site.*/
3847#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3848#[serde(rename_all = "camelCase")]
3849pub struct DocumentLink {
3850    ///The range this link applies to.
3851    pub range: Range,
3852    ///The uri this link points to. If missing a resolve request is sent later.
3853    #[serde(default)]
3854    pub target: Option<URI>,
3855    /**The tooltip text when you hover over this link.
3856
3857If a tooltip is provided, is will be displayed in a string that includes instructions on how to
3858trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS,
3859user settings, and localization.
3860
3861@since 3.15.0*/
3862    #[serde(default)]
3863    pub tooltip: Option<String>,
3864    /**A data entry field that is preserved on a document link between a
3865DocumentLinkRequest and a DocumentLinkResolveRequest.*/
3866    #[serde(default)]
3867    pub data: Option<LSPAny>,
3868}
3869///Registration options for a {@link DocumentLinkRequest}.
3870#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3871#[serde(rename_all = "camelCase")]
3872pub struct DocumentLinkRegistrationOptions {
3873    #[serde(flatten)]
3874    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3875    #[serde(flatten)]
3876    pub document_link_options_base: DocumentLinkOptions,
3877}
3878///The parameters of a {@link DocumentFormattingRequest}.
3879#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3880#[serde(rename_all = "camelCase")]
3881pub struct DocumentFormattingParams {
3882    #[serde(flatten)]
3883    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3884    ///The document to format.
3885    #[serde(rename = "textDocument")]
3886    pub text_document: TextDocumentIdentifier,
3887    ///The format options.
3888    pub options: FormattingOptions,
3889}
3890///Registration options for a {@link DocumentFormattingRequest}.
3891#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3892#[serde(rename_all = "camelCase")]
3893pub struct DocumentFormattingRegistrationOptions {
3894    #[serde(flatten)]
3895    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3896    #[serde(flatten)]
3897    pub document_formatting_options_base: DocumentFormattingOptions,
3898}
3899///The parameters of a {@link DocumentRangeFormattingRequest}.
3900#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3901#[serde(rename_all = "camelCase")]
3902pub struct DocumentRangeFormattingParams {
3903    #[serde(flatten)]
3904    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3905    ///The document to format.
3906    #[serde(rename = "textDocument")]
3907    pub text_document: TextDocumentIdentifier,
3908    ///The range to format
3909    pub range: Range,
3910    ///The format options
3911    pub options: FormattingOptions,
3912}
3913///Registration options for a {@link DocumentRangeFormattingRequest}.
3914#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3915#[serde(rename_all = "camelCase")]
3916pub struct DocumentRangeFormattingRegistrationOptions {
3917    #[serde(flatten)]
3918    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3919    #[serde(flatten)]
3920    pub document_range_formatting_options_base: DocumentRangeFormattingOptions,
3921}
3922/**The parameters of a {@link DocumentRangesFormattingRequest}.
3923
3924@since 3.18.0*/
3925#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3926#[serde(rename_all = "camelCase")]
3927pub struct DocumentRangesFormattingParams {
3928    #[serde(flatten)]
3929    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3930    ///The document to format.
3931    #[serde(rename = "textDocument")]
3932    pub text_document: TextDocumentIdentifier,
3933    ///The ranges to format
3934    pub ranges: Vec<Range>,
3935    ///The format options
3936    pub options: FormattingOptions,
3937}
3938///The parameters of a {@link DocumentOnTypeFormattingRequest}.
3939#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3940#[serde(rename_all = "camelCase")]
3941pub struct DocumentOnTypeFormattingParams {
3942    ///The document to format.
3943    #[serde(rename = "textDocument")]
3944    pub text_document: TextDocumentIdentifier,
3945    /**The position around which the on type formatting should happen.
3946This is not necessarily the exact position where the character denoted
3947by the property `ch` got typed.*/
3948    pub position: Position,
3949    /**The character that has been typed that triggered the formatting
3950on type request. That is not necessarily the last character that
3951got inserted into the document since the client could auto insert
3952characters as well (e.g. like automatic brace completion).*/
3953    pub ch: String,
3954    ///The formatting options.
3955    pub options: FormattingOptions,
3956}
3957///Registration options for a {@link DocumentOnTypeFormattingRequest}.
3958#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3959#[serde(rename_all = "camelCase")]
3960pub struct DocumentOnTypeFormattingRegistrationOptions {
3961    #[serde(flatten)]
3962    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3963    #[serde(flatten)]
3964    pub document_on_type_formatting_options_base: DocumentOnTypeFormattingOptions,
3965}
3966///The parameters of a {@link RenameRequest}.
3967#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3968#[serde(rename_all = "camelCase")]
3969pub struct RenameParams {
3970    #[serde(flatten)]
3971    pub text_document_position_params_base: TextDocumentPositionParams,
3972    #[serde(flatten)]
3973    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3974    /**The new name of the symbol. If the given name is not valid the
3975request must return a {@link ResponseError} with an
3976appropriate message set.*/
3977    #[serde(rename = "newName")]
3978    pub new_name: String,
3979}
3980///Registration options for a {@link RenameRequest}.
3981#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3982#[serde(rename_all = "camelCase")]
3983pub struct RenameRegistrationOptions {
3984    #[serde(flatten)]
3985    pub text_document_registration_options_base: TextDocumentRegistrationOptions,
3986    #[serde(flatten)]
3987    pub rename_options_base: RenameOptions,
3988}
3989#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3990#[serde(rename_all = "camelCase")]
3991pub struct PrepareRenameParams {
3992    #[serde(flatten)]
3993    pub text_document_position_params_base: TextDocumentPositionParams,
3994    #[serde(flatten)]
3995    pub work_done_progress_params_mixin: WorkDoneProgressParams,
3996}
3997///The parameters of a {@link ExecuteCommandRequest}.
3998#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3999#[serde(rename_all = "camelCase")]
4000pub struct ExecuteCommandParams {
4001    #[serde(flatten)]
4002    pub work_done_progress_params_mixin: WorkDoneProgressParams,
4003    ///The identifier of the actual command handler.
4004    pub command: String,
4005    ///Arguments that the command should be invoked with.
4006    #[serde(default)]
4007    pub arguments: Option<Vec<LSPAny>>,
4008}
4009///Registration options for a {@link ExecuteCommandRequest}.
4010#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4011#[serde(rename_all = "camelCase")]
4012pub struct ExecuteCommandRegistrationOptions {
4013    #[serde(flatten)]
4014    pub execute_command_options_base: ExecuteCommandOptions,
4015}
4016///The parameters passed via an apply workspace edit request.
4017#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4018#[serde(rename_all = "camelCase")]
4019pub struct ApplyWorkspaceEditParams {
4020    /**An optional label of the workspace edit. This label is
4021presented in the user interface for example on an undo
4022stack to undo the workspace edit.*/
4023    #[serde(default)]
4024    pub label: Option<String>,
4025    ///The edits to apply.
4026    pub edit: WorkspaceEdit,
4027    /**Additional data about the edit.
4028
4029@since 3.18.0*/
4030    #[serde(default)]
4031    pub metadata: Option<WorkspaceEditMetadata>,
4032}
4033/**The result returned from the apply workspace edit request.
4034
4035@since 3.17 renamed from ApplyWorkspaceEditResponse*/
4036#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4037#[serde(rename_all = "camelCase")]
4038pub struct ApplyWorkspaceEditResult {
4039    ///Indicates whether the edit was applied or not.
4040    pub applied: bool,
4041    /**An optional textual description for why the edit was not applied.
4042This may be used by the server for diagnostic logging or to provide
4043a suitable error for a request that triggered the edit.*/
4044    #[serde(rename = "failureReason")]
4045    #[serde(default)]
4046    pub failure_reason: Option<String>,
4047    /**Depending on the client's failure handling strategy `failedChange` might
4048contain the index of the change that failed. This property is only available
4049if the client signals a `failureHandlingStrategy` in its client capabilities.*/
4050    #[serde(rename = "failedChange")]
4051    #[serde(default)]
4052    pub failed_change: Option<Uinteger>,
4053}
4054#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4055#[serde(rename_all = "camelCase")]
4056pub struct WorkDoneProgressBegin {
4057    pub kind: String,
4058    /**Mandatory title of the progress operation. Used to briefly inform about
4059the kind of operation being performed.
4060
4061Examples: "Indexing" or "Linking dependencies".*/
4062    pub title: String,
4063    /**Controls if a cancel button should show to allow the user to cancel the
4064long running operation. Clients that don't support cancellation are allowed
4065to ignore the setting.*/
4066    #[serde(default)]
4067    pub cancellable: Option<bool>,
4068    /**Optional, more detailed associated progress message. Contains
4069complementary information to the `title`.
4070
4071Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
4072If unset, the previous progress message (if any) is still valid.*/
4073    #[serde(default)]
4074    pub message: Option<String>,
4075    /**Optional progress percentage to display (value 100 is considered 100%).
4076If not provided infinite progress is assumed and clients are allowed
4077to ignore the `percentage` value in subsequent in report notifications.
4078
4079The value should be steadily rising. Clients are free to ignore values
4080that are not following this rule. The value range is [0, 100].*/
4081    #[serde(default)]
4082    pub percentage: Option<Uinteger>,
4083}
4084#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4085#[serde(rename_all = "camelCase")]
4086pub struct WorkDoneProgressReport {
4087    pub kind: String,
4088    /**Controls enablement state of a cancel button.
4089
4090Clients that don't support cancellation or don't support controlling the button's
4091enablement state are allowed to ignore the property.*/
4092    #[serde(default)]
4093    pub cancellable: Option<bool>,
4094    /**Optional, more detailed associated progress message. Contains
4095complementary information to the `title`.
4096
4097Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
4098If unset, the previous progress message (if any) is still valid.*/
4099    #[serde(default)]
4100    pub message: Option<String>,
4101    /**Optional progress percentage to display (value 100 is considered 100%).
4102If not provided infinite progress is assumed and clients are allowed
4103to ignore the `percentage` value in subsequent in report notifications.
4104
4105The value should be steadily rising. Clients are free to ignore values
4106that are not following this rule. The value range is [0, 100]*/
4107    #[serde(default)]
4108    pub percentage: Option<Uinteger>,
4109}
4110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4111#[serde(rename_all = "camelCase")]
4112pub struct WorkDoneProgressEnd {
4113    pub kind: String,
4114    /**Optional, a final message indicating to for example indicate the outcome
4115of the operation.*/
4116    #[serde(default)]
4117    pub message: Option<String>,
4118}
4119#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4120#[serde(rename_all = "camelCase")]
4121pub struct SetTraceParams {
4122    pub value: TraceValue,
4123}
4124#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4125#[serde(rename_all = "camelCase")]
4126pub struct LogTraceParams {
4127    pub message: String,
4128    #[serde(default)]
4129    pub verbose: Option<String>,
4130}
4131#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4132#[serde(rename_all = "camelCase")]
4133pub struct CancelParams {
4134    ///The request id to cancel.
4135    pub id: IntegerOrString,
4136}
4137#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4138#[serde(rename_all = "camelCase")]
4139pub struct ProgressParams {
4140    ///The progress token provided by the client or server.
4141    pub token: ProgressToken,
4142    ///The progress data.
4143    pub value: LSPAny,
4144}
4145/**A parameter literal used in requests to pass a text document and a position inside that
4146document.*/
4147#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4148#[serde(rename_all = "camelCase")]
4149pub struct TextDocumentPositionParams {
4150    ///The text document.
4151    #[serde(rename = "textDocument")]
4152    pub text_document: TextDocumentIdentifier,
4153    ///The position inside the text document.
4154    pub position: Position,
4155}
4156#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4157#[serde(rename_all = "camelCase")]
4158pub struct WorkDoneProgressParams {
4159    ///An optional token that a server can use to report work done progress.
4160    #[serde(rename = "workDoneToken")]
4161    #[serde(default)]
4162    pub work_done_token: Option<ProgressToken>,
4163}
4164#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4165#[serde(rename_all = "camelCase")]
4166pub struct PartialResultParams {
4167    /**An optional token that a server can use to report partial results (e.g. streaming) to
4168the client.*/
4169    #[serde(rename = "partialResultToken")]
4170    #[serde(default)]
4171    pub partial_result_token: Option<ProgressToken>,
4172}
4173/**Represents the connection of two locations. Provides additional metadata over normal {@link Location locations},
4174including an origin range.*/
4175#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4176#[serde(rename_all = "camelCase")]
4177pub struct LocationLink {
4178    /**Span of the origin of this link.
4179
4180Used as the underlined span for mouse interaction. Defaults to the word range at
4181the definition position.*/
4182    #[serde(rename = "originSelectionRange")]
4183    #[serde(default)]
4184    pub origin_selection_range: Option<Range>,
4185    ///The target resource identifier of this link.
4186    #[serde(rename = "targetUri")]
4187    pub target_uri: DocumentUri,
4188    /**The full target range of this link. If the target for example is a symbol then target range is the
4189range enclosing this symbol not including leading/trailing whitespace but everything else
4190like comments. This information is typically used to highlight the range in the editor.*/
4191    #[serde(rename = "targetRange")]
4192    pub target_range: Range,
4193    /**The range that should be selected and revealed when this link is being followed, e.g the name of a function.
4194Must be contained by the `targetRange`. See also `DocumentSymbol#range`*/
4195    #[serde(rename = "targetSelectionRange")]
4196    pub target_selection_range: Range,
4197}
4198/**A range in a text document expressed as (zero-based) start and end positions.
4199
4200If you want to specify a range that contains a line including the line ending
4201character(s) then use an end position denoting the start of the next line.
4202For example:
4203```ts
4204{
4205    start: { line: 5, character: 23 }
4206    end : { line 6, character : 0 }
4207}
4208```*/
4209#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4210#[serde(rename_all = "camelCase")]
4211pub struct Range {
4212    ///The range's start position.
4213    pub start: Position,
4214    ///The range's end position.
4215    pub end: Position,
4216}
4217#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4218#[serde(rename_all = "camelCase")]
4219pub struct ImplementationOptions {
4220    #[serde(flatten)]
4221    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4222}
4223/**Static registration options to be returned in the initialize
4224request.*/
4225#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4226#[serde(rename_all = "camelCase")]
4227pub struct StaticRegistrationOptions {
4228    /**The id used to register the request. The id can be used to deregister
4229the request again. See also Registration#id.*/
4230    #[serde(default)]
4231    pub id: Option<String>,
4232}
4233#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4234#[serde(rename_all = "camelCase")]
4235pub struct TypeDefinitionOptions {
4236    #[serde(flatten)]
4237    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4238}
4239///The workspace folder change event.
4240#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4241#[serde(rename_all = "camelCase")]
4242pub struct WorkspaceFoldersChangeEvent {
4243    ///The array of added workspace folders
4244    pub added: Vec<WorkspaceFolder>,
4245    ///The array of the removed workspace folders
4246    pub removed: Vec<WorkspaceFolder>,
4247}
4248#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4249#[serde(rename_all = "camelCase")]
4250pub struct ConfigurationItem {
4251    ///The scope to get the configuration section for.
4252    #[serde(rename = "scopeUri")]
4253    #[serde(default)]
4254    pub scope_uri: Option<URI>,
4255    ///The configuration section asked for.
4256    #[serde(default)]
4257    pub section: Option<String>,
4258}
4259///A literal to identify a text document in the client.
4260#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4261#[serde(rename_all = "camelCase")]
4262pub struct TextDocumentIdentifier {
4263    ///The text document's uri.
4264    pub uri: DocumentUri,
4265}
4266///Represents a color in RGBA space.
4267#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4268#[serde(rename_all = "camelCase")]
4269pub struct Color {
4270    ///The red component of this color in the range [0-1].
4271    pub red: Decimal,
4272    ///The green component of this color in the range [0-1].
4273    pub green: Decimal,
4274    ///The blue component of this color in the range [0-1].
4275    pub blue: Decimal,
4276    ///The alpha component of this color in the range [0-1].
4277    pub alpha: Decimal,
4278}
4279#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4280#[serde(rename_all = "camelCase")]
4281pub struct DocumentColorOptions {
4282    #[serde(flatten)]
4283    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4284}
4285#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4286#[serde(rename_all = "camelCase")]
4287pub struct FoldingRangeOptions {
4288    #[serde(flatten)]
4289    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4290}
4291#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4292#[serde(rename_all = "camelCase")]
4293pub struct DeclarationOptions {
4294    #[serde(flatten)]
4295    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4296}
4297/**Position in a text document expressed as zero-based line and character
4298offset. Prior to 3.17 the offsets were always based on a UTF-16 string
4299representation. So a string of the form `a𐐀b` the character offset of the
4300character `a` is 0, the character offset of `𐐀` is 1 and the character
4301offset of b is 3 since `𐐀` is represented using two code units in UTF-16.
4302Since 3.17 clients and servers can agree on a different string encoding
4303representation (e.g. UTF-8). The client announces it's supported encoding
4304via the client capability [`general.positionEncodings`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#clientCapabilities).
4305The value is an array of position encodings the client supports, with
4306decreasing preference (e.g. the encoding at index `0` is the most preferred
4307one). To stay backwards compatible the only mandatory encoding is UTF-16
4308represented via the string `utf-16`. The server can pick one of the
4309encodings offered by the client and signals that encoding back to the
4310client via the initialize result's property
4311[`capabilities.positionEncoding`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#serverCapabilities). If the string value
4312`utf-16` is missing from the client's capability `general.positionEncodings`
4313servers can safely assume that the client supports UTF-16. If the server
4314omits the position encoding in its initialize result the encoding defaults
4315to the string value `utf-16`. Implementation considerations: since the
4316conversion from one encoding into another requires the content of the
4317file / line the conversion is best done where the file is read which is
4318usually on the server side.
4319
4320Positions are line end character agnostic. So you can not specify a position
4321that denotes `\r|\n` or `\n|` where `|` represents the character offset.
4322
4323@since 3.17.0 - support for negotiated position encoding.*/
4324#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4325#[serde(rename_all = "camelCase")]
4326pub struct Position {
4327    ///Line position in a document (zero-based).
4328    pub line: Uinteger,
4329    /**Character offset on a line in a document (zero-based).
4330
4331The meaning of this offset is determined by the negotiated
4332`PositionEncodingKind`.*/
4333    pub character: Uinteger,
4334}
4335#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4336#[serde(rename_all = "camelCase")]
4337pub struct SelectionRangeOptions {
4338    #[serde(flatten)]
4339    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4340}
4341/**Call hierarchy options used during static registration.
4342
4343@since 3.16.0*/
4344#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4345#[serde(rename_all = "camelCase")]
4346pub struct CallHierarchyOptions {
4347    #[serde(flatten)]
4348    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4349}
4350///@since 3.16.0
4351#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4352#[serde(rename_all = "camelCase")]
4353pub struct SemanticTokensOptions {
4354    #[serde(flatten)]
4355    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4356    ///The legend used by the server
4357    pub legend: SemanticTokensLegend,
4358    /**Server supports providing semantic tokens for a specific range
4359of a document.*/
4360    #[serde(default)]
4361    pub range: Option<BooleanOrLiteral57f9bf6390bb37d9>,
4362    ///Server supports providing semantic tokens for a full document.
4363    #[serde(default)]
4364    pub full: Option<BooleanOrSemanticTokensFullDelta>,
4365}
4366///@since 3.16.0
4367#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4368#[serde(rename_all = "camelCase")]
4369pub struct SemanticTokensEdit {
4370    ///The start offset of the edit.
4371    pub start: Uinteger,
4372    ///The count of elements to remove.
4373    #[serde(rename = "deleteCount")]
4374    pub delete_count: Uinteger,
4375    ///The elements to insert.
4376    #[serde(default)]
4377    pub data: Option<Vec<Uinteger>>,
4378}
4379#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4380#[serde(rename_all = "camelCase")]
4381pub struct LinkedEditingRangeOptions {
4382    #[serde(flatten)]
4383    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4384}
4385/**Represents information on a file/folder create.
4386
4387@since 3.16.0*/
4388#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4389#[serde(rename_all = "camelCase")]
4390pub struct FileCreate {
4391    ///A file:// URI for the location of the file/folder being created.
4392    pub uri: String,
4393}
4394/**Describes textual changes on a text document. A TextDocumentEdit describes all changes
4395on a document version Si and after they are applied move the document to version Si+1.
4396So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any
4397kind of ordering. However the edits must be non overlapping.*/
4398#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4399#[serde(rename_all = "camelCase")]
4400pub struct TextDocumentEdit {
4401    ///The text document to change.
4402    #[serde(rename = "textDocument")]
4403    pub text_document: OptionalVersionedTextDocumentIdentifier,
4404    /**The edits to be applied.
4405
4406@since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a
4407client capability.
4408
4409@since 3.18.0 - support for SnippetTextEdit. This is guarded using a
4410client capability.*/
4411    pub edits: Vec<AnnotatedTextEditOrSnippetTextEditOrTextEdit>,
4412}
4413///Create file operation.
4414#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4415#[serde(rename_all = "camelCase")]
4416pub struct CreateFile {
4417    #[serde(flatten)]
4418    pub resource_operation_base: ResourceOperation,
4419    ///A create
4420    pub kind: String,
4421    ///The resource to create.
4422    pub uri: DocumentUri,
4423    ///Additional options
4424    #[serde(default)]
4425    pub options: Option<CreateFileOptions>,
4426}
4427///Rename file operation
4428#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4429#[serde(rename_all = "camelCase")]
4430pub struct RenameFile {
4431    #[serde(flatten)]
4432    pub resource_operation_base: ResourceOperation,
4433    ///A rename
4434    pub kind: String,
4435    ///The old (existing) location.
4436    #[serde(rename = "oldUri")]
4437    pub old_uri: DocumentUri,
4438    ///The new location.
4439    #[serde(rename = "newUri")]
4440    pub new_uri: DocumentUri,
4441    ///Rename options.
4442    #[serde(default)]
4443    pub options: Option<RenameFileOptions>,
4444}
4445///Delete file operation
4446#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4447#[serde(rename_all = "camelCase")]
4448pub struct DeleteFile {
4449    #[serde(flatten)]
4450    pub resource_operation_base: ResourceOperation,
4451    ///A delete
4452    pub kind: String,
4453    ///The file to delete.
4454    pub uri: DocumentUri,
4455    ///Delete options.
4456    #[serde(default)]
4457    pub options: Option<DeleteFileOptions>,
4458}
4459/**Additional information that describes document changes.
4460
4461@since 3.16.0*/
4462#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4463#[serde(rename_all = "camelCase")]
4464pub struct ChangeAnnotation {
4465    /**A human-readable string describing the actual change. The string
4466is rendered prominent in the user interface.*/
4467    pub label: String,
4468    /**A flag which indicates that user confirmation is needed
4469before applying the change.*/
4470    #[serde(rename = "needsConfirmation")]
4471    #[serde(default)]
4472    pub needs_confirmation: Option<bool>,
4473    /**A human-readable string which is rendered less prominent in
4474the user interface.*/
4475    #[serde(default)]
4476    pub description: Option<String>,
4477}
4478/**A filter to describe in which file operation requests or notifications
4479the server is interested in receiving.
4480
4481@since 3.16.0*/
4482#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4483#[serde(rename_all = "camelCase")]
4484pub struct FileOperationFilter {
4485    ///A Uri scheme like `file` or `untitled`.
4486    #[serde(default)]
4487    pub scheme: Option<String>,
4488    ///The actual file operation pattern.
4489    pub pattern: FileOperationPattern,
4490}
4491/**Represents information on a file/folder rename.
4492
4493@since 3.16.0*/
4494#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4495#[serde(rename_all = "camelCase")]
4496pub struct FileRename {
4497    ///A file:// URI for the original location of the file/folder being renamed.
4498    #[serde(rename = "oldUri")]
4499    pub old_uri: String,
4500    ///A file:// URI for the new location of the file/folder being renamed.
4501    #[serde(rename = "newUri")]
4502    pub new_uri: String,
4503}
4504/**Represents information on a file/folder delete.
4505
4506@since 3.16.0*/
4507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4508#[serde(rename_all = "camelCase")]
4509pub struct FileDelete {
4510    ///A file:// URI for the location of the file/folder being deleted.
4511    pub uri: String,
4512}
4513#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4514#[serde(rename_all = "camelCase")]
4515pub struct MonikerOptions {
4516    #[serde(flatten)]
4517    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4518}
4519/**Type hierarchy options used during static registration.
4520
4521@since 3.17.0*/
4522#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4523#[serde(rename_all = "camelCase")]
4524pub struct TypeHierarchyOptions {
4525    #[serde(flatten)]
4526    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4527}
4528///@since 3.17.0
4529#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4530#[serde(rename_all = "camelCase")]
4531pub struct InlineValueContext {
4532    ///The stack frame (as a DAP Id) where the execution has stopped.
4533    #[serde(rename = "frameId")]
4534    pub frame_id: Integer,
4535    /**The document range where execution has stopped.
4536Typically the end position of the range denotes the line where the inline values are shown.*/
4537    #[serde(rename = "stoppedLocation")]
4538    pub stopped_location: Range,
4539}
4540/**Returns inline value information as the complete text to be shown.
4541
4542@since 3.17.0*/
4543#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4544#[serde(rename_all = "camelCase")]
4545pub struct InlineValueText {
4546    ///The document range for which the inline value applies.
4547    pub range: Range,
4548    ///The text of the inline value.
4549    pub text: String,
4550}
4551/**To compute inline value through a variable lookup.
4552
4553If only a range is specified, the variable name should
4554be extracted from the underlying document.
4555
4556An optional variable name could be used to lookup instead
4557of the extracted name.
4558
4559@since 3.17.0*/
4560#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4561#[serde(rename_all = "camelCase")]
4562pub struct InlineValueVariableLookup {
4563    /**The document range for which the inline value applies.
4564
4565The range could be used to extract the variable name
4566from the underlying document.*/
4567    pub range: Range,
4568    ///If specified the name of the variable to look up.
4569    #[serde(rename = "variableName")]
4570    #[serde(default)]
4571    pub variable_name: Option<String>,
4572    ///How to perform the lookup.
4573    #[serde(rename = "caseSensitiveLookup")]
4574    pub case_sensitive_lookup: bool,
4575}
4576/**To compute an inline value through an expression evaluation.
4577
4578If only a range is specified, the expression should be
4579extracted from the underlying document.
4580
4581An optional expression could be evaluated instead of
4582the extracted expression.
4583
4584@since 3.17.0*/
4585#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4586#[serde(rename_all = "camelCase")]
4587pub struct InlineValueEvaluatableExpression {
4588    /**The document range for which the inline value applies.
4589
4590The range could be used to extract the evaluatable expression
4591from the underlying document.*/
4592    pub range: Range,
4593    ///If specified the expression could be evaluated instead.
4594    #[serde(default)]
4595    pub expression: Option<String>,
4596}
4597/**Inline value options used during static registration.
4598
4599@since 3.17.0*/
4600#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4601#[serde(rename_all = "camelCase")]
4602pub struct InlineValueOptions {
4603    #[serde(flatten)]
4604    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4605}
4606/**An inlay hint label part allows for interactive and composite labels
4607of inlay hints.
4608
4609@since 3.17.0*/
4610#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4611#[serde(rename_all = "camelCase")]
4612pub struct InlayHintLabelPart {
4613    ///The value of this label part.
4614    pub value: String,
4615    /**The tooltip text when you hover over this label part. Depending on
4616the client capability `inlayHint.resolveSupport` clients might resolve
4617this property late using the resolve request.*/
4618    #[serde(default)]
4619    pub tooltip: Option<MarkupContentOrString>,
4620    /**An optional source code location that represents this
4621label part.
4622
4623The editor will use this location for the hover and for code navigation
4624features: This part will become a clickable link that resolves to the
4625definition of the symbol at the given location (not necessarily the
4626location itself), it shows the hover that shows at the given location,
4627and it shows a context menu with further code navigation commands.
4628
4629Depending on the client capability `inlayHint.resolveSupport` clients
4630might resolve this property late using the resolve request.*/
4631    #[serde(default)]
4632    pub location: Option<Location>,
4633    /**An optional command for this label part.
4634
4635Depending on the client capability `inlayHint.resolveSupport` clients
4636might resolve this property late using the resolve request.*/
4637    #[serde(default)]
4638    pub command: Option<Command>,
4639}
4640/**A `MarkupContent` literal represents a string value which content is interpreted base on its
4641kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds.
4642
4643If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues.
4644See <https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting>
4645
4646Here is an example how such a string can be constructed using JavaScript / TypeScript:
4647```ts
4648let markdown: MarkdownContent = {
4649 kind: MarkupKind.Markdown,
4650 value: [
4651   '# Header',
4652   'Some text',
4653   '```typescript',
4654   'someCode();',
4655   '```'
4656 ].join('\n')
4657};
4658```
4659
4660*Please Note* that clients might sanitize the return markdown. A client could decide to
4661remove HTML from the markdown to avoid script execution.*/
4662#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4663#[serde(rename_all = "camelCase")]
4664pub struct MarkupContent {
4665    ///The type of the Markup
4666    pub kind: MarkupKind,
4667    ///The content itself
4668    pub value: String,
4669}
4670/**Inlay hint options used during static registration.
4671
4672@since 3.17.0*/
4673#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4674#[serde(rename_all = "camelCase")]
4675pub struct InlayHintOptions {
4676    #[serde(flatten)]
4677    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4678    /**The server provides support to resolve additional
4679information for an inlay hint item.*/
4680    #[serde(rename = "resolveProvider")]
4681    #[serde(default)]
4682    pub resolve_provider: Option<bool>,
4683}
4684/**A full diagnostic report with a set of related documents.
4685
4686@since 3.17.0*/
4687#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4688#[serde(rename_all = "camelCase")]
4689pub struct RelatedFullDocumentDiagnosticReport {
4690    #[serde(flatten)]
4691    pub full_document_diagnostic_report_base: FullDocumentDiagnosticReport,
4692    /**Diagnostics of related documents. This information is useful
4693in programming languages where code in a file A can generate
4694diagnostics in a file B which A depends on. An example of
4695such a language is C/C++ where marco definitions in a file
4696a.cpp and result in errors in a header file b.hpp.
4697
4698@since 3.17.0*/
4699    #[serde(rename = "relatedDocuments")]
4700    #[serde(default)]
4701    pub related_documents: Option<
4702        std::collections::BTreeMap<
4703            DocumentUri,
4704            FullDocumentDiagnosticReportOrUnchangedDocumentDiagnosticReport,
4705        >,
4706    >,
4707}
4708/**An unchanged diagnostic report with a set of related documents.
4709
4710@since 3.17.0*/
4711#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4712#[serde(rename_all = "camelCase")]
4713pub struct RelatedUnchangedDocumentDiagnosticReport {
4714    #[serde(flatten)]
4715    pub unchanged_document_diagnostic_report_base: UnchangedDocumentDiagnosticReport,
4716    /**Diagnostics of related documents. This information is useful
4717in programming languages where code in a file A can generate
4718diagnostics in a file B which A depends on. An example of
4719such a language is C/C++ where marco definitions in a file
4720a.cpp and result in errors in a header file b.hpp.
4721
4722@since 3.17.0*/
4723    #[serde(rename = "relatedDocuments")]
4724    #[serde(default)]
4725    pub related_documents: Option<
4726        std::collections::BTreeMap<
4727            DocumentUri,
4728            FullDocumentDiagnosticReportOrUnchangedDocumentDiagnosticReport,
4729        >,
4730    >,
4731}
4732/**A diagnostic report with a full set of problems.
4733
4734@since 3.17.0*/
4735#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4736#[serde(rename_all = "camelCase")]
4737pub struct FullDocumentDiagnosticReport {
4738    ///A full document diagnostic report.
4739    pub kind: String,
4740    /**An optional result id. If provided it will
4741be sent on the next diagnostic request for the
4742same document.*/
4743    #[serde(rename = "resultId")]
4744    #[serde(default)]
4745    pub result_id: Option<String>,
4746    ///The actual items.
4747    pub items: Vec<Diagnostic>,
4748}
4749/**A diagnostic report indicating that the last returned
4750report is still accurate.
4751
4752@since 3.17.0*/
4753#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4754#[serde(rename_all = "camelCase")]
4755pub struct UnchangedDocumentDiagnosticReport {
4756    /**A document diagnostic report indicating
4757no changes to the last result. A server can
4758only return `unchanged` if result ids are
4759provided.*/
4760    pub kind: String,
4761    /**A result id which will be sent on the next
4762diagnostic request for the same document.*/
4763    #[serde(rename = "resultId")]
4764    pub result_id: String,
4765}
4766/**Diagnostic options.
4767
4768@since 3.17.0*/
4769#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4770#[serde(rename_all = "camelCase")]
4771pub struct DiagnosticOptions {
4772    #[serde(flatten)]
4773    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4774    /**An optional identifier under which the diagnostics are
4775managed by the client.*/
4776    #[serde(default)]
4777    pub identifier: Option<String>,
4778    /**Whether the language has inter file dependencies meaning that
4779editing code in one file can result in a different diagnostic
4780set in another file. Inter file dependencies are common for
4781most programming languages and typically uncommon for linters.*/
4782    #[serde(rename = "interFileDependencies")]
4783    pub inter_file_dependencies: bool,
4784    ///The server provides support for workspace diagnostics as well.
4785    #[serde(rename = "workspaceDiagnostics")]
4786    pub workspace_diagnostics: bool,
4787}
4788/**A previous result id in a workspace pull request.
4789
4790@since 3.17.0*/
4791#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4792#[serde(rename_all = "camelCase")]
4793pub struct PreviousResultId {
4794    /**The URI for which the client knowns a
4795result id.*/
4796    pub uri: DocumentUri,
4797    ///The value of the previous result id.
4798    pub value: String,
4799}
4800/**A notebook document.
4801
4802@since 3.17.0*/
4803#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4804#[serde(rename_all = "camelCase")]
4805pub struct NotebookDocument {
4806    ///The notebook document's uri.
4807    pub uri: URI,
4808    ///The type of the notebook.
4809    #[serde(rename = "notebookType")]
4810    pub notebook_type: String,
4811    /**The version number of this document (it will increase after each
4812change, including undo/redo).*/
4813    pub version: Integer,
4814    /**Additional metadata stored with the notebook
4815document.
4816
4817Note: should always be an object literal (e.g. LSPObject)*/
4818    #[serde(default)]
4819    pub metadata: Option<LSPObject>,
4820    ///The cells of a notebook.
4821    pub cells: Vec<NotebookCell>,
4822}
4823/**An item to transfer a text document from the client to the
4824server.*/
4825#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4826#[serde(rename_all = "camelCase")]
4827pub struct TextDocumentItem {
4828    ///The text document's uri.
4829    pub uri: DocumentUri,
4830    ///The text document's language identifier.
4831    #[serde(rename = "languageId")]
4832    pub language_id: LanguageKind,
4833    /**The version number of this document (it will increase after each
4834change, including undo/redo).*/
4835    pub version: Integer,
4836    ///The content of the opened text document.
4837    pub text: String,
4838}
4839/**Options specific to a notebook plus its cells
4840to be synced to the server.
4841
4842If a selector provides a notebook document
4843filter but no cell selector all cells of a
4844matching notebook document will be synced.
4845
4846If a selector provides no notebook document
4847filter but only a cell selector all notebook
4848document that contain at least one matching
4849cell will be synced.
4850
4851@since 3.17.0*/
4852#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4853#[serde(rename_all = "camelCase")]
4854pub struct NotebookDocumentSyncOptions {
4855    ///The notebooks to be synced
4856    #[serde(rename = "notebookSelector")]
4857    pub notebook_selector: Vec<
4858        NotebookDocumentFilterWithCellsOrNotebookDocumentFilterWithNotebook,
4859    >,
4860    /**Whether save notification should be forwarded to
4861the server. Will only be honored if mode === `notebook`.*/
4862    #[serde(default)]
4863    pub save: Option<bool>,
4864}
4865/**A versioned notebook document identifier.
4866
4867@since 3.17.0*/
4868#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4869#[serde(rename_all = "camelCase")]
4870pub struct VersionedNotebookDocumentIdentifier {
4871    ///The version number of this notebook document.
4872    pub version: Integer,
4873    ///The notebook document's uri.
4874    pub uri: URI,
4875}
4876/**A change event for a notebook document.
4877
4878@since 3.17.0*/
4879#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4880#[serde(rename_all = "camelCase")]
4881pub struct NotebookDocumentChangeEvent {
4882    /**The changed meta data if any.
4883
4884Note: should always be an object literal (e.g. LSPObject)*/
4885    #[serde(default)]
4886    pub metadata: Option<LSPObject>,
4887    ///Changes to cells
4888    #[serde(default)]
4889    pub cells: Option<NotebookDocumentCellChanges>,
4890}
4891/**A literal to identify a notebook document in the client.
4892
4893@since 3.17.0*/
4894#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4895#[serde(rename_all = "camelCase")]
4896pub struct NotebookDocumentIdentifier {
4897    ///The notebook document's uri.
4898    pub uri: URI,
4899}
4900/**Provides information about the context in which an inline completion was requested.
4901
4902@since 3.18.0*/
4903#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4904#[serde(rename_all = "camelCase")]
4905pub struct InlineCompletionContext {
4906    ///Describes how the inline completion was triggered.
4907    #[serde(rename = "triggerKind")]
4908    pub trigger_kind: InlineCompletionTriggerKind,
4909    ///Provides information about the currently selected item in the autocomplete widget if it is visible.
4910    #[serde(rename = "selectedCompletionInfo")]
4911    #[serde(default)]
4912    pub selected_completion_info: Option<SelectedCompletionInfo>,
4913}
4914/**A string value used as a snippet is a template which allows to insert text
4915and to control the editor cursor when insertion happens.
4916
4917A snippet can define tab stops and placeholders with `$1`, `$2`
4918and `${3:foo}`. `$0` defines the final tab stop, it defaults to
4919the end of the snippet. Variables are defined with `$name` and
4920`${name:default value}`.
4921
4922@since 3.18.0*/
4923#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4924#[serde(rename_all = "camelCase")]
4925pub struct StringValue {
4926    ///The kind of string value.
4927    pub kind: String,
4928    ///The snippet string.
4929    pub value: String,
4930}
4931/**Inline completion options used during static registration.
4932
4933@since 3.18.0*/
4934#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4935#[serde(rename_all = "camelCase")]
4936pub struct InlineCompletionOptions {
4937    #[serde(flatten)]
4938    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
4939}
4940/**Text document content provider options.
4941
4942@since 3.18.0*/
4943#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4944#[serde(rename_all = "camelCase")]
4945pub struct TextDocumentContentOptions {
4946    ///The schemes for which the server provides content.
4947    pub schemes: Vec<String>,
4948}
4949///General parameters to register for a notification or to register a provider.
4950#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4951#[serde(rename_all = "camelCase")]
4952pub struct Registration {
4953    /**The id used to register the request. The id can be used to deregister
4954the request again.*/
4955    pub id: String,
4956    ///The method / capability to register for.
4957    pub method: String,
4958    ///Options necessary for the registration.
4959    #[serde(rename = "registerOptions")]
4960    #[serde(default)]
4961    pub register_options: Option<LSPAny>,
4962}
4963///General parameters to unregister a request or notification.
4964#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4965#[serde(rename_all = "camelCase")]
4966pub struct Unregistration {
4967    /**The id used to unregister the request or notification. Usually an id
4968provided during the register request.*/
4969    pub id: String,
4970    ///The method to unregister for.
4971    pub method: String,
4972}
4973///The initialize parameters
4974#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4975#[serde(rename_all = "camelCase")]
4976pub struct _InitializeParams {
4977    #[serde(flatten)]
4978    pub work_done_progress_params_mixin: WorkDoneProgressParams,
4979    /**The process Id of the parent process that started
4980the server.
4981
4982Is `null` if the process has not been started by another process.
4983If the parent process is not alive then the server should exit.*/
4984    #[serde(rename = "processId")]
4985    pub process_id: Option<Integer>,
4986    /**Information about the client
4987
4988@since 3.15.0*/
4989    #[serde(rename = "clientInfo")]
4990    #[serde(default)]
4991    pub client_info: Option<ClientInfo>,
4992    /**The locale the client is currently showing the user interface
4993in. This must not necessarily be the locale of the operating
4994system.
4995
4996Uses IETF language tags as the value's syntax
4997(See <https://en.wikipedia.org/wiki/IETF_language_tag>)
4998
4999@since 3.16.0*/
5000    #[serde(default)]
5001    pub locale: Option<String>,
5002    /**The rootPath of the workspace. Is null
5003if no folder is open.
5004
5005@deprecated in favour of rootUri.*/
5006    #[serde(rename = "rootPath")]
5007    #[serde(default)]
5008    pub root_path: Option<Option<String>>,
5009    /**The rootUri of the workspace. Is null if no
5010folder is open. If both `rootPath` and `rootUri` are set
5011`rootUri` wins.
5012
5013@deprecated in favour of workspaceFolders.*/
5014    #[serde(rename = "rootUri")]
5015    pub root_uri: Option<DocumentUri>,
5016    ///The capabilities provided by the client (editor or tool)
5017    pub capabilities: ClientCapabilities,
5018    ///User provided initialization options.
5019    #[serde(rename = "initializationOptions")]
5020    #[serde(default)]
5021    pub initialization_options: Option<LSPAny>,
5022    ///The initial trace setting. If omitted trace is disabled ('off').
5023    #[serde(default)]
5024    pub trace: Option<TraceValue>,
5025}
5026#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5027#[serde(rename_all = "camelCase")]
5028pub struct WorkspaceFoldersInitializeParams {
5029    /**The workspace folders configured in the client when the server starts.
5030
5031This property is only available if the client supports workspace folders.
5032It can be `null` if the client supports workspace folders but none are
5033configured.
5034
5035@since 3.6.0*/
5036    #[serde(rename = "workspaceFolders")]
5037    #[serde(default)]
5038    pub workspace_folders: Option<Option<Vec<WorkspaceFolder>>>,
5039}
5040/**Defines the capabilities provided by a language
5041server.*/
5042#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5043#[serde(rename_all = "camelCase")]
5044pub struct ServerCapabilities {
5045    /**The position encoding the server picked from the encodings offered
5046by the client via the client capability `general.positionEncodings`.
5047
5048If the client didn't provide any position encodings the only valid
5049value that a server can return is 'utf-16'.
5050
5051If omitted it defaults to 'utf-16'.
5052
5053@since 3.17.0*/
5054    #[serde(rename = "positionEncoding")]
5055    #[serde(default)]
5056    pub position_encoding: Option<PositionEncodingKind>,
5057    /**Defines how text documents are synced. Is either a detailed structure
5058defining each notification or for backwards compatibility the
5059TextDocumentSyncKind number.*/
5060    #[serde(rename = "textDocumentSync")]
5061    #[serde(default)]
5062    pub text_document_sync: Option<TextDocumentSyncKindOrTextDocumentSyncOptions>,
5063    /**Defines how notebook documents are synced.
5064
5065@since 3.17.0*/
5066    #[serde(rename = "notebookDocumentSync")]
5067    #[serde(default)]
5068    pub notebook_document_sync: Option<
5069        NotebookDocumentSyncOptionsOrNotebookDocumentSyncRegistrationOptions,
5070    >,
5071    ///The server provides completion support.
5072    #[serde(rename = "completionProvider")]
5073    #[serde(default)]
5074    pub completion_provider: Option<CompletionOptions>,
5075    ///The server provides hover support.
5076    #[serde(rename = "hoverProvider")]
5077    #[serde(default)]
5078    pub hover_provider: Option<BooleanOrHoverOptions>,
5079    ///The server provides signature help support.
5080    #[serde(rename = "signatureHelpProvider")]
5081    #[serde(default)]
5082    pub signature_help_provider: Option<SignatureHelpOptions>,
5083    ///The server provides Goto Declaration support.
5084    #[serde(rename = "declarationProvider")]
5085    #[serde(default)]
5086    pub declaration_provider: Option<
5087        BooleanOrDeclarationOptionsOrDeclarationRegistrationOptions,
5088    >,
5089    ///The server provides goto definition support.
5090    #[serde(rename = "definitionProvider")]
5091    #[serde(default)]
5092    pub definition_provider: Option<BooleanOrDefinitionOptions>,
5093    ///The server provides Goto Type Definition support.
5094    #[serde(rename = "typeDefinitionProvider")]
5095    #[serde(default)]
5096    pub type_definition_provider: Option<
5097        BooleanOrTypeDefinitionOptionsOrTypeDefinitionRegistrationOptions,
5098    >,
5099    ///The server provides Goto Implementation support.
5100    #[serde(rename = "implementationProvider")]
5101    #[serde(default)]
5102    pub implementation_provider: Option<
5103        BooleanOrImplementationOptionsOrImplementationRegistrationOptions,
5104    >,
5105    ///The server provides find references support.
5106    #[serde(rename = "referencesProvider")]
5107    #[serde(default)]
5108    pub references_provider: Option<BooleanOrReferenceOptions>,
5109    ///The server provides document highlight support.
5110    #[serde(rename = "documentHighlightProvider")]
5111    #[serde(default)]
5112    pub document_highlight_provider: Option<BooleanOrDocumentHighlightOptions>,
5113    ///The server provides document symbol support.
5114    #[serde(rename = "documentSymbolProvider")]
5115    #[serde(default)]
5116    pub document_symbol_provider: Option<BooleanOrDocumentSymbolOptions>,
5117    /**The server provides code actions. CodeActionOptions may only be
5118specified if the client states that it supports
5119`codeActionLiteralSupport` in its initial `initialize` request.*/
5120    #[serde(rename = "codeActionProvider")]
5121    #[serde(default)]
5122    pub code_action_provider: Option<BooleanOrCodeActionOptions>,
5123    ///The server provides code lens.
5124    #[serde(rename = "codeLensProvider")]
5125    #[serde(default)]
5126    pub code_lens_provider: Option<CodeLensOptions>,
5127    ///The server provides document link support.
5128    #[serde(rename = "documentLinkProvider")]
5129    #[serde(default)]
5130    pub document_link_provider: Option<DocumentLinkOptions>,
5131    ///The server provides color provider support.
5132    #[serde(rename = "colorProvider")]
5133    #[serde(default)]
5134    pub color_provider: Option<
5135        BooleanOrDocumentColorOptionsOrDocumentColorRegistrationOptions,
5136    >,
5137    ///The server provides workspace symbol support.
5138    #[serde(rename = "workspaceSymbolProvider")]
5139    #[serde(default)]
5140    pub workspace_symbol_provider: Option<BooleanOrWorkspaceSymbolOptions>,
5141    ///The server provides document formatting.
5142    #[serde(rename = "documentFormattingProvider")]
5143    #[serde(default)]
5144    pub document_formatting_provider: Option<BooleanOrDocumentFormattingOptions>,
5145    ///The server provides document range formatting.
5146    #[serde(rename = "documentRangeFormattingProvider")]
5147    #[serde(default)]
5148    pub document_range_formatting_provider: Option<
5149        BooleanOrDocumentRangeFormattingOptions,
5150    >,
5151    ///The server provides document formatting on typing.
5152    #[serde(rename = "documentOnTypeFormattingProvider")]
5153    #[serde(default)]
5154    pub document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
5155    /**The server provides rename support. RenameOptions may only be
5156specified if the client states that it supports
5157`prepareSupport` in its initial `initialize` request.*/
5158    #[serde(rename = "renameProvider")]
5159    #[serde(default)]
5160    pub rename_provider: Option<BooleanOrRenameOptions>,
5161    ///The server provides folding provider support.
5162    #[serde(rename = "foldingRangeProvider")]
5163    #[serde(default)]
5164    pub folding_range_provider: Option<
5165        BooleanOrFoldingRangeOptionsOrFoldingRangeRegistrationOptions,
5166    >,
5167    ///The server provides selection range support.
5168    #[serde(rename = "selectionRangeProvider")]
5169    #[serde(default)]
5170    pub selection_range_provider: Option<
5171        BooleanOrSelectionRangeOptionsOrSelectionRangeRegistrationOptions,
5172    >,
5173    ///The server provides execute command support.
5174    #[serde(rename = "executeCommandProvider")]
5175    #[serde(default)]
5176    pub execute_command_provider: Option<ExecuteCommandOptions>,
5177    /**The server provides call hierarchy support.
5178
5179@since 3.16.0*/
5180    #[serde(rename = "callHierarchyProvider")]
5181    #[serde(default)]
5182    pub call_hierarchy_provider: Option<
5183        BooleanOrCallHierarchyOptionsOrCallHierarchyRegistrationOptions,
5184    >,
5185    /**The server provides linked editing range support.
5186
5187@since 3.16.0*/
5188    #[serde(rename = "linkedEditingRangeProvider")]
5189    #[serde(default)]
5190    pub linked_editing_range_provider: Option<
5191        BooleanOrLinkedEditingRangeOptionsOrLinkedEditingRangeRegistrationOptions,
5192    >,
5193    /**The server provides semantic tokens support.
5194
5195@since 3.16.0*/
5196    #[serde(rename = "semanticTokensProvider")]
5197    #[serde(default)]
5198    pub semantic_tokens_provider: Option<
5199        SemanticTokensOptionsOrSemanticTokensRegistrationOptions,
5200    >,
5201    /**The server provides moniker support.
5202
5203@since 3.16.0*/
5204    #[serde(rename = "monikerProvider")]
5205    #[serde(default)]
5206    pub moniker_provider: Option<BooleanOrMonikerOptionsOrMonikerRegistrationOptions>,
5207    /**The server provides type hierarchy support.
5208
5209@since 3.17.0*/
5210    #[serde(rename = "typeHierarchyProvider")]
5211    #[serde(default)]
5212    pub type_hierarchy_provider: Option<
5213        BooleanOrTypeHierarchyOptionsOrTypeHierarchyRegistrationOptions,
5214    >,
5215    /**The server provides inline values.
5216
5217@since 3.17.0*/
5218    #[serde(rename = "inlineValueProvider")]
5219    #[serde(default)]
5220    pub inline_value_provider: Option<
5221        BooleanOrInlineValueOptionsOrInlineValueRegistrationOptions,
5222    >,
5223    /**The server provides inlay hints.
5224
5225@since 3.17.0*/
5226    #[serde(rename = "inlayHintProvider")]
5227    #[serde(default)]
5228    pub inlay_hint_provider: Option<
5229        BooleanOrInlayHintOptionsOrInlayHintRegistrationOptions,
5230    >,
5231    /**The server has support for pull model diagnostics.
5232
5233@since 3.17.0*/
5234    #[serde(rename = "diagnosticProvider")]
5235    #[serde(default)]
5236    pub diagnostic_provider: Option<DiagnosticOptionsOrDiagnosticRegistrationOptions>,
5237    /**Inline completion options used during static registration.
5238
5239@since 3.18.0*/
5240    #[serde(rename = "inlineCompletionProvider")]
5241    #[serde(default)]
5242    pub inline_completion_provider: Option<BooleanOrInlineCompletionOptions>,
5243    ///Workspace specific server capabilities.
5244    #[serde(default)]
5245    pub workspace: Option<WorkspaceOptions>,
5246    ///Experimental server capabilities.
5247    #[serde(default)]
5248    pub experimental: Option<LSPAny>,
5249}
5250/**Information about the server
5251
5252@since 3.15.0
5253@since 3.18.0 ServerInfo type name added.*/
5254#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5255#[serde(rename_all = "camelCase")]
5256pub struct ServerInfo {
5257    ///The name of the server as defined by the server.
5258    pub name: String,
5259    ///The server's version as defined by the server.
5260    #[serde(default)]
5261    pub version: Option<String>,
5262}
5263///A text document identifier to denote a specific version of a text document.
5264#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5265#[serde(rename_all = "camelCase")]
5266pub struct VersionedTextDocumentIdentifier {
5267    #[serde(flatten)]
5268    pub text_document_identifier_base: TextDocumentIdentifier,
5269    ///The version number of this document.
5270    pub version: Integer,
5271}
5272///Save options.
5273#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5274#[serde(rename_all = "camelCase")]
5275pub struct SaveOptions {
5276    ///The client is supposed to include the content on save.
5277    #[serde(rename = "includeText")]
5278    #[serde(default)]
5279    pub include_text: Option<bool>,
5280}
5281///An event describing a file change.
5282#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5283#[serde(rename_all = "camelCase")]
5284pub struct FileEvent {
5285    ///The file's uri.
5286    pub uri: DocumentUri,
5287    ///The change type.
5288    pub type_: FileChangeType,
5289}
5290#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5291#[serde(rename_all = "camelCase")]
5292pub struct FileSystemWatcher {
5293    /**The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail.
5294
5295@since 3.17.0 support for relative patterns.*/
5296    #[serde(rename = "globPattern")]
5297    pub glob_pattern: GlobPattern,
5298    /**The kind of events of interest. If omitted it defaults
5299to WatchKind.Create | WatchKind.Change | WatchKind.Delete
5300which is 7.*/
5301    #[serde(default)]
5302    pub kind: Option<WatchKind>,
5303}
5304/**Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
5305are only valid in the scope of a resource.*/
5306#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5307#[serde(rename_all = "camelCase")]
5308pub struct Diagnostic {
5309    ///The range at which the message applies
5310    pub range: Range,
5311    /**The diagnostic's severity. To avoid interpretation mismatches when a
5312server is used with different clients it is highly recommended that servers
5313always provide a severity value.*/
5314    #[serde(default)]
5315    pub severity: Option<DiagnosticSeverity>,
5316    ///The diagnostic's code, which usually appear in the user interface.
5317    #[serde(default)]
5318    pub code: Option<IntegerOrString>,
5319    /**An optional property to describe the error code.
5320Requires the code field (above) to be present/not null.
5321
5322@since 3.16.0*/
5323    #[serde(rename = "codeDescription")]
5324    #[serde(default)]
5325    pub code_description: Option<CodeDescription>,
5326    /**A human-readable string describing the source of this
5327diagnostic, e.g. 'typescript' or 'super lint'. It usually
5328appears in the user interface.*/
5329    #[serde(default)]
5330    pub source: Option<String>,
5331    /**The diagnostic's message. It usually appears in the user interface.
5332
5333@since 3.18.0 - support for MarkupContent. This is guarded by the client
5334capability `textDocument.diagnostic.markupMessageSupport`.*/
5335    pub message: MarkupContentOrString,
5336    /**Additional metadata about the diagnostic.
5337
5338@since 3.15.0*/
5339    #[serde(default)]
5340    pub tags: Option<Vec<DiagnosticTag>>,
5341    /**An array of related diagnostic information, e.g. when symbol-names within
5342a scope collide all definitions can be marked via this property.*/
5343    #[serde(rename = "relatedInformation")]
5344    #[serde(default)]
5345    pub related_information: Option<Vec<DiagnosticRelatedInformation>>,
5346    /**A data entry field that is preserved between a `textDocument/publishDiagnostics`
5347notification and `textDocument/codeAction` request.
5348
5349@since 3.16.0*/
5350    #[serde(default)]
5351    pub data: Option<LSPAny>,
5352}
5353///Contains additional information about the context in which a completion request is triggered.
5354#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5355#[serde(rename_all = "camelCase")]
5356pub struct CompletionContext {
5357    ///How the completion was triggered.
5358    #[serde(rename = "triggerKind")]
5359    pub trigger_kind: CompletionTriggerKind,
5360    /**The trigger character (a single character) that has trigger code complete.
5361Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`*/
5362    #[serde(rename = "triggerCharacter")]
5363    #[serde(default)]
5364    pub trigger_character: Option<String>,
5365}
5366/**Additional details for a completion item label.
5367
5368@since 3.17.0*/
5369#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5370#[serde(rename_all = "camelCase")]
5371pub struct CompletionItemLabelDetails {
5372    /**An optional string which is rendered less prominently directly after {@link CompletionItem.label label},
5373without any spacing. Should be used for function signatures and type annotations.*/
5374    #[serde(default)]
5375    pub detail: Option<String>,
5376    /**An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used
5377for fully qualified names and file paths.*/
5378    #[serde(default)]
5379    pub description: Option<String>,
5380}
5381/**A special text edit to provide an insert and a replace operation.
5382
5383@since 3.16.0*/
5384#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5385#[serde(rename_all = "camelCase")]
5386pub struct InsertReplaceEdit {
5387    ///The string to be inserted.
5388    #[serde(rename = "newText")]
5389    pub new_text: String,
5390    ///The range if the insert is requested
5391    pub insert: Range,
5392    ///The range if the replace is requested.
5393    pub replace: Range,
5394}
5395/**In many cases the items of an actual completion result share the same
5396value for properties like `commitCharacters` or the range of a text
5397edit. A completion list can therefore define item defaults which will
5398be used if a completion item itself doesn't specify the value.
5399
5400If a completion list specifies a default value and a completion item
5401also specifies a corresponding value, the rules for combining these are
5402defined by `applyKinds` (if the client supports it), defaulting to
5403ApplyKind.Replace.
5404
5405Servers are only allowed to return default values if the client
5406signals support for this via the `completionList.itemDefaults`
5407capability.
5408
5409@since 3.17.0*/
5410#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5411#[serde(rename_all = "camelCase")]
5412pub struct CompletionItemDefaults {
5413    /**A default commit character set.
5414
5415@since 3.17.0*/
5416    #[serde(rename = "commitCharacters")]
5417    #[serde(default)]
5418    pub commit_characters: Option<Vec<String>>,
5419    /**A default edit range.
5420
5421@since 3.17.0*/
5422    #[serde(rename = "editRange")]
5423    #[serde(default)]
5424    pub edit_range: Option<EditRangeWithInsertReplaceOrRange>,
5425    /**A default insert text format.
5426
5427@since 3.17.0*/
5428    #[serde(rename = "insertTextFormat")]
5429    #[serde(default)]
5430    pub insert_text_format: Option<InsertTextFormat>,
5431    /**A default insert text mode.
5432
5433@since 3.17.0*/
5434    #[serde(rename = "insertTextMode")]
5435    #[serde(default)]
5436    pub insert_text_mode: Option<InsertTextMode>,
5437    /**A default data value.
5438
5439@since 3.17.0*/
5440    #[serde(default)]
5441    pub data: Option<LSPAny>,
5442}
5443/**Specifies how fields from a completion item should be combined with those
5444from `completionList.itemDefaults`.
5445
5446If unspecified, all fields will be treated as ApplyKind.Replace.
5447
5448If a field's value is ApplyKind.Replace, the value from a completion item (if
5449provided and not `null`) will always be used instead of the value from
5450`completionItem.itemDefaults`.
5451
5452If a field's value is ApplyKind.Merge, the values will be merged using the rules
5453defined against each field below.
5454
5455Servers are only allowed to return `applyKind` if the client
5456signals support for this via the `completionList.applyKindSupport`
5457capability.
5458
5459@since 3.18.0*/
5460#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5461#[serde(rename_all = "camelCase")]
5462pub struct CompletionItemApplyKinds {
5463    /**Specifies whether commitCharacters on a completion will replace or be
5464merged with those in `completionList.itemDefaults.commitCharacters`.
5465
5466If ApplyKind.Replace, the commit characters from the completion item will
5467always be used unless not provided, in which case those from
5468`completionList.itemDefaults.commitCharacters` will be used. An
5469empty list can be used if a completion item does not have any commit
5470characters and also should not use those from
5471`completionList.itemDefaults.commitCharacters`.
5472
5473If ApplyKind.Merge the commitCharacters for the completion will be the
5474union of all values in both `completionList.itemDefaults.commitCharacters`
5475and the completion's own `commitCharacters`.
5476
5477@since 3.18.0*/
5478    #[serde(rename = "commitCharacters")]
5479    #[serde(default)]
5480    pub commit_characters: Option<ApplyKind>,
5481    /**Specifies whether the `data` field on a completion will replace or
5482be merged with data from `completionList.itemDefaults.data`.
5483
5484If ApplyKind.Replace, the data from the completion item will be used if
5485provided (and not `null`), otherwise
5486`completionList.itemDefaults.data` will be used. An empty object can
5487be used if a completion item does not have any data but also should
5488not use the value from `completionList.itemDefaults.data`.
5489
5490If ApplyKind.Merge, a shallow merge will be performed between
5491`completionList.itemDefaults.data` and the completion's own data
5492using the following rules:
5493
5494- If a completion's `data` field is not provided (or `null`), the
5495  entire `data` field from `completionList.itemDefaults.data` will be
5496  used as-is.
5497- If a completion's `data` field is provided, each field will
5498  overwrite the field of the same name in
5499  `completionList.itemDefaults.data` but no merging of nested fields
5500  within that value will occur.
5501
5502@since 3.18.0*/
5503    #[serde(default)]
5504    pub data: Option<ApplyKind>,
5505}
5506///Completion options.
5507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5508#[serde(rename_all = "camelCase")]
5509pub struct CompletionOptions {
5510    #[serde(flatten)]
5511    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5512    /**Most tools trigger completion request automatically without explicitly requesting
5513it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
5514starts to type an identifier. For example if the user types `c` in a JavaScript file
5515code complete will automatically pop up present `console` besides others as a
5516completion item. Characters that make up identifiers don't need to be listed here.
5517
5518If code complete should automatically be trigger on characters not being valid inside
5519an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.*/
5520    #[serde(rename = "triggerCharacters")]
5521    #[serde(default)]
5522    pub trigger_characters: Option<Vec<String>>,
5523    /**The list of all possible characters that commit a completion. This field can be used
5524if clients don't support individual commit characters per completion item. See
5525`ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`
5526
5527If a server provides both `allCommitCharacters` and commit characters on an individual
5528completion item the ones on the completion item win.
5529
5530@since 3.2.0*/
5531    #[serde(rename = "allCommitCharacters")]
5532    #[serde(default)]
5533    pub all_commit_characters: Option<Vec<String>>,
5534    /**The server provides support to resolve additional
5535information for a completion item.*/
5536    #[serde(rename = "resolveProvider")]
5537    #[serde(default)]
5538    pub resolve_provider: Option<bool>,
5539    /**The server supports the following `CompletionItem` specific
5540capabilities.
5541
5542@since 3.17.0*/
5543    #[serde(rename = "completionItem")]
5544    #[serde(default)]
5545    pub completion_item: Option<ServerCompletionItemOptions>,
5546}
5547///Hover options.
5548#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5549#[serde(rename_all = "camelCase")]
5550pub struct HoverOptions {
5551    #[serde(flatten)]
5552    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5553}
5554/**Additional information about the context in which a signature help request was triggered.
5555
5556@since 3.15.0*/
5557#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5558#[serde(rename_all = "camelCase")]
5559pub struct SignatureHelpContext {
5560    ///Action that caused signature help to be triggered.
5561    #[serde(rename = "triggerKind")]
5562    pub trigger_kind: SignatureHelpTriggerKind,
5563    /**Character that caused signature help to be triggered.
5564
5565This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter`*/
5566    #[serde(rename = "triggerCharacter")]
5567    #[serde(default)]
5568    pub trigger_character: Option<String>,
5569    /**`true` if signature help was already showing when it was triggered.
5570
5571Retriggers occurs when the signature help is already active and can be caused by actions such as
5572typing a trigger character, a cursor move, or document content changes.*/
5573    #[serde(rename = "isRetrigger")]
5574    pub is_retrigger: bool,
5575    /**The currently active `SignatureHelp`.
5576
5577The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on
5578the user navigating through available signatures.*/
5579    #[serde(rename = "activeSignatureHelp")]
5580    #[serde(default)]
5581    pub active_signature_help: Option<SignatureHelp>,
5582}
5583/**Represents the signature of something callable. A signature
5584can have a label, like a function-name, a doc-comment, and
5585a set of parameters.*/
5586#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5587#[serde(rename_all = "camelCase")]
5588pub struct SignatureInformation {
5589    /**The label of this signature. Will be shown in
5590the UI.*/
5591    pub label: String,
5592    /**The human-readable doc-comment of this signature. Will be shown
5593in the UI but can be omitted.*/
5594    #[serde(default)]
5595    pub documentation: Option<MarkupContentOrString>,
5596    ///The parameters of this signature.
5597    #[serde(default)]
5598    pub parameters: Option<Vec<ParameterInformation>>,
5599    /**The index of the active parameter.
5600
5601If `null`, no parameter of the signature is active (for example a named
5602argument that does not match any declared parameters). This is only valid
5603if the client specifies the client capability
5604`textDocument.signatureHelp.noActiveParameterSupport === true`
5605
5606If provided (or `null`), this is used in place of
5607`SignatureHelp.activeParameter`.
5608
5609@since 3.16.0*/
5610    #[serde(rename = "activeParameter")]
5611    #[serde(default)]
5612    pub active_parameter: Option<Option<Uinteger>>,
5613}
5614///Server Capabilities for a {@link SignatureHelpRequest}.
5615#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5616#[serde(rename_all = "camelCase")]
5617pub struct SignatureHelpOptions {
5618    #[serde(flatten)]
5619    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5620    ///List of characters that trigger signature help automatically.
5621    #[serde(rename = "triggerCharacters")]
5622    #[serde(default)]
5623    pub trigger_characters: Option<Vec<String>>,
5624    /**List of characters that re-trigger signature help.
5625
5626These trigger characters are only active when signature help is already showing. All trigger characters
5627are also counted as re-trigger characters.
5628
5629@since 3.15.0*/
5630    #[serde(rename = "retriggerCharacters")]
5631    #[serde(default)]
5632    pub retrigger_characters: Option<Vec<String>>,
5633}
5634///Server Capabilities for a {@link DefinitionRequest}.
5635#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5636#[serde(rename_all = "camelCase")]
5637pub struct DefinitionOptions {
5638    #[serde(flatten)]
5639    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5640}
5641/**Value-object that contains additional information when
5642requesting references.*/
5643#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5644#[serde(rename_all = "camelCase")]
5645pub struct ReferenceContext {
5646    ///Include the declaration of the current symbol.
5647    #[serde(rename = "includeDeclaration")]
5648    pub include_declaration: bool,
5649}
5650///Reference options.
5651#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5652#[serde(rename_all = "camelCase")]
5653pub struct ReferenceOptions {
5654    #[serde(flatten)]
5655    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5656}
5657///Provider options for a {@link DocumentHighlightRequest}.
5658#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5659#[serde(rename_all = "camelCase")]
5660pub struct DocumentHighlightOptions {
5661    #[serde(flatten)]
5662    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5663}
5664///A base for all symbol information.
5665#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5666#[serde(rename_all = "camelCase")]
5667pub struct BaseSymbolInformation {
5668    ///The name of this symbol.
5669    pub name: String,
5670    ///The kind of this symbol.
5671    pub kind: SymbolKind,
5672    /**Tags for this symbol.
5673
5674@since 3.16.0*/
5675    #[serde(default)]
5676    pub tags: Option<Vec<SymbolTag>>,
5677    /**The name of the symbol containing this symbol. This information is for
5678user interface purposes (e.g. to render a qualifier in the user interface
5679if necessary). It can't be used to re-infer a hierarchy for the document
5680symbols.*/
5681    #[serde(rename = "containerName")]
5682    #[serde(default)]
5683    pub container_name: Option<String>,
5684}
5685///Provider options for a {@link DocumentSymbolRequest}.
5686#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5687#[serde(rename_all = "camelCase")]
5688pub struct DocumentSymbolOptions {
5689    #[serde(flatten)]
5690    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5691    /**A human-readable string that is shown when multiple outlines trees
5692are shown for the same document.
5693
5694@since 3.16.0*/
5695    #[serde(default)]
5696    pub label: Option<String>,
5697}
5698/**Contains additional diagnostic information about the context in which
5699a {@link CodeActionProvider.provideCodeActions code action} is run.*/
5700#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5701#[serde(rename_all = "camelCase")]
5702pub struct CodeActionContext {
5703    /**An array of diagnostics known on the client side overlapping the range provided to the
5704`textDocument/codeAction` request. They are provided so that the server knows which
5705errors are currently presented to the user for the given range. There is no guarantee
5706that these accurately reflect the error state of the resource. The primary parameter
5707to compute code actions is the provided range.*/
5708    pub diagnostics: Vec<Diagnostic>,
5709    /**Requested kind of actions to return.
5710
5711Actions not of this kind are filtered out by the client before being shown. So servers
5712can omit computing them.*/
5713    #[serde(default)]
5714    pub only: Option<Vec<CodeActionKind>>,
5715    /**The reason why code actions were requested.
5716
5717@since 3.17.0*/
5718    #[serde(rename = "triggerKind")]
5719    #[serde(default)]
5720    pub trigger_kind: Option<CodeActionTriggerKind>,
5721}
5722/**Captures why the code action is currently disabled.
5723
5724@since 3.18.0*/
5725#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5726#[serde(rename_all = "camelCase")]
5727pub struct CodeActionDisabled {
5728    /**Human readable description of why the code action is currently disabled.
5729
5730This is displayed in the code actions UI.*/
5731    pub reason: String,
5732}
5733///Provider options for a {@link CodeActionRequest}.
5734#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5735#[serde(rename_all = "camelCase")]
5736pub struct CodeActionOptions {
5737    #[serde(flatten)]
5738    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5739    /**CodeActionKinds that this server may return.
5740
5741The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
5742may list out every specific kind they provide.*/
5743    #[serde(rename = "codeActionKinds")]
5744    #[serde(default)]
5745    pub code_action_kinds: Option<Vec<CodeActionKind>>,
5746    /**Static documentation for a class of code actions.
5747
5748Documentation from the provider should be shown in the code actions menu if either:
5749
5750- Code actions of `kind` are requested by the editor. In this case, the editor will show the documentation that
5751  most closely matches the requested code action kind. For example, if a provider has documentation for
5752  both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`,
5753  the editor will use the documentation for `RefactorExtract` instead of the documentation for `Refactor`.
5754
5755- Any code actions of `kind` are returned by the provider.
5756
5757At most one documentation entry should be shown per provider.
5758
5759@since 3.18.0*/
5760    #[serde(default)]
5761    pub documentation: Option<Vec<CodeActionKindDocumentation>>,
5762    /**The server provides support to resolve additional
5763information for a code action.
5764
5765@since 3.16.0*/
5766    #[serde(rename = "resolveProvider")]
5767    #[serde(default)]
5768    pub resolve_provider: Option<bool>,
5769}
5770/**Location with only uri and does not include range.
5771
5772@since 3.18.0*/
5773#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5774#[serde(rename_all = "camelCase")]
5775pub struct LocationUriOnly {
5776    pub uri: DocumentUri,
5777}
5778///Server capabilities for a {@link WorkspaceSymbolRequest}.
5779#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5780#[serde(rename_all = "camelCase")]
5781pub struct WorkspaceSymbolOptions {
5782    #[serde(flatten)]
5783    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5784    /**The server provides support to resolve additional
5785information for a workspace symbol.
5786
5787@since 3.17.0*/
5788    #[serde(rename = "resolveProvider")]
5789    #[serde(default)]
5790    pub resolve_provider: Option<bool>,
5791}
5792///Code Lens provider options of a {@link CodeLensRequest}.
5793#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5794#[serde(rename_all = "camelCase")]
5795pub struct CodeLensOptions {
5796    #[serde(flatten)]
5797    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5798    ///Code lens has a resolve provider as well.
5799    #[serde(rename = "resolveProvider")]
5800    #[serde(default)]
5801    pub resolve_provider: Option<bool>,
5802}
5803///Provider options for a {@link DocumentLinkRequest}.
5804#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5805#[serde(rename_all = "camelCase")]
5806pub struct DocumentLinkOptions {
5807    #[serde(flatten)]
5808    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5809    ///Document links have a resolve provider as well.
5810    #[serde(rename = "resolveProvider")]
5811    #[serde(default)]
5812    pub resolve_provider: Option<bool>,
5813}
5814///Value-object describing what options formatting should use.
5815#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5816#[serde(rename_all = "camelCase")]
5817pub struct FormattingOptions {
5818    ///Size of a tab in spaces.
5819    #[serde(rename = "tabSize")]
5820    pub tab_size: Uinteger,
5821    ///Prefer spaces over tabs.
5822    #[serde(rename = "insertSpaces")]
5823    pub insert_spaces: bool,
5824    /**Trim trailing whitespace on a line.
5825
5826@since 3.15.0*/
5827    #[serde(rename = "trimTrailingWhitespace")]
5828    #[serde(default)]
5829    pub trim_trailing_whitespace: Option<bool>,
5830    /**Insert a newline character at the end of the file if one does not exist.
5831
5832@since 3.15.0*/
5833    #[serde(rename = "insertFinalNewline")]
5834    #[serde(default)]
5835    pub insert_final_newline: Option<bool>,
5836    /**Trim all newlines after the final newline at the end of the file.
5837
5838@since 3.15.0*/
5839    #[serde(rename = "trimFinalNewlines")]
5840    #[serde(default)]
5841    pub trim_final_newlines: Option<bool>,
5842}
5843///Provider options for a {@link DocumentFormattingRequest}.
5844#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5845#[serde(rename_all = "camelCase")]
5846pub struct DocumentFormattingOptions {
5847    #[serde(flatten)]
5848    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5849}
5850///Provider options for a {@link DocumentRangeFormattingRequest}.
5851#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5852#[serde(rename_all = "camelCase")]
5853pub struct DocumentRangeFormattingOptions {
5854    #[serde(flatten)]
5855    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5856    /**Whether the server supports formatting multiple ranges at once.
5857
5858@since 3.18.0*/
5859    #[serde(rename = "rangesSupport")]
5860    #[serde(default)]
5861    pub ranges_support: Option<bool>,
5862}
5863///Provider options for a {@link DocumentOnTypeFormattingRequest}.
5864#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5865#[serde(rename_all = "camelCase")]
5866pub struct DocumentOnTypeFormattingOptions {
5867    ///A character on which formatting should be triggered, like `{`.
5868    #[serde(rename = "firstTriggerCharacter")]
5869    pub first_trigger_character: String,
5870    ///More trigger characters.
5871    #[serde(rename = "moreTriggerCharacter")]
5872    #[serde(default)]
5873    pub more_trigger_character: Option<Vec<String>>,
5874}
5875///Provider options for a {@link RenameRequest}.
5876#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5877#[serde(rename_all = "camelCase")]
5878pub struct RenameOptions {
5879    #[serde(flatten)]
5880    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5881    /**Renames should be checked and tested before being executed.
5882
5883@since version 3.12.0*/
5884    #[serde(rename = "prepareProvider")]
5885    #[serde(default)]
5886    pub prepare_provider: Option<bool>,
5887}
5888///@since 3.18.0
5889#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5890#[serde(rename_all = "camelCase")]
5891pub struct PrepareRenamePlaceholder {
5892    pub range: Range,
5893    pub placeholder: String,
5894}
5895///@since 3.18.0
5896#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5897#[serde(rename_all = "camelCase")]
5898pub struct PrepareRenameDefaultBehavior {
5899    #[serde(rename = "defaultBehavior")]
5900    pub default_behavior: bool,
5901}
5902///The server capabilities of a {@link ExecuteCommandRequest}.
5903#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5904#[serde(rename_all = "camelCase")]
5905pub struct ExecuteCommandOptions {
5906    #[serde(flatten)]
5907    pub work_done_progress_options_mixin: WorkDoneProgressOptions,
5908    ///The commands to be executed on the server
5909    pub commands: Vec<String>,
5910}
5911/**Additional data about a workspace edit.
5912
5913@since 3.18.0*/
5914#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5915#[serde(rename_all = "camelCase")]
5916pub struct WorkspaceEditMetadata {
5917    ///Signal to the editor that this edit is a refactoring.
5918    #[serde(rename = "isRefactoring")]
5919    #[serde(default)]
5920    pub is_refactoring: Option<bool>,
5921}
5922///@since 3.16.0
5923#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5924#[serde(rename_all = "camelCase")]
5925pub struct SemanticTokensLegend {
5926    ///The token types a server uses.
5927    #[serde(rename = "tokenTypes")]
5928    pub token_types: Vec<String>,
5929    ///The token modifiers a server uses.
5930    #[serde(rename = "tokenModifiers")]
5931    pub token_modifiers: Vec<String>,
5932}
5933/**Semantic tokens options to support deltas for full documents
5934
5935@since 3.18.0*/
5936#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5937#[serde(rename_all = "camelCase")]
5938pub struct SemanticTokensFullDelta {
5939    ///The server supports deltas for full documents.
5940    #[serde(default)]
5941    pub delta: Option<bool>,
5942}
5943///A text document identifier to optionally denote a specific version of a text document.
5944#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5945#[serde(rename_all = "camelCase")]
5946pub struct OptionalVersionedTextDocumentIdentifier {
5947    #[serde(flatten)]
5948    pub text_document_identifier_base: TextDocumentIdentifier,
5949    /**The version number of this document. If a versioned text document identifier
5950is sent from the server to the client and the file is not open in the editor
5951(the server has not received an open notification before) the server can send
5952`null` to indicate that the version is unknown and the content on disk is the
5953truth (as specified with document content ownership).*/
5954    pub version: Option<Integer>,
5955}
5956/**A special text edit with an additional change annotation.
5957
5958@since 3.16.0.*/
5959#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5960#[serde(rename_all = "camelCase")]
5961pub struct AnnotatedTextEdit {
5962    #[serde(flatten)]
5963    pub text_edit_base: TextEdit,
5964    ///The actual identifier of the change annotation
5965    #[serde(rename = "annotationId")]
5966    pub annotation_id: ChangeAnnotationIdentifier,
5967}
5968/**An interactive text edit.
5969
5970@since 3.18.0*/
5971#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5972#[serde(rename_all = "camelCase")]
5973pub struct SnippetTextEdit {
5974    ///The range of the text document to be manipulated.
5975    pub range: Range,
5976    ///The snippet to be inserted.
5977    pub snippet: StringValue,
5978    ///The actual identifier of the snippet edit.
5979    #[serde(rename = "annotationId")]
5980    #[serde(default)]
5981    pub annotation_id: Option<ChangeAnnotationIdentifier>,
5982}
5983///A generic resource operation.
5984#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5985#[serde(rename_all = "camelCase")]
5986pub struct ResourceOperation {
5987    ///The resource operation kind.
5988    pub kind: String,
5989    /**An optional annotation identifier describing the operation.
5990
5991@since 3.16.0*/
5992    #[serde(rename = "annotationId")]
5993    #[serde(default)]
5994    pub annotation_id: Option<ChangeAnnotationIdentifier>,
5995}
5996///Options to create a file.
5997#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5998#[serde(rename_all = "camelCase")]
5999pub struct CreateFileOptions {
6000    ///Overwrite existing file. Overwrite wins over `ignoreIfExists`
6001    #[serde(default)]
6002    pub overwrite: Option<bool>,
6003    ///Ignore if exists.
6004    #[serde(rename = "ignoreIfExists")]
6005    #[serde(default)]
6006    pub ignore_if_exists: Option<bool>,
6007}
6008///Rename file options
6009#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6010#[serde(rename_all = "camelCase")]
6011pub struct RenameFileOptions {
6012    ///Overwrite target if existing. Overwrite wins over `ignoreIfExists`
6013    #[serde(default)]
6014    pub overwrite: Option<bool>,
6015    ///Ignores if target exists.
6016    #[serde(rename = "ignoreIfExists")]
6017    #[serde(default)]
6018    pub ignore_if_exists: Option<bool>,
6019}
6020///Delete file options
6021#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6022#[serde(rename_all = "camelCase")]
6023pub struct DeleteFileOptions {
6024    ///Delete the content recursively if a folder is denoted.
6025    #[serde(default)]
6026    pub recursive: Option<bool>,
6027    ///Ignore the operation if the file doesn't exist.
6028    #[serde(rename = "ignoreIfNotExists")]
6029    #[serde(default)]
6030    pub ignore_if_not_exists: Option<bool>,
6031}
6032/**A pattern to describe in which file operation requests or notifications
6033the server is interested in receiving.
6034
6035@since 3.16.0*/
6036#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6037#[serde(rename_all = "camelCase")]
6038pub struct FileOperationPattern {
6039    #[doc = "The glob pattern to match. Glob patterns can have the following syntax:\n- `*` to match zero or more characters in a path segment\n- `?` to match on one character in a path segment\n- `**` to match any number of path segments, including none\n- `{}` to group sub patterns into an OR expression. (e.g. `**\u{200b}/*.{ts,js}` matches all TypeScript and JavaScript files)\n- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)\n- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)"]
6040    pub glob: String,
6041    /**Whether to match files or folders with this pattern.
6042
6043Matches both if undefined.*/
6044    #[serde(default)]
6045    pub matches: Option<FileOperationPatternKind>,
6046    ///Additional options used during matching.
6047    #[serde(default)]
6048    pub options: Option<FileOperationPatternOptions>,
6049}
6050/**A full document diagnostic report for a workspace diagnostic result.
6051
6052@since 3.17.0*/
6053#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6054#[serde(rename_all = "camelCase")]
6055pub struct WorkspaceFullDocumentDiagnosticReport {
6056    #[serde(flatten)]
6057    pub full_document_diagnostic_report_base: FullDocumentDiagnosticReport,
6058    ///The URI for which diagnostic information is reported.
6059    pub uri: DocumentUri,
6060    /**The version number for which the diagnostics are reported.
6061If the document is not marked as open `null` can be provided.*/
6062    pub version: Option<Integer>,
6063}
6064/**An unchanged document diagnostic report for a workspace diagnostic result.
6065
6066@since 3.17.0*/
6067#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6068#[serde(rename_all = "camelCase")]
6069pub struct WorkspaceUnchangedDocumentDiagnosticReport {
6070    #[serde(flatten)]
6071    pub unchanged_document_diagnostic_report_base: UnchangedDocumentDiagnosticReport,
6072    ///The URI for which diagnostic information is reported.
6073    pub uri: DocumentUri,
6074    /**The version number for which the diagnostics are reported.
6075If the document is not marked as open `null` can be provided.*/
6076    pub version: Option<Integer>,
6077}
6078/**A notebook cell.
6079
6080A cell's document URI must be unique across ALL notebook
6081cells and can therefore be used to uniquely identify a
6082notebook cell or the cell's text document.
6083
6084@since 3.17.0*/
6085#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6086#[serde(rename_all = "camelCase")]
6087pub struct NotebookCell {
6088    ///The cell's kind
6089    pub kind: NotebookCellKind,
6090    /**The URI of the cell's text document
6091content.*/
6092    pub document: DocumentUri,
6093    /**Additional metadata stored with the cell.
6094
6095Note: should always be an object literal (e.g. LSPObject)*/
6096    #[serde(default)]
6097    pub metadata: Option<LSPObject>,
6098    /**Additional execution summary information
6099if supported by the client.*/
6100    #[serde(rename = "executionSummary")]
6101    #[serde(default)]
6102    pub execution_summary: Option<ExecutionSummary>,
6103}
6104///@since 3.18.0
6105#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6106#[serde(rename_all = "camelCase")]
6107pub struct NotebookDocumentFilterWithNotebook {
6108    /**The notebook to be synced If a string
6109value is provided it matches against the
6110notebook type. '*' matches every notebook.*/
6111    pub notebook: NotebookDocumentFilterOrString,
6112    ///The cells of the matching notebook to be synced.
6113    #[serde(default)]
6114    pub cells: Option<Vec<NotebookCellLanguage>>,
6115}
6116///@since 3.18.0
6117#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6118#[serde(rename_all = "camelCase")]
6119pub struct NotebookDocumentFilterWithCells {
6120    /**The notebook to be synced If a string
6121value is provided it matches against the
6122notebook type. '*' matches every notebook.*/
6123    #[serde(default)]
6124    pub notebook: Option<NotebookDocumentFilterOrString>,
6125    ///The cells of the matching notebook to be synced.
6126    pub cells: Vec<NotebookCellLanguage>,
6127}
6128/**Cell changes to a notebook document.
6129
6130@since 3.18.0*/
6131#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6132#[serde(rename_all = "camelCase")]
6133pub struct NotebookDocumentCellChanges {
6134    /**Changes to the cell structure to add or
6135remove cells.*/
6136    #[serde(default)]
6137    pub structure: Option<NotebookDocumentCellChangeStructure>,
6138    /**Changes to notebook cells properties like its
6139kind, execution summary or metadata.*/
6140    #[serde(default)]
6141    pub data: Option<Vec<NotebookCell>>,
6142    ///Changes to the text content of notebook cells.
6143    #[serde(rename = "textContent")]
6144    #[serde(default)]
6145    pub text_content: Option<Vec<NotebookDocumentCellContentChanges>>,
6146}
6147/**Describes the currently selected completion item.
6148
6149@since 3.18.0*/
6150#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6151#[serde(rename_all = "camelCase")]
6152pub struct SelectedCompletionInfo {
6153    ///The range that will be replaced if this completion item is accepted.
6154    pub range: Range,
6155    ///The text the range will be replaced with if this completion is accepted.
6156    pub text: String,
6157}
6158/**Information about the client
6159
6160@since 3.15.0
6161@since 3.18.0 ClientInfo type name added.*/
6162#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6163#[serde(rename_all = "camelCase")]
6164pub struct ClientInfo {
6165    ///The name of the client as defined by the client.
6166    pub name: String,
6167    ///The client's version as defined by the client.
6168    #[serde(default)]
6169    pub version: Option<String>,
6170}
6171///Defines the capabilities provided by the client.
6172#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6173#[serde(rename_all = "camelCase")]
6174pub struct ClientCapabilities {
6175    ///Workspace specific client capabilities.
6176    #[serde(default)]
6177    pub workspace: Option<WorkspaceClientCapabilities>,
6178    ///Text document specific client capabilities.
6179    #[serde(rename = "textDocument")]
6180    #[serde(default)]
6181    pub text_document: Option<TextDocumentClientCapabilities>,
6182    /**Capabilities specific to the notebook document support.
6183
6184@since 3.17.0*/
6185    #[serde(rename = "notebookDocument")]
6186    #[serde(default)]
6187    pub notebook_document: Option<NotebookDocumentClientCapabilities>,
6188    ///Window specific client capabilities.
6189    #[serde(default)]
6190    pub window: Option<WindowClientCapabilities>,
6191    /**General client capabilities.
6192
6193@since 3.16.0*/
6194    #[serde(default)]
6195    pub general: Option<GeneralClientCapabilities>,
6196    ///Experimental client capabilities.
6197    #[serde(default)]
6198    pub experimental: Option<LSPAny>,
6199}
6200#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6201#[serde(rename_all = "camelCase")]
6202pub struct TextDocumentSyncOptions {
6203    /**Open and close notifications are sent to the server. If omitted open close notification should not
6204be sent.*/
6205    #[serde(rename = "openClose")]
6206    #[serde(default)]
6207    pub open_close: Option<bool>,
6208    /**Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full
6209and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None.*/
6210    #[serde(default)]
6211    pub change: Option<TextDocumentSyncKind>,
6212    /**If present will save notifications are sent to the server. If omitted the notification should not be
6213sent.*/
6214    #[serde(rename = "willSave")]
6215    #[serde(default)]
6216    pub will_save: Option<bool>,
6217    /**If present will save wait until requests are sent to the server. If omitted the request should not be
6218sent.*/
6219    #[serde(rename = "willSaveWaitUntil")]
6220    #[serde(default)]
6221    pub will_save_wait_until: Option<bool>,
6222    /**If present save notifications are sent to the server. If omitted the notification should not be
6223sent.*/
6224    #[serde(default)]
6225    pub save: Option<BooleanOrSaveOptions>,
6226}
6227/**Defines workspace specific capabilities of the server.
6228
6229@since 3.18.0*/
6230#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6231#[serde(rename_all = "camelCase")]
6232pub struct WorkspaceOptions {
6233    /**The server supports workspace folder.
6234
6235@since 3.6.0*/
6236    #[serde(rename = "workspaceFolders")]
6237    #[serde(default)]
6238    pub workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
6239    /**The server is interested in notifications/requests for operations on files.
6240
6241@since 3.16.0*/
6242    #[serde(rename = "fileOperations")]
6243    #[serde(default)]
6244    pub file_operations: Option<FileOperationOptions>,
6245    /**The server supports the `workspace/textDocumentContent` request.
6246
6247@since 3.18.0*/
6248    #[serde(rename = "textDocumentContent")]
6249    #[serde(default)]
6250    pub text_document_content: Option<
6251        TextDocumentContentOptionsOrTextDocumentContentRegistrationOptions,
6252    >,
6253}
6254///@since 3.18.0
6255#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6256#[serde(rename_all = "camelCase")]
6257pub struct TextDocumentContentChangePartial {
6258    ///The range of the document that changed.
6259    pub range: Range,
6260    /**The optional length of the range that got replaced.
6261
6262@deprecated use range instead.*/
6263    #[serde(rename = "rangeLength")]
6264    #[serde(default)]
6265    pub range_length: Option<Uinteger>,
6266    ///The new text for the provided range.
6267    pub text: String,
6268}
6269///@since 3.18.0
6270#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6271#[serde(rename_all = "camelCase")]
6272pub struct TextDocumentContentChangeWholeDocument {
6273    ///The new text of the whole document.
6274    pub text: String,
6275}
6276/**Structure to capture a description for an error code.
6277
6278@since 3.16.0*/
6279#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6280#[serde(rename_all = "camelCase")]
6281pub struct CodeDescription {
6282    ///An URI to open with more information about the diagnostic error.
6283    pub href: URI,
6284}
6285/**Represents a related message and source code location for a diagnostic. This should be
6286used to point to code locations that cause or related to a diagnostics, e.g when duplicating
6287a symbol in a scope.*/
6288#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6289#[serde(rename_all = "camelCase")]
6290pub struct DiagnosticRelatedInformation {
6291    ///The location of this related diagnostic information.
6292    pub location: Location,
6293    ///The message of this related diagnostic information.
6294    pub message: String,
6295}
6296/**Edit range variant that includes ranges for insert and replace operations.
6297
6298@since 3.18.0*/
6299#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6300#[serde(rename_all = "camelCase")]
6301pub struct EditRangeWithInsertReplace {
6302    pub insert: Range,
6303    pub replace: Range,
6304}
6305///@since 3.18.0
6306#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6307#[serde(rename_all = "camelCase")]
6308pub struct ServerCompletionItemOptions {
6309    /**The server has support for completion item label
6310details (see also `CompletionItemLabelDetails`) when
6311receiving a completion item in a resolve call.
6312
6313@since 3.17.0*/
6314    #[serde(rename = "labelDetailsSupport")]
6315    #[serde(default)]
6316    pub label_details_support: Option<bool>,
6317}
6318/**@since 3.18.0
6319@deprecated use MarkupContent instead.*/
6320#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6321#[serde(rename_all = "camelCase")]
6322pub struct MarkedStringWithLanguage {
6323    pub language: String,
6324    pub value: String,
6325}
6326/**Represents a parameter of a callable-signature. A parameter can
6327have a label and a doc-comment.*/
6328#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6329#[serde(rename_all = "camelCase")]
6330pub struct ParameterInformation {
6331    /**The label of this parameter information.
6332
6333Either a string or an inclusive start and exclusive end offsets within its containing
6334signature label. (see SignatureInformation.label). The offsets are based on a UTF-16
6335string representation as `Position` and `Range` does.
6336
6337To avoid ambiguities a server should use the [start, end] offset value instead of using
6338a substring. Whether a client support this is controlled via `labelOffsetSupport` client
6339capability.
6340
6341*Note*: a label of type string should be a substring of its containing signature label.
6342Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`.*/
6343    pub label: StringOrTupleOfUintegerAndUinteger,
6344    /**The human-readable doc-comment of this parameter. Will be shown
6345in the UI but can be omitted.*/
6346    #[serde(default)]
6347    pub documentation: Option<MarkupContentOrString>,
6348}
6349/**Documentation for a class of code actions.
6350
6351@since 3.18.0*/
6352#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6353#[serde(rename_all = "camelCase")]
6354pub struct CodeActionKindDocumentation {
6355    /**The kind of the code action being documented.
6356
6357If the kind is generic, such as `CodeActionKind.Refactor`, the documentation will be shown whenever any
6358refactorings are returned. If the kind if more specific, such as `CodeActionKind.RefactorExtract`, the
6359documentation will only be shown when extract refactoring code actions are returned.*/
6360    pub kind: CodeActionKind,
6361    /**Command that is ued to display the documentation to the user.
6362
6363The title of this documentation code action is taken from {@linkcode Command.title}*/
6364    pub command: Command,
6365}
6366/**A notebook cell text document filter denotes a cell text
6367document by different properties.
6368
6369@since 3.17.0*/
6370#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6371#[serde(rename_all = "camelCase")]
6372pub struct NotebookCellTextDocumentFilter {
6373    /**A filter that matches against the notebook
6374containing the notebook cell. If a string
6375value is provided it matches against the
6376notebook type. '*' matches every notebook.*/
6377    pub notebook: NotebookDocumentFilterOrString,
6378    /**A language id like `python`.
6379
6380Will be matched against the language id of the
6381notebook cell document. '*' matches every language.*/
6382    #[serde(default)]
6383    pub language: Option<String>,
6384}
6385/**Matching options for the file operation pattern.
6386
6387@since 3.16.0*/
6388#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6389#[serde(rename_all = "camelCase")]
6390pub struct FileOperationPatternOptions {
6391    ///The pattern should be matched ignoring casing.
6392    #[serde(rename = "ignoreCase")]
6393    #[serde(default)]
6394    pub ignore_case: Option<bool>,
6395}
6396#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6397#[serde(rename_all = "camelCase")]
6398pub struct ExecutionSummary {
6399    /**A strict monotonically increasing value
6400indicating the execution order of a cell
6401inside a notebook.*/
6402    #[serde(rename = "executionOrder")]
6403    pub execution_order: Uinteger,
6404    /**Whether the execution was successful or
6405not if known by the client.*/
6406    #[serde(default)]
6407    pub success: Option<bool>,
6408}
6409///@since 3.18.0
6410#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6411#[serde(rename_all = "camelCase")]
6412pub struct NotebookCellLanguage {
6413    pub language: String,
6414}
6415/**Structural changes to cells in a notebook document.
6416
6417@since 3.18.0*/
6418#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6419#[serde(rename_all = "camelCase")]
6420pub struct NotebookDocumentCellChangeStructure {
6421    ///The change to the cell array.
6422    pub array: NotebookCellArrayChange,
6423    ///Additional opened cell text documents.
6424    #[serde(rename = "didOpen")]
6425    #[serde(default)]
6426    pub did_open: Option<Vec<TextDocumentItem>>,
6427    ///Additional closed cell text documents.
6428    #[serde(rename = "didClose")]
6429    #[serde(default)]
6430    pub did_close: Option<Vec<TextDocumentIdentifier>>,
6431}
6432/**Content changes to a cell in a notebook document.
6433
6434@since 3.18.0*/
6435#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6436#[serde(rename_all = "camelCase")]
6437pub struct NotebookDocumentCellContentChanges {
6438    pub document: VersionedTextDocumentIdentifier,
6439    pub changes: Vec<TextDocumentContentChangeEvent>,
6440}
6441///Workspace specific client capabilities.
6442#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6443#[serde(rename_all = "camelCase")]
6444pub struct WorkspaceClientCapabilities {
6445    /**The client supports applying batch edits
6446to the workspace by supporting the request
6447'workspace/applyEdit'*/
6448    #[serde(rename = "applyEdit")]
6449    #[serde(default)]
6450    pub apply_edit: Option<bool>,
6451    ///Capabilities specific to `WorkspaceEdit`s.
6452    #[serde(rename = "workspaceEdit")]
6453    #[serde(default)]
6454    pub workspace_edit: Option<WorkspaceEditClientCapabilities>,
6455    ///Capabilities specific to the `workspace/didChangeConfiguration` notification.
6456    #[serde(rename = "didChangeConfiguration")]
6457    #[serde(default)]
6458    pub did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
6459    ///Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
6460    #[serde(rename = "didChangeWatchedFiles")]
6461    #[serde(default)]
6462    pub did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
6463    ///Capabilities specific to the `workspace/symbol` request.
6464    #[serde(default)]
6465    pub symbol: Option<WorkspaceSymbolClientCapabilities>,
6466    ///Capabilities specific to the `workspace/executeCommand` request.
6467    #[serde(rename = "executeCommand")]
6468    #[serde(default)]
6469    pub execute_command: Option<ExecuteCommandClientCapabilities>,
6470    /**The client has support for workspace folders.
6471
6472@since 3.6.0*/
6473    #[serde(rename = "workspaceFolders")]
6474    #[serde(default)]
6475    pub workspace_folders: Option<bool>,
6476    /**The client supports `workspace/configuration` requests.
6477
6478@since 3.6.0*/
6479    #[serde(default)]
6480    pub configuration: Option<bool>,
6481    /**Capabilities specific to the semantic token requests scoped to the
6482workspace.
6483
6484@since 3.16.0.*/
6485    #[serde(rename = "semanticTokens")]
6486    #[serde(default)]
6487    pub semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
6488    /**Capabilities specific to the code lens requests scoped to the
6489workspace.
6490
6491@since 3.16.0.*/
6492    #[serde(rename = "codeLens")]
6493    #[serde(default)]
6494    pub code_lens: Option<CodeLensWorkspaceClientCapabilities>,
6495    /**The client has support for file notifications/requests for user operations on files.
6496
6497Since 3.16.0*/
6498    #[serde(rename = "fileOperations")]
6499    #[serde(default)]
6500    pub file_operations: Option<FileOperationClientCapabilities>,
6501    /**Capabilities specific to the inline values requests scoped to the
6502workspace.
6503
6504@since 3.17.0.*/
6505    #[serde(rename = "inlineValue")]
6506    #[serde(default)]
6507    pub inline_value: Option<InlineValueWorkspaceClientCapabilities>,
6508    /**Capabilities specific to the inlay hint requests scoped to the
6509workspace.
6510
6511@since 3.17.0.*/
6512    #[serde(rename = "inlayHint")]
6513    #[serde(default)]
6514    pub inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
6515    /**Capabilities specific to the diagnostic requests scoped to the
6516workspace.
6517
6518@since 3.17.0.*/
6519    #[serde(default)]
6520    pub diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
6521    /**Capabilities specific to the folding range requests scoped to the workspace.
6522
6523@since 3.18.0*/
6524    #[serde(rename = "foldingRange")]
6525    #[serde(default)]
6526    pub folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
6527    /**Capabilities specific to the `workspace/textDocumentContent` request.
6528
6529@since 3.18.0*/
6530    #[serde(rename = "textDocumentContent")]
6531    #[serde(default)]
6532    pub text_document_content: Option<TextDocumentContentClientCapabilities>,
6533}
6534///Text document specific client capabilities.
6535#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6536#[serde(rename_all = "camelCase")]
6537pub struct TextDocumentClientCapabilities {
6538    ///Defines which synchronization capabilities the client supports.
6539    #[serde(default)]
6540    pub synchronization: Option<TextDocumentSyncClientCapabilities>,
6541    /**Defines which filters the client supports.
6542
6543@since 3.18.0*/
6544    #[serde(default)]
6545    pub filters: Option<TextDocumentFilterClientCapabilities>,
6546    ///Capabilities specific to the `textDocument/completion` request.
6547    #[serde(default)]
6548    pub completion: Option<CompletionClientCapabilities>,
6549    ///Capabilities specific to the `textDocument/hover` request.
6550    #[serde(default)]
6551    pub hover: Option<HoverClientCapabilities>,
6552    ///Capabilities specific to the `textDocument/signatureHelp` request.
6553    #[serde(rename = "signatureHelp")]
6554    #[serde(default)]
6555    pub signature_help: Option<SignatureHelpClientCapabilities>,
6556    /**Capabilities specific to the `textDocument/declaration` request.
6557
6558@since 3.14.0*/
6559    #[serde(default)]
6560    pub declaration: Option<DeclarationClientCapabilities>,
6561    ///Capabilities specific to the `textDocument/definition` request.
6562    #[serde(default)]
6563    pub definition: Option<DefinitionClientCapabilities>,
6564    /**Capabilities specific to the `textDocument/typeDefinition` request.
6565
6566@since 3.6.0*/
6567    #[serde(rename = "typeDefinition")]
6568    #[serde(default)]
6569    pub type_definition: Option<TypeDefinitionClientCapabilities>,
6570    /**Capabilities specific to the `textDocument/implementation` request.
6571
6572@since 3.6.0*/
6573    #[serde(default)]
6574    pub implementation: Option<ImplementationClientCapabilities>,
6575    ///Capabilities specific to the `textDocument/references` request.
6576    #[serde(default)]
6577    pub references: Option<ReferenceClientCapabilities>,
6578    ///Capabilities specific to the `textDocument/documentHighlight` request.
6579    #[serde(rename = "documentHighlight")]
6580    #[serde(default)]
6581    pub document_highlight: Option<DocumentHighlightClientCapabilities>,
6582    ///Capabilities specific to the `textDocument/documentSymbol` request.
6583    #[serde(rename = "documentSymbol")]
6584    #[serde(default)]
6585    pub document_symbol: Option<DocumentSymbolClientCapabilities>,
6586    ///Capabilities specific to the `textDocument/codeAction` request.
6587    #[serde(rename = "codeAction")]
6588    #[serde(default)]
6589    pub code_action: Option<CodeActionClientCapabilities>,
6590    ///Capabilities specific to the `textDocument/codeLens` request.
6591    #[serde(rename = "codeLens")]
6592    #[serde(default)]
6593    pub code_lens: Option<CodeLensClientCapabilities>,
6594    ///Capabilities specific to the `textDocument/documentLink` request.
6595    #[serde(rename = "documentLink")]
6596    #[serde(default)]
6597    pub document_link: Option<DocumentLinkClientCapabilities>,
6598    /**Capabilities specific to the `textDocument/documentColor` and the
6599`textDocument/colorPresentation` request.
6600
6601@since 3.6.0*/
6602    #[serde(rename = "colorProvider")]
6603    #[serde(default)]
6604    pub color_provider: Option<DocumentColorClientCapabilities>,
6605    ///Capabilities specific to the `textDocument/formatting` request.
6606    #[serde(default)]
6607    pub formatting: Option<DocumentFormattingClientCapabilities>,
6608    ///Capabilities specific to the `textDocument/rangeFormatting` request.
6609    #[serde(rename = "rangeFormatting")]
6610    #[serde(default)]
6611    pub range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
6612    ///Capabilities specific to the `textDocument/onTypeFormatting` request.
6613    #[serde(rename = "onTypeFormatting")]
6614    #[serde(default)]
6615    pub on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
6616    ///Capabilities specific to the `textDocument/rename` request.
6617    #[serde(default)]
6618    pub rename: Option<RenameClientCapabilities>,
6619    /**Capabilities specific to the `textDocument/foldingRange` request.
6620
6621@since 3.10.0*/
6622    #[serde(rename = "foldingRange")]
6623    #[serde(default)]
6624    pub folding_range: Option<FoldingRangeClientCapabilities>,
6625    /**Capabilities specific to the `textDocument/selectionRange` request.
6626
6627@since 3.15.0*/
6628    #[serde(rename = "selectionRange")]
6629    #[serde(default)]
6630    pub selection_range: Option<SelectionRangeClientCapabilities>,
6631    ///Capabilities specific to the `textDocument/publishDiagnostics` notification.
6632    #[serde(rename = "publishDiagnostics")]
6633    #[serde(default)]
6634    pub publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
6635    /**Capabilities specific to the various call hierarchy requests.
6636
6637@since 3.16.0*/
6638    #[serde(rename = "callHierarchy")]
6639    #[serde(default)]
6640    pub call_hierarchy: Option<CallHierarchyClientCapabilities>,
6641    /**Capabilities specific to the various semantic token request.
6642
6643@since 3.16.0*/
6644    #[serde(rename = "semanticTokens")]
6645    #[serde(default)]
6646    pub semantic_tokens: Option<SemanticTokensClientCapabilities>,
6647    /**Capabilities specific to the `textDocument/linkedEditingRange` request.
6648
6649@since 3.16.0*/
6650    #[serde(rename = "linkedEditingRange")]
6651    #[serde(default)]
6652    pub linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
6653    /**Client capabilities specific to the `textDocument/moniker` request.
6654
6655@since 3.16.0*/
6656    #[serde(default)]
6657    pub moniker: Option<MonikerClientCapabilities>,
6658    /**Capabilities specific to the various type hierarchy requests.
6659
6660@since 3.17.0*/
6661    #[serde(rename = "typeHierarchy")]
6662    #[serde(default)]
6663    pub type_hierarchy: Option<TypeHierarchyClientCapabilities>,
6664    /**Capabilities specific to the `textDocument/inlineValue` request.
6665
6666@since 3.17.0*/
6667    #[serde(rename = "inlineValue")]
6668    #[serde(default)]
6669    pub inline_value: Option<InlineValueClientCapabilities>,
6670    /**Capabilities specific to the `textDocument/inlayHint` request.
6671
6672@since 3.17.0*/
6673    #[serde(rename = "inlayHint")]
6674    #[serde(default)]
6675    pub inlay_hint: Option<InlayHintClientCapabilities>,
6676    /**Capabilities specific to the diagnostic pull model.
6677
6678@since 3.17.0*/
6679    #[serde(default)]
6680    pub diagnostic: Option<DiagnosticClientCapabilities>,
6681    /**Client capabilities specific to inline completions.
6682
6683@since 3.18.0*/
6684    #[serde(rename = "inlineCompletion")]
6685    #[serde(default)]
6686    pub inline_completion: Option<InlineCompletionClientCapabilities>,
6687}
6688/**Capabilities specific to the notebook document support.
6689
6690@since 3.17.0*/
6691#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6692#[serde(rename_all = "camelCase")]
6693pub struct NotebookDocumentClientCapabilities {
6694    /**Capabilities specific to notebook document synchronization
6695
6696@since 3.17.0*/
6697    pub synchronization: NotebookDocumentSyncClientCapabilities,
6698}
6699#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6700#[serde(rename_all = "camelCase")]
6701pub struct WindowClientCapabilities {
6702    /**It indicates whether the client supports server initiated
6703progress using the `window/workDoneProgress/create` request.
6704
6705The capability also controls Whether client supports handling
6706of progress notifications. If set servers are allowed to report a
6707`workDoneProgress` property in the request specific server
6708capabilities.
6709
6710@since 3.15.0*/
6711    #[serde(rename = "workDoneProgress")]
6712    #[serde(default)]
6713    pub work_done_progress: Option<bool>,
6714    /**Capabilities specific to the showMessage request.
6715
6716@since 3.16.0*/
6717    #[serde(rename = "showMessage")]
6718    #[serde(default)]
6719    pub show_message: Option<ShowMessageRequestClientCapabilities>,
6720    /**Capabilities specific to the showDocument request.
6721
6722@since 3.16.0*/
6723    #[serde(rename = "showDocument")]
6724    #[serde(default)]
6725    pub show_document: Option<ShowDocumentClientCapabilities>,
6726}
6727/**General client capabilities.
6728
6729@since 3.16.0*/
6730#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6731#[serde(rename_all = "camelCase")]
6732pub struct GeneralClientCapabilities {
6733    /**Client capability that signals how the client
6734handles stale requests (e.g. a request
6735for which the client will not process the response
6736anymore since the information is outdated).
6737
6738@since 3.17.0*/
6739    #[serde(rename = "staleRequestSupport")]
6740    #[serde(default)]
6741    pub stale_request_support: Option<StaleRequestSupportOptions>,
6742    /**Client capabilities specific to regular expressions.
6743
6744@since 3.16.0*/
6745    #[serde(rename = "regularExpressions")]
6746    #[serde(default)]
6747    pub regular_expressions: Option<RegularExpressionsClientCapabilities>,
6748    /**Client capabilities specific to the client's markdown parser.
6749
6750@since 3.16.0*/
6751    #[serde(default)]
6752    pub markdown: Option<MarkdownClientCapabilities>,
6753    /**The position encodings supported by the client. Client and server
6754have to agree on the same position encoding to ensure that offsets
6755(e.g. character position in a line) are interpreted the same on both
6756sides.
6757
6758To keep the protocol backwards compatible the following applies: if
6759the value 'utf-16' is missing from the array of position encodings
6760servers can assume that the client supports UTF-16. UTF-16 is
6761therefore a mandatory encoding.
6762
6763If omitted it defaults to ['utf-16'].
6764
6765Implementation considerations: since the conversion from one encoding
6766into another requires the content of the file / line the conversion
6767is best done where the file is read which is usually on the server
6768side.
6769
6770@since 3.17.0*/
6771    #[serde(rename = "positionEncodings")]
6772    #[serde(default)]
6773    pub position_encodings: Option<Vec<PositionEncodingKind>>,
6774}
6775#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6776#[serde(rename_all = "camelCase")]
6777pub struct WorkspaceFoldersServerCapabilities {
6778    ///The server has support for workspace folders
6779    #[serde(default)]
6780    pub supported: Option<bool>,
6781    /**Whether the server wants to receive workspace folder
6782change notifications.
6783
6784If a string is provided the string is treated as an ID
6785under which the notification is registered on the client
6786side. The ID can be used to unregister for these events
6787using the `client/unregisterCapability` request.*/
6788    #[serde(rename = "changeNotifications")]
6789    #[serde(default)]
6790    pub change_notifications: Option<BooleanOrString>,
6791}
6792/**Options for notifications/requests for user operations on files.
6793
6794@since 3.16.0*/
6795#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6796#[serde(rename_all = "camelCase")]
6797pub struct FileOperationOptions {
6798    ///The server is interested in receiving didCreateFiles notifications.
6799    #[serde(rename = "didCreate")]
6800    #[serde(default)]
6801    pub did_create: Option<FileOperationRegistrationOptions>,
6802    ///The server is interested in receiving willCreateFiles requests.
6803    #[serde(rename = "willCreate")]
6804    #[serde(default)]
6805    pub will_create: Option<FileOperationRegistrationOptions>,
6806    ///The server is interested in receiving didRenameFiles notifications.
6807    #[serde(rename = "didRename")]
6808    #[serde(default)]
6809    pub did_rename: Option<FileOperationRegistrationOptions>,
6810    ///The server is interested in receiving willRenameFiles requests.
6811    #[serde(rename = "willRename")]
6812    #[serde(default)]
6813    pub will_rename: Option<FileOperationRegistrationOptions>,
6814    ///The server is interested in receiving didDeleteFiles file notifications.
6815    #[serde(rename = "didDelete")]
6816    #[serde(default)]
6817    pub did_delete: Option<FileOperationRegistrationOptions>,
6818    ///The server is interested in receiving willDeleteFiles file requests.
6819    #[serde(rename = "willDelete")]
6820    #[serde(default)]
6821    pub will_delete: Option<FileOperationRegistrationOptions>,
6822}
6823/**A relative pattern is a helper to construct glob patterns that are matched
6824relatively to a base URI. The common value for a `baseUri` is a workspace
6825folder root, but it can be another absolute URI as well.
6826
6827@since 3.17.0*/
6828#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6829#[serde(rename_all = "camelCase")]
6830pub struct RelativePattern {
6831    /**A workspace folder or a base URI to which this pattern will be matched
6832against relatively.*/
6833    #[serde(rename = "baseUri")]
6834    pub base_uri: UriOrWorkspaceFolder,
6835    ///The actual glob pattern;
6836    pub pattern: Pattern,
6837}
6838/**A document filter where `language` is required field.
6839
6840@since 3.18.0*/
6841#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6842#[serde(rename_all = "camelCase")]
6843pub struct TextDocumentFilterLanguage {
6844    ///A language id, like `typescript`.
6845    pub language: String,
6846    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6847    #[serde(default)]
6848    pub scheme: Option<String>,
6849    #[doc = "A glob pattern, like **\u{200b}/*.{ts,js}. See TextDocumentFilter for examples.\n\n@since 3.18.0 - support for relative patterns. Whether clients support\nrelative patterns depends on the client capability\n`textDocuments.filters.relativePatternSupport`."]
6850    #[serde(default)]
6851    pub pattern: Option<GlobPattern>,
6852}
6853/**A document filter where `scheme` is required field.
6854
6855@since 3.18.0*/
6856#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6857#[serde(rename_all = "camelCase")]
6858pub struct TextDocumentFilterScheme {
6859    ///A language id, like `typescript`.
6860    #[serde(default)]
6861    pub language: Option<String>,
6862    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6863    pub scheme: String,
6864    #[doc = "A glob pattern, like **\u{200b}/*.{ts,js}. See TextDocumentFilter for examples.\n\n@since 3.18.0 - support for relative patterns. Whether clients support\nrelative patterns depends on the client capability\n`textDocuments.filters.relativePatternSupport`."]
6865    #[serde(default)]
6866    pub pattern: Option<GlobPattern>,
6867}
6868/**A document filter where `pattern` is required field.
6869
6870@since 3.18.0*/
6871#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6872#[serde(rename_all = "camelCase")]
6873pub struct TextDocumentFilterPattern {
6874    ///A language id, like `typescript`.
6875    #[serde(default)]
6876    pub language: Option<String>,
6877    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6878    #[serde(default)]
6879    pub scheme: Option<String>,
6880    #[doc = "A glob pattern, like **\u{200b}/*.{ts,js}. See TextDocumentFilter for examples.\n\n@since 3.18.0 - support for relative patterns. Whether clients support\nrelative patterns depends on the client capability\n`textDocuments.filters.relativePatternSupport`."]
6881    pub pattern: GlobPattern,
6882}
6883/**A notebook document filter where `notebookType` is required field.
6884
6885@since 3.18.0*/
6886#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6887#[serde(rename_all = "camelCase")]
6888pub struct NotebookDocumentFilterNotebookType {
6889    ///The type of the enclosing notebook.
6890    #[serde(rename = "notebookType")]
6891    pub notebook_type: String,
6892    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6893    #[serde(default)]
6894    pub scheme: Option<String>,
6895    ///A glob pattern.
6896    #[serde(default)]
6897    pub pattern: Option<GlobPattern>,
6898}
6899/**A notebook document filter where `scheme` is required field.
6900
6901@since 3.18.0*/
6902#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6903#[serde(rename_all = "camelCase")]
6904pub struct NotebookDocumentFilterScheme {
6905    ///The type of the enclosing notebook.
6906    #[serde(rename = "notebookType")]
6907    #[serde(default)]
6908    pub notebook_type: Option<String>,
6909    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6910    pub scheme: String,
6911    ///A glob pattern.
6912    #[serde(default)]
6913    pub pattern: Option<GlobPattern>,
6914}
6915/**A notebook document filter where `pattern` is required field.
6916
6917@since 3.18.0*/
6918#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6919#[serde(rename_all = "camelCase")]
6920pub struct NotebookDocumentFilterPattern {
6921    ///The type of the enclosing notebook.
6922    #[serde(rename = "notebookType")]
6923    #[serde(default)]
6924    pub notebook_type: Option<String>,
6925    ///A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
6926    #[serde(default)]
6927    pub scheme: Option<String>,
6928    ///A glob pattern.
6929    pub pattern: GlobPattern,
6930}
6931/**A change describing how to move a `NotebookCell`
6932array from state S to S'.
6933
6934@since 3.17.0*/
6935#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6936#[serde(rename_all = "camelCase")]
6937pub struct NotebookCellArrayChange {
6938    ///The start oftest of the cell that changed.
6939    pub start: Uinteger,
6940    ///The deleted cells
6941    #[serde(rename = "deleteCount")]
6942    pub delete_count: Uinteger,
6943    ///The new cells, if any
6944    #[serde(default)]
6945    pub cells: Option<Vec<NotebookCell>>,
6946}
6947#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6948#[serde(rename_all = "camelCase")]
6949pub struct WorkspaceEditClientCapabilities {
6950    ///The client supports versioned document changes in `WorkspaceEdit`s
6951    #[serde(rename = "documentChanges")]
6952    #[serde(default)]
6953    pub document_changes: Option<bool>,
6954    /**The resource operations the client supports. Clients should at least
6955support 'create', 'rename' and 'delete' files and folders.
6956
6957@since 3.13.0*/
6958    #[serde(rename = "resourceOperations")]
6959    #[serde(default)]
6960    pub resource_operations: Option<Vec<ResourceOperationKind>>,
6961    /**The failure handling strategy of a client if applying the workspace edit
6962fails.
6963
6964@since 3.13.0*/
6965    #[serde(rename = "failureHandling")]
6966    #[serde(default)]
6967    pub failure_handling: Option<FailureHandlingKind>,
6968    /**Whether the client normalizes line endings to the client specific
6969setting.
6970If set to `true` the client will normalize line ending characters
6971in a workspace edit to the client-specified new line
6972character.
6973
6974@since 3.16.0*/
6975    #[serde(rename = "normalizesLineEndings")]
6976    #[serde(default)]
6977    pub normalizes_line_endings: Option<bool>,
6978    /**Whether the client in general supports change annotations on text edits,
6979create file, rename file and delete file changes.
6980
6981@since 3.16.0*/
6982    #[serde(rename = "changeAnnotationSupport")]
6983    #[serde(default)]
6984    pub change_annotation_support: Option<ChangeAnnotationsSupportOptions>,
6985    /**Whether the client supports `WorkspaceEditMetadata` in `WorkspaceEdit`s.
6986
6987@since 3.18.0*/
6988    #[serde(rename = "metadataSupport")]
6989    #[serde(default)]
6990    pub metadata_support: Option<bool>,
6991    /**Whether the client supports snippets as text edits.
6992
6993@since 3.18.0*/
6994    #[serde(rename = "snippetEditSupport")]
6995    #[serde(default)]
6996    pub snippet_edit_support: Option<bool>,
6997}
6998#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6999#[serde(rename_all = "camelCase")]
7000pub struct DidChangeConfigurationClientCapabilities {
7001    ///Did change configuration notification supports dynamic registration.
7002    #[serde(rename = "dynamicRegistration")]
7003    #[serde(default)]
7004    pub dynamic_registration: Option<bool>,
7005}
7006#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7007#[serde(rename_all = "camelCase")]
7008pub struct DidChangeWatchedFilesClientCapabilities {
7009    /**Did change watched files notification supports dynamic registration. Please note
7010that the current protocol doesn't support static configuration for file changes
7011from the server side.*/
7012    #[serde(rename = "dynamicRegistration")]
7013    #[serde(default)]
7014    pub dynamic_registration: Option<bool>,
7015    /**Whether the client has support for {@link  RelativePattern relative pattern}
7016or not.
7017
7018@since 3.17.0*/
7019    #[serde(rename = "relativePatternSupport")]
7020    #[serde(default)]
7021    pub relative_pattern_support: Option<bool>,
7022}
7023///Client capabilities for a {@link WorkspaceSymbolRequest}.
7024#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7025#[serde(rename_all = "camelCase")]
7026pub struct WorkspaceSymbolClientCapabilities {
7027    ///Symbol request supports dynamic registration.
7028    #[serde(rename = "dynamicRegistration")]
7029    #[serde(default)]
7030    pub dynamic_registration: Option<bool>,
7031    ///Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
7032    #[serde(rename = "symbolKind")]
7033    #[serde(default)]
7034    pub symbol_kind: Option<ClientSymbolKindOptions>,
7035    /**The client supports tags on `SymbolInformation`.
7036Clients supporting tags have to handle unknown tags gracefully.
7037
7038@since 3.16.0*/
7039    #[serde(rename = "tagSupport")]
7040    #[serde(default)]
7041    pub tag_support: Option<ClientSymbolTagOptions>,
7042    /**The client support partial workspace symbols. The client will send the
7043request `workspaceSymbol/resolve` to the server to resolve additional
7044properties.
7045
7046@since 3.17.0*/
7047    #[serde(rename = "resolveSupport")]
7048    #[serde(default)]
7049    pub resolve_support: Option<ClientSymbolResolveOptions>,
7050}
7051///The client capabilities of a {@link ExecuteCommandRequest}.
7052#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7053#[serde(rename_all = "camelCase")]
7054pub struct ExecuteCommandClientCapabilities {
7055    ///Execute command supports dynamic registration.
7056    #[serde(rename = "dynamicRegistration")]
7057    #[serde(default)]
7058    pub dynamic_registration: Option<bool>,
7059}
7060///@since 3.16.0
7061#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7062#[serde(rename_all = "camelCase")]
7063pub struct SemanticTokensWorkspaceClientCapabilities {
7064    /**Whether the client implementation supports a refresh request sent from
7065the server to the client.
7066
7067Note that this event is global and will force the client to refresh all
7068semantic tokens currently shown. It should be used with absolute care
7069and is useful for situation where a server for example detects a project
7070wide change that requires such a calculation.*/
7071    #[serde(rename = "refreshSupport")]
7072    #[serde(default)]
7073    pub refresh_support: Option<bool>,
7074}
7075///@since 3.16.0
7076#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7077#[serde(rename_all = "camelCase")]
7078pub struct CodeLensWorkspaceClientCapabilities {
7079    /**Whether the client implementation supports a refresh request sent from the
7080server to the client.
7081
7082Note that this event is global and will force the client to refresh all
7083code lenses currently shown. It should be used with absolute care and is
7084useful for situation where a server for example detect a project wide
7085change that requires such a calculation.*/
7086    #[serde(rename = "refreshSupport")]
7087    #[serde(default)]
7088    pub refresh_support: Option<bool>,
7089}
7090/**Capabilities relating to events from file operations by the user in the client.
7091
7092These events do not come from the file system, they come from user operations
7093like renaming a file in the UI.
7094
7095@since 3.16.0*/
7096#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7097#[serde(rename_all = "camelCase")]
7098pub struct FileOperationClientCapabilities {
7099    ///Whether the client supports dynamic registration for file requests/notifications.
7100    #[serde(rename = "dynamicRegistration")]
7101    #[serde(default)]
7102    pub dynamic_registration: Option<bool>,
7103    ///The client has support for sending didCreateFiles notifications.
7104    #[serde(rename = "didCreate")]
7105    #[serde(default)]
7106    pub did_create: Option<bool>,
7107    ///The client has support for sending willCreateFiles requests.
7108    #[serde(rename = "willCreate")]
7109    #[serde(default)]
7110    pub will_create: Option<bool>,
7111    ///The client has support for sending didRenameFiles notifications.
7112    #[serde(rename = "didRename")]
7113    #[serde(default)]
7114    pub did_rename: Option<bool>,
7115    ///The client has support for sending willRenameFiles requests.
7116    #[serde(rename = "willRename")]
7117    #[serde(default)]
7118    pub will_rename: Option<bool>,
7119    ///The client has support for sending didDeleteFiles notifications.
7120    #[serde(rename = "didDelete")]
7121    #[serde(default)]
7122    pub did_delete: Option<bool>,
7123    ///The client has support for sending willDeleteFiles requests.
7124    #[serde(rename = "willDelete")]
7125    #[serde(default)]
7126    pub will_delete: Option<bool>,
7127}
7128/**Client workspace capabilities specific to inline values.
7129
7130@since 3.17.0*/
7131#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7132#[serde(rename_all = "camelCase")]
7133pub struct InlineValueWorkspaceClientCapabilities {
7134    /**Whether the client implementation supports a refresh request sent from the
7135server to the client.
7136
7137Note that this event is global and will force the client to refresh all
7138inline values currently shown. It should be used with absolute care and is
7139useful for situation where a server for example detects a project wide
7140change that requires such a calculation.*/
7141    #[serde(rename = "refreshSupport")]
7142    #[serde(default)]
7143    pub refresh_support: Option<bool>,
7144}
7145/**Client workspace capabilities specific to inlay hints.
7146
7147@since 3.17.0*/
7148#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7149#[serde(rename_all = "camelCase")]
7150pub struct InlayHintWorkspaceClientCapabilities {
7151    /**Whether the client implementation supports a refresh request sent from
7152the server to the client.
7153
7154Note that this event is global and will force the client to refresh all
7155inlay hints currently shown. It should be used with absolute care and
7156is useful for situation where a server for example detects a project wide
7157change that requires such a calculation.*/
7158    #[serde(rename = "refreshSupport")]
7159    #[serde(default)]
7160    pub refresh_support: Option<bool>,
7161}
7162/**Workspace client capabilities specific to diagnostic pull requests.
7163
7164@since 3.17.0*/
7165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7166#[serde(rename_all = "camelCase")]
7167pub struct DiagnosticWorkspaceClientCapabilities {
7168    /**Whether the client implementation supports a refresh request sent from
7169the server to the client.
7170
7171Note that this event is global and will force the client to refresh all
7172pulled diagnostics currently shown. It should be used with absolute care and
7173is useful for situation where a server for example detects a project wide
7174change that requires such a calculation.*/
7175    #[serde(rename = "refreshSupport")]
7176    #[serde(default)]
7177    pub refresh_support: Option<bool>,
7178}
7179/**Client workspace capabilities specific to folding ranges
7180
7181@since 3.18.0*/
7182#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7183#[serde(rename_all = "camelCase")]
7184pub struct FoldingRangeWorkspaceClientCapabilities {
7185    /**Whether the client implementation supports a refresh request sent from the
7186server to the client.
7187
7188Note that this event is global and will force the client to refresh all
7189folding ranges currently shown. It should be used with absolute care and is
7190useful for situation where a server for example detects a project wide
7191change that requires such a calculation.
7192
7193@since 3.18.0*/
7194    #[serde(rename = "refreshSupport")]
7195    #[serde(default)]
7196    pub refresh_support: Option<bool>,
7197}
7198/**Client capabilities for a text document content provider.
7199
7200@since 3.18.0*/
7201#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7202#[serde(rename_all = "camelCase")]
7203pub struct TextDocumentContentClientCapabilities {
7204    ///Text document content provider supports dynamic registration.
7205    #[serde(rename = "dynamicRegistration")]
7206    #[serde(default)]
7207    pub dynamic_registration: Option<bool>,
7208}
7209#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7210#[serde(rename_all = "camelCase")]
7211pub struct TextDocumentSyncClientCapabilities {
7212    ///Whether text document synchronization supports dynamic registration.
7213    #[serde(rename = "dynamicRegistration")]
7214    #[serde(default)]
7215    pub dynamic_registration: Option<bool>,
7216    ///The client supports sending will save notifications.
7217    #[serde(rename = "willSave")]
7218    #[serde(default)]
7219    pub will_save: Option<bool>,
7220    /**The client supports sending a will save request and
7221waits for a response providing text edits which will
7222be applied to the document before it is saved.*/
7223    #[serde(rename = "willSaveWaitUntil")]
7224    #[serde(default)]
7225    pub will_save_wait_until: Option<bool>,
7226    ///The client supports did save notifications.
7227    #[serde(rename = "didSave")]
7228    #[serde(default)]
7229    pub did_save: Option<bool>,
7230}
7231#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7232#[serde(rename_all = "camelCase")]
7233pub struct TextDocumentFilterClientCapabilities {
7234    /**The client supports Relative Patterns.
7235
7236@since 3.18.0*/
7237    #[serde(rename = "relativePatternSupport")]
7238    #[serde(default)]
7239    pub relative_pattern_support: Option<bool>,
7240}
7241///Completion client capabilities
7242#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7243#[serde(rename_all = "camelCase")]
7244pub struct CompletionClientCapabilities {
7245    ///Whether completion supports dynamic registration.
7246    #[serde(rename = "dynamicRegistration")]
7247    #[serde(default)]
7248    pub dynamic_registration: Option<bool>,
7249    /**The client supports the following `CompletionItem` specific
7250capabilities.*/
7251    #[serde(rename = "completionItem")]
7252    #[serde(default)]
7253    pub completion_item: Option<ClientCompletionItemOptions>,
7254    ///The client supports the following completion item kinds.
7255    #[serde(rename = "completionItemKind")]
7256    #[serde(default)]
7257    pub completion_item_kind: Option<ClientCompletionItemOptionsKind>,
7258    /**Defines how the client handles whitespace and indentation
7259when accepting a completion item that uses multi line
7260text in either `insertText` or `textEdit`.
7261
7262@since 3.17.0*/
7263    #[serde(rename = "insertTextMode")]
7264    #[serde(default)]
7265    pub insert_text_mode: Option<InsertTextMode>,
7266    /**The client supports to send additional context information for a
7267`textDocument/completion` request.*/
7268    #[serde(rename = "contextSupport")]
7269    #[serde(default)]
7270    pub context_support: Option<bool>,
7271    /**The client supports the following `CompletionList` specific
7272capabilities.
7273
7274@since 3.17.0*/
7275    #[serde(rename = "completionList")]
7276    #[serde(default)]
7277    pub completion_list: Option<CompletionListCapabilities>,
7278}
7279#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7280#[serde(rename_all = "camelCase")]
7281pub struct HoverClientCapabilities {
7282    ///Whether hover supports dynamic registration.
7283    #[serde(rename = "dynamicRegistration")]
7284    #[serde(default)]
7285    pub dynamic_registration: Option<bool>,
7286    /**Client supports the following content formats for the content
7287property. The order describes the preferred format of the client.*/
7288    #[serde(rename = "contentFormat")]
7289    #[serde(default)]
7290    pub content_format: Option<Vec<MarkupKind>>,
7291}
7292///Client Capabilities for a {@link SignatureHelpRequest}.
7293#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7294#[serde(rename_all = "camelCase")]
7295pub struct SignatureHelpClientCapabilities {
7296    ///Whether signature help supports dynamic registration.
7297    #[serde(rename = "dynamicRegistration")]
7298    #[serde(default)]
7299    pub dynamic_registration: Option<bool>,
7300    /**The client supports the following `SignatureInformation`
7301specific properties.*/
7302    #[serde(rename = "signatureInformation")]
7303    #[serde(default)]
7304    pub signature_information: Option<ClientSignatureInformationOptions>,
7305    /**The client supports to send additional context information for a
7306`textDocument/signatureHelp` request. A client that opts into
7307contextSupport will also support the `retriggerCharacters` on
7308`SignatureHelpOptions`.
7309
7310@since 3.15.0*/
7311    #[serde(rename = "contextSupport")]
7312    #[serde(default)]
7313    pub context_support: Option<bool>,
7314}
7315///@since 3.14.0
7316#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7317#[serde(rename_all = "camelCase")]
7318pub struct DeclarationClientCapabilities {
7319    /**Whether declaration supports dynamic registration. If this is set to `true`
7320the client supports the new `DeclarationRegistrationOptions` return value
7321for the corresponding server capability as well.*/
7322    #[serde(rename = "dynamicRegistration")]
7323    #[serde(default)]
7324    pub dynamic_registration: Option<bool>,
7325    ///The client supports additional metadata in the form of declaration links.
7326    #[serde(rename = "linkSupport")]
7327    #[serde(default)]
7328    pub link_support: Option<bool>,
7329}
7330///Client Capabilities for a {@link DefinitionRequest}.
7331#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7332#[serde(rename_all = "camelCase")]
7333pub struct DefinitionClientCapabilities {
7334    ///Whether definition supports dynamic registration.
7335    #[serde(rename = "dynamicRegistration")]
7336    #[serde(default)]
7337    pub dynamic_registration: Option<bool>,
7338    /**The client supports additional metadata in the form of definition links.
7339
7340@since 3.14.0*/
7341    #[serde(rename = "linkSupport")]
7342    #[serde(default)]
7343    pub link_support: Option<bool>,
7344}
7345///Since 3.6.0
7346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7347#[serde(rename_all = "camelCase")]
7348pub struct TypeDefinitionClientCapabilities {
7349    /**Whether implementation supports dynamic registration. If this is set to `true`
7350the client supports the new `TypeDefinitionRegistrationOptions` return value
7351for the corresponding server capability as well.*/
7352    #[serde(rename = "dynamicRegistration")]
7353    #[serde(default)]
7354    pub dynamic_registration: Option<bool>,
7355    /**The client supports additional metadata in the form of definition links.
7356
7357Since 3.14.0*/
7358    #[serde(rename = "linkSupport")]
7359    #[serde(default)]
7360    pub link_support: Option<bool>,
7361}
7362///@since 3.6.0
7363#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7364#[serde(rename_all = "camelCase")]
7365pub struct ImplementationClientCapabilities {
7366    /**Whether implementation supports dynamic registration. If this is set to `true`
7367the client supports the new `ImplementationRegistrationOptions` return value
7368for the corresponding server capability as well.*/
7369    #[serde(rename = "dynamicRegistration")]
7370    #[serde(default)]
7371    pub dynamic_registration: Option<bool>,
7372    /**The client supports additional metadata in the form of definition links.
7373
7374@since 3.14.0*/
7375    #[serde(rename = "linkSupport")]
7376    #[serde(default)]
7377    pub link_support: Option<bool>,
7378}
7379///Client Capabilities for a {@link ReferencesRequest}.
7380#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7381#[serde(rename_all = "camelCase")]
7382pub struct ReferenceClientCapabilities {
7383    ///Whether references supports dynamic registration.
7384    #[serde(rename = "dynamicRegistration")]
7385    #[serde(default)]
7386    pub dynamic_registration: Option<bool>,
7387}
7388///Client Capabilities for a {@link DocumentHighlightRequest}.
7389#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7390#[serde(rename_all = "camelCase")]
7391pub struct DocumentHighlightClientCapabilities {
7392    ///Whether document highlight supports dynamic registration.
7393    #[serde(rename = "dynamicRegistration")]
7394    #[serde(default)]
7395    pub dynamic_registration: Option<bool>,
7396}
7397///Client Capabilities for a {@link DocumentSymbolRequest}.
7398#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7399#[serde(rename_all = "camelCase")]
7400pub struct DocumentSymbolClientCapabilities {
7401    ///Whether document symbol supports dynamic registration.
7402    #[serde(rename = "dynamicRegistration")]
7403    #[serde(default)]
7404    pub dynamic_registration: Option<bool>,
7405    /**Specific capabilities for the `SymbolKind` in the
7406`textDocument/documentSymbol` request.*/
7407    #[serde(rename = "symbolKind")]
7408    #[serde(default)]
7409    pub symbol_kind: Option<ClientSymbolKindOptions>,
7410    ///The client supports hierarchical document symbols.
7411    #[serde(rename = "hierarchicalDocumentSymbolSupport")]
7412    #[serde(default)]
7413    pub hierarchical_document_symbol_support: Option<bool>,
7414    /**The client supports tags on `SymbolInformation`. Tags are supported on
7415`DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true.
7416Clients supporting tags have to handle unknown tags gracefully.
7417
7418@since 3.16.0*/
7419    #[serde(rename = "tagSupport")]
7420    #[serde(default)]
7421    pub tag_support: Option<ClientSymbolTagOptions>,
7422    /**The client supports an additional label presented in the UI when
7423registering a document symbol provider.
7424
7425@since 3.16.0*/
7426    #[serde(rename = "labelSupport")]
7427    #[serde(default)]
7428    pub label_support: Option<bool>,
7429}
7430///The Client Capabilities of a {@link CodeActionRequest}.
7431#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7432#[serde(rename_all = "camelCase")]
7433pub struct CodeActionClientCapabilities {
7434    ///Whether code action supports dynamic registration.
7435    #[serde(rename = "dynamicRegistration")]
7436    #[serde(default)]
7437    pub dynamic_registration: Option<bool>,
7438    /**The client support code action literals of type `CodeAction` as a valid
7439response of the `textDocument/codeAction` request. If the property is not
7440set the request can only return `Command` literals.
7441
7442@since 3.8.0*/
7443    #[serde(rename = "codeActionLiteralSupport")]
7444    #[serde(default)]
7445    pub code_action_literal_support: Option<ClientCodeActionLiteralOptions>,
7446    /**Whether code action supports the `isPreferred` property.
7447
7448@since 3.15.0*/
7449    #[serde(rename = "isPreferredSupport")]
7450    #[serde(default)]
7451    pub is_preferred_support: Option<bool>,
7452    /**Whether code action supports the `disabled` property.
7453
7454@since 3.16.0*/
7455    #[serde(rename = "disabledSupport")]
7456    #[serde(default)]
7457    pub disabled_support: Option<bool>,
7458    /**Whether code action supports the `data` property which is
7459preserved between a `textDocument/codeAction` and a
7460`codeAction/resolve` request.
7461
7462@since 3.16.0*/
7463    #[serde(rename = "dataSupport")]
7464    #[serde(default)]
7465    pub data_support: Option<bool>,
7466    /**Whether the client supports resolving additional code action
7467properties via a separate `codeAction/resolve` request.
7468
7469@since 3.16.0*/
7470    #[serde(rename = "resolveSupport")]
7471    #[serde(default)]
7472    pub resolve_support: Option<ClientCodeActionResolveOptions>,
7473    /**Whether the client honors the change annotations in
7474text edits and resource operations returned via the
7475`CodeAction#edit` property by for example presenting
7476the workspace edit in the user interface and asking
7477for confirmation.
7478
7479@since 3.16.0*/
7480    #[serde(rename = "honorsChangeAnnotations")]
7481    #[serde(default)]
7482    pub honors_change_annotations: Option<bool>,
7483    /**Whether the client supports documentation for a class of
7484code actions.
7485
7486@since 3.18.0*/
7487    #[serde(rename = "documentationSupport")]
7488    #[serde(default)]
7489    pub documentation_support: Option<bool>,
7490    /**Client supports the tag property on a code action. Clients
7491supporting tags have to handle unknown tags gracefully.
7492
7493@since 3.18.0 - proposed*/
7494    #[serde(rename = "tagSupport")]
7495    #[serde(default)]
7496    pub tag_support: Option<CodeActionTagOptions>,
7497}
7498///The client capabilities  of a {@link CodeLensRequest}.
7499#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7500#[serde(rename_all = "camelCase")]
7501pub struct CodeLensClientCapabilities {
7502    ///Whether code lens supports dynamic registration.
7503    #[serde(rename = "dynamicRegistration")]
7504    #[serde(default)]
7505    pub dynamic_registration: Option<bool>,
7506    /**Whether the client supports resolving additional code lens
7507properties via a separate `codeLens/resolve` request.
7508
7509@since 3.18.0*/
7510    #[serde(rename = "resolveSupport")]
7511    #[serde(default)]
7512    pub resolve_support: Option<ClientCodeLensResolveOptions>,
7513}
7514///The client capabilities of a {@link DocumentLinkRequest}.
7515#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7516#[serde(rename_all = "camelCase")]
7517pub struct DocumentLinkClientCapabilities {
7518    ///Whether document link supports dynamic registration.
7519    #[serde(rename = "dynamicRegistration")]
7520    #[serde(default)]
7521    pub dynamic_registration: Option<bool>,
7522    /**Whether the client supports the `tooltip` property on `DocumentLink`.
7523
7524@since 3.15.0*/
7525    #[serde(rename = "tooltipSupport")]
7526    #[serde(default)]
7527    pub tooltip_support: Option<bool>,
7528}
7529#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7530#[serde(rename_all = "camelCase")]
7531pub struct DocumentColorClientCapabilities {
7532    /**Whether implementation supports dynamic registration. If this is set to `true`
7533the client supports the new `DocumentColorRegistrationOptions` return value
7534for the corresponding server capability as well.*/
7535    #[serde(rename = "dynamicRegistration")]
7536    #[serde(default)]
7537    pub dynamic_registration: Option<bool>,
7538}
7539///Client capabilities of a {@link DocumentFormattingRequest}.
7540#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7541#[serde(rename_all = "camelCase")]
7542pub struct DocumentFormattingClientCapabilities {
7543    ///Whether formatting supports dynamic registration.
7544    #[serde(rename = "dynamicRegistration")]
7545    #[serde(default)]
7546    pub dynamic_registration: Option<bool>,
7547}
7548///Client capabilities of a {@link DocumentRangeFormattingRequest}.
7549#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7550#[serde(rename_all = "camelCase")]
7551pub struct DocumentRangeFormattingClientCapabilities {
7552    ///Whether range formatting supports dynamic registration.
7553    #[serde(rename = "dynamicRegistration")]
7554    #[serde(default)]
7555    pub dynamic_registration: Option<bool>,
7556    /**Whether the client supports formatting multiple ranges at once.
7557
7558@since 3.18.0*/
7559    #[serde(rename = "rangesSupport")]
7560    #[serde(default)]
7561    pub ranges_support: Option<bool>,
7562}
7563///Client capabilities of a {@link DocumentOnTypeFormattingRequest}.
7564#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7565#[serde(rename_all = "camelCase")]
7566pub struct DocumentOnTypeFormattingClientCapabilities {
7567    ///Whether on type formatting supports dynamic registration.
7568    #[serde(rename = "dynamicRegistration")]
7569    #[serde(default)]
7570    pub dynamic_registration: Option<bool>,
7571}
7572#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7573#[serde(rename_all = "camelCase")]
7574pub struct RenameClientCapabilities {
7575    ///Whether rename supports dynamic registration.
7576    #[serde(rename = "dynamicRegistration")]
7577    #[serde(default)]
7578    pub dynamic_registration: Option<bool>,
7579    /**Client supports testing for validity of rename operations
7580before execution.
7581
7582@since 3.12.0*/
7583    #[serde(rename = "prepareSupport")]
7584    #[serde(default)]
7585    pub prepare_support: Option<bool>,
7586    /**Client supports the default behavior result.
7587
7588The value indicates the default behavior used by the
7589client.
7590
7591@since 3.16.0*/
7592    #[serde(rename = "prepareSupportDefaultBehavior")]
7593    #[serde(default)]
7594    pub prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
7595    /**Whether the client honors the change annotations in
7596text edits and resource operations returned via the
7597rename request's workspace edit by for example presenting
7598the workspace edit in the user interface and asking
7599for confirmation.
7600
7601@since 3.16.0*/
7602    #[serde(rename = "honorsChangeAnnotations")]
7603    #[serde(default)]
7604    pub honors_change_annotations: Option<bool>,
7605}
7606#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7607#[serde(rename_all = "camelCase")]
7608pub struct FoldingRangeClientCapabilities {
7609    /**Whether implementation supports dynamic registration for folding range
7610providers. If this is set to `true` the client supports the new
7611`FoldingRangeRegistrationOptions` return value for the corresponding
7612server capability as well.*/
7613    #[serde(rename = "dynamicRegistration")]
7614    #[serde(default)]
7615    pub dynamic_registration: Option<bool>,
7616    /**The maximum number of folding ranges that the client prefers to receive
7617per document. The value serves as a hint, servers are free to follow the
7618limit.*/
7619    #[serde(rename = "rangeLimit")]
7620    #[serde(default)]
7621    pub range_limit: Option<Uinteger>,
7622    /**If set, the client signals that it only supports folding complete lines.
7623If set, client will ignore specified `startCharacter` and `endCharacter`
7624properties in a FoldingRange.*/
7625    #[serde(rename = "lineFoldingOnly")]
7626    #[serde(default)]
7627    pub line_folding_only: Option<bool>,
7628    /**Specific options for the folding range kind.
7629
7630@since 3.17.0*/
7631    #[serde(rename = "foldingRangeKind")]
7632    #[serde(default)]
7633    pub folding_range_kind: Option<ClientFoldingRangeKindOptions>,
7634    /**Specific options for the folding range.
7635
7636@since 3.17.0*/
7637    #[serde(rename = "foldingRange")]
7638    #[serde(default)]
7639    pub folding_range: Option<ClientFoldingRangeOptions>,
7640}
7641#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7642#[serde(rename_all = "camelCase")]
7643pub struct SelectionRangeClientCapabilities {
7644    /**Whether implementation supports dynamic registration for selection range providers. If this is set to `true`
7645the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server
7646capability as well.*/
7647    #[serde(rename = "dynamicRegistration")]
7648    #[serde(default)]
7649    pub dynamic_registration: Option<bool>,
7650}
7651///The publish diagnostic client capabilities.
7652#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7653#[serde(rename_all = "camelCase")]
7654pub struct PublishDiagnosticsClientCapabilities {
7655    #[serde(flatten)]
7656    pub diagnostics_capabilities_base: DiagnosticsCapabilities,
7657    /**Whether the client interprets the version property of the
7658`textDocument/publishDiagnostics` notification's parameter.
7659
7660@since 3.15.0*/
7661    #[serde(rename = "versionSupport")]
7662    #[serde(default)]
7663    pub version_support: Option<bool>,
7664}
7665///@since 3.16.0
7666#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7667#[serde(rename_all = "camelCase")]
7668pub struct CallHierarchyClientCapabilities {
7669    /**Whether implementation supports dynamic registration. If this is set to `true`
7670the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7671return value for the corresponding server capability as well.*/
7672    #[serde(rename = "dynamicRegistration")]
7673    #[serde(default)]
7674    pub dynamic_registration: Option<bool>,
7675}
7676///@since 3.16.0
7677#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7678#[serde(rename_all = "camelCase")]
7679pub struct SemanticTokensClientCapabilities {
7680    /**Whether implementation supports dynamic registration. If this is set to `true`
7681the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7682return value for the corresponding server capability as well.*/
7683    #[serde(rename = "dynamicRegistration")]
7684    #[serde(default)]
7685    pub dynamic_registration: Option<bool>,
7686    /**Which requests the client supports and might send to the server
7687depending on the server's capability. Please note that clients might not
7688show semantic tokens or degrade some of the user experience if a range
7689or full request is advertised by the client but not provided by the
7690server. If for example the client capability `requests.full` and
7691`request.range` are both set to true but the server only provides a
7692range provider the client might not render a minimap correctly or might
7693even decide to not show any semantic tokens at all.*/
7694    pub requests: ClientSemanticTokensRequestOptions,
7695    ///The token types that the client supports.
7696    #[serde(rename = "tokenTypes")]
7697    pub token_types: Vec<String>,
7698    ///The token modifiers that the client supports.
7699    #[serde(rename = "tokenModifiers")]
7700    pub token_modifiers: Vec<String>,
7701    ///The token formats the clients supports.
7702    pub formats: Vec<TokenFormat>,
7703    ///Whether the client supports tokens that can overlap each other.
7704    #[serde(rename = "overlappingTokenSupport")]
7705    #[serde(default)]
7706    pub overlapping_token_support: Option<bool>,
7707    ///Whether the client supports tokens that can span multiple lines.
7708    #[serde(rename = "multilineTokenSupport")]
7709    #[serde(default)]
7710    pub multiline_token_support: Option<bool>,
7711    /**Whether the client allows the server to actively cancel a
7712semantic token request, e.g. supports returning
7713LSPErrorCodes.ServerCancelled. If a server does the client
7714needs to retrigger the request.
7715
7716@since 3.17.0*/
7717    #[serde(rename = "serverCancelSupport")]
7718    #[serde(default)]
7719    pub server_cancel_support: Option<bool>,
7720    /**Whether the client uses semantic tokens to augment existing
7721syntax tokens. If set to `true` client side created syntax
7722tokens and semantic tokens are both used for colorization. If
7723set to `false` the client only uses the returned semantic tokens
7724for colorization.
7725
7726If the value is `undefined` then the client behavior is not
7727specified.
7728
7729@since 3.17.0*/
7730    #[serde(rename = "augmentsSyntaxTokens")]
7731    #[serde(default)]
7732    pub augments_syntax_tokens: Option<bool>,
7733}
7734/**Client capabilities for the linked editing range request.
7735
7736@since 3.16.0*/
7737#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7738#[serde(rename_all = "camelCase")]
7739pub struct LinkedEditingRangeClientCapabilities {
7740    /**Whether implementation supports dynamic registration. If this is set to `true`
7741the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7742return value for the corresponding server capability as well.*/
7743    #[serde(rename = "dynamicRegistration")]
7744    #[serde(default)]
7745    pub dynamic_registration: Option<bool>,
7746}
7747/**Client capabilities specific to the moniker request.
7748
7749@since 3.16.0*/
7750#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7751#[serde(rename_all = "camelCase")]
7752pub struct MonikerClientCapabilities {
7753    /**Whether moniker supports dynamic registration. If this is set to `true`
7754the client supports the new `MonikerRegistrationOptions` return value
7755for the corresponding server capability as well.*/
7756    #[serde(rename = "dynamicRegistration")]
7757    #[serde(default)]
7758    pub dynamic_registration: Option<bool>,
7759}
7760///@since 3.17.0
7761#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7762#[serde(rename_all = "camelCase")]
7763pub struct TypeHierarchyClientCapabilities {
7764    /**Whether implementation supports dynamic registration. If this is set to `true`
7765the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7766return value for the corresponding server capability as well.*/
7767    #[serde(rename = "dynamicRegistration")]
7768    #[serde(default)]
7769    pub dynamic_registration: Option<bool>,
7770}
7771/**Client capabilities specific to inline values.
7772
7773@since 3.17.0*/
7774#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7775#[serde(rename_all = "camelCase")]
7776pub struct InlineValueClientCapabilities {
7777    ///Whether implementation supports dynamic registration for inline value providers.
7778    #[serde(rename = "dynamicRegistration")]
7779    #[serde(default)]
7780    pub dynamic_registration: Option<bool>,
7781}
7782/**Inlay hint client capabilities.
7783
7784@since 3.17.0*/
7785#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7786#[serde(rename_all = "camelCase")]
7787pub struct InlayHintClientCapabilities {
7788    ///Whether inlay hints support dynamic registration.
7789    #[serde(rename = "dynamicRegistration")]
7790    #[serde(default)]
7791    pub dynamic_registration: Option<bool>,
7792    /**Indicates which properties a client can resolve lazily on an inlay
7793hint.*/
7794    #[serde(rename = "resolveSupport")]
7795    #[serde(default)]
7796    pub resolve_support: Option<ClientInlayHintResolveOptions>,
7797}
7798/**Client capabilities specific to diagnostic pull requests.
7799
7800@since 3.17.0*/
7801#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7802#[serde(rename_all = "camelCase")]
7803pub struct DiagnosticClientCapabilities {
7804    #[serde(flatten)]
7805    pub diagnostics_capabilities_base: DiagnosticsCapabilities,
7806    /**Whether implementation supports dynamic registration. If this is set to `true`
7807the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7808return value for the corresponding server capability as well.*/
7809    #[serde(rename = "dynamicRegistration")]
7810    #[serde(default)]
7811    pub dynamic_registration: Option<bool>,
7812    ///Whether the clients supports related documents for document diagnostic pulls.
7813    #[serde(rename = "relatedDocumentSupport")]
7814    #[serde(default)]
7815    pub related_document_support: Option<bool>,
7816    /**Whether the client supports `MarkupContent` in diagnostic messages.
7817
7818@since 3.18.0*/
7819    #[serde(rename = "markupMessageSupport")]
7820    #[serde(default)]
7821    pub markup_message_support: Option<bool>,
7822}
7823/**Client capabilities specific to inline completions.
7824
7825@since 3.18.0*/
7826#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7827#[serde(rename_all = "camelCase")]
7828pub struct InlineCompletionClientCapabilities {
7829    ///Whether implementation supports dynamic registration for inline completion providers.
7830    #[serde(rename = "dynamicRegistration")]
7831    #[serde(default)]
7832    pub dynamic_registration: Option<bool>,
7833}
7834/**Notebook specific client capabilities.
7835
7836@since 3.17.0*/
7837#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7838#[serde(rename_all = "camelCase")]
7839pub struct NotebookDocumentSyncClientCapabilities {
7840    /**Whether implementation supports dynamic registration. If this is
7841set to `true` the client supports the new
7842`(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
7843return value for the corresponding server capability as well.*/
7844    #[serde(rename = "dynamicRegistration")]
7845    #[serde(default)]
7846    pub dynamic_registration: Option<bool>,
7847    ///The client supports sending execution summary data per cell.
7848    #[serde(rename = "executionSummarySupport")]
7849    #[serde(default)]
7850    pub execution_summary_support: Option<bool>,
7851}
7852///Show message request client capabilities
7853#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7854#[serde(rename_all = "camelCase")]
7855pub struct ShowMessageRequestClientCapabilities {
7856    ///Capabilities specific to the `MessageActionItem` type.
7857    #[serde(rename = "messageActionItem")]
7858    #[serde(default)]
7859    pub message_action_item: Option<ClientShowMessageActionItemOptions>,
7860}
7861/**Client capabilities for the showDocument request.
7862
7863@since 3.16.0*/
7864#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7865#[serde(rename_all = "camelCase")]
7866pub struct ShowDocumentClientCapabilities {
7867    /**The client has support for the showDocument
7868request.*/
7869    pub support: bool,
7870}
7871///@since 3.18.0
7872#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7873#[serde(rename_all = "camelCase")]
7874pub struct StaleRequestSupportOptions {
7875    ///The client will actively cancel the request.
7876    pub cancel: bool,
7877    /**The list of requests for which the client
7878will retry the request if it receives a
7879response with error code `ContentModified`*/
7880    #[serde(rename = "retryOnContentModified")]
7881    pub retry_on_content_modified: Vec<String>,
7882}
7883/**Client capabilities specific to regular expressions.
7884
7885@since 3.16.0*/
7886#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7887#[serde(rename_all = "camelCase")]
7888pub struct RegularExpressionsClientCapabilities {
7889    ///The engine's name.
7890    pub engine: RegularExpressionEngineKind,
7891    ///The engine's version.
7892    #[serde(default)]
7893    pub version: Option<String>,
7894}
7895/**Client capabilities specific to the used markdown parser.
7896
7897@since 3.16.0*/
7898#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7899#[serde(rename_all = "camelCase")]
7900pub struct MarkdownClientCapabilities {
7901    ///The name of the parser.
7902    pub parser: String,
7903    ///The version of the parser.
7904    #[serde(default)]
7905    pub version: Option<String>,
7906    /**A list of HTML tags that the client allows / supports in
7907Markdown.
7908
7909@since 3.17.0*/
7910    #[serde(rename = "allowedTags")]
7911    #[serde(default)]
7912    pub allowed_tags: Option<Vec<String>>,
7913}
7914///@since 3.18.0
7915#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7916#[serde(rename_all = "camelCase")]
7917pub struct ChangeAnnotationsSupportOptions {
7918    /**Whether the client groups edits with equal labels into tree nodes,
7919for instance all edits labelled with "Changes in Strings" would
7920be a tree node.*/
7921    #[serde(rename = "groupsOnLabel")]
7922    #[serde(default)]
7923    pub groups_on_label: Option<bool>,
7924}
7925///@since 3.18.0
7926#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7927#[serde(rename_all = "camelCase")]
7928pub struct ClientSymbolKindOptions {
7929    /**The symbol kind values the client supports. When this
7930property exists the client also guarantees that it will
7931handle values outside its set gracefully and falls back
7932to a default value when unknown.
7933
7934If this property is not present the client only supports
7935the symbol kinds from `File` to `Array` as defined in
7936the initial version of the protocol.*/
7937    #[serde(rename = "valueSet")]
7938    #[serde(default)]
7939    pub value_set: Option<Vec<SymbolKind>>,
7940}
7941///@since 3.18.0
7942#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7943#[serde(rename_all = "camelCase")]
7944pub struct ClientSymbolTagOptions {
7945    ///The tags supported by the client.
7946    #[serde(rename = "valueSet")]
7947    pub value_set: Vec<SymbolTag>,
7948}
7949///@since 3.18.0
7950#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7951#[serde(rename_all = "camelCase")]
7952pub struct ClientSymbolResolveOptions {
7953    /**The properties that a client can resolve lazily. Usually
7954`location.range`*/
7955    pub properties: Vec<String>,
7956}
7957///@since 3.18.0
7958#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7959#[serde(rename_all = "camelCase")]
7960pub struct ClientCompletionItemOptions {
7961    /**Client supports snippets as insert text.
7962
7963A snippet can define tab stops and placeholders with `$1`, `$2`
7964and `${3:foo}`. `$0` defines the final tab stop, it defaults to
7965the end of the snippet. Placeholders with equal identifiers are linked,
7966that is typing in one will update others too.*/
7967    #[serde(rename = "snippetSupport")]
7968    #[serde(default)]
7969    pub snippet_support: Option<bool>,
7970    ///Client supports commit characters on a completion item.
7971    #[serde(rename = "commitCharactersSupport")]
7972    #[serde(default)]
7973    pub commit_characters_support: Option<bool>,
7974    /**Client supports the following content formats for the documentation
7975property. The order describes the preferred format of the client.*/
7976    #[serde(rename = "documentationFormat")]
7977    #[serde(default)]
7978    pub documentation_format: Option<Vec<MarkupKind>>,
7979    ///Client supports the deprecated property on a completion item.
7980    #[serde(rename = "deprecatedSupport")]
7981    #[serde(default)]
7982    pub deprecated_support: Option<bool>,
7983    ///Client supports the preselect property on a completion item.
7984    #[serde(rename = "preselectSupport")]
7985    #[serde(default)]
7986    pub preselect_support: Option<bool>,
7987    /**Client supports the tag property on a completion item. Clients supporting
7988tags have to handle unknown tags gracefully. Clients especially need to
7989preserve unknown tags when sending a completion item back to the server in
7990a resolve call.
7991
7992@since 3.15.0*/
7993    #[serde(rename = "tagSupport")]
7994    #[serde(default)]
7995    pub tag_support: Option<CompletionItemTagOptions>,
7996    /**Client support insert replace edit to control different behavior if a
7997completion item is inserted in the text or should replace text.
7998
7999@since 3.16.0*/
8000    #[serde(rename = "insertReplaceSupport")]
8001    #[serde(default)]
8002    pub insert_replace_support: Option<bool>,
8003    /**Indicates which properties a client can resolve lazily on a completion
8004item. Before version 3.16.0 only the predefined properties `documentation`
8005and `details` could be resolved lazily.
8006
8007@since 3.16.0*/
8008    #[serde(rename = "resolveSupport")]
8009    #[serde(default)]
8010    pub resolve_support: Option<ClientCompletionItemResolveOptions>,
8011    /**The client supports the `insertTextMode` property on
8012a completion item to override the whitespace handling mode
8013as defined by the client (see `insertTextMode`).
8014
8015@since 3.16.0*/
8016    #[serde(rename = "insertTextModeSupport")]
8017    #[serde(default)]
8018    pub insert_text_mode_support: Option<ClientCompletionItemInsertTextModeOptions>,
8019    /**The client has support for completion item label
8020details (see also `CompletionItemLabelDetails`).
8021
8022@since 3.17.0*/
8023    #[serde(rename = "labelDetailsSupport")]
8024    #[serde(default)]
8025    pub label_details_support: Option<bool>,
8026}
8027///@since 3.18.0
8028#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8029#[serde(rename_all = "camelCase")]
8030pub struct ClientCompletionItemOptionsKind {
8031    /**The completion item kind values the client supports. When this
8032property exists the client also guarantees that it will
8033handle values outside its set gracefully and falls back
8034to a default value when unknown.
8035
8036If this property is not present the client only supports
8037the completion items kinds from `Text` to `Reference` as defined in
8038the initial version of the protocol.*/
8039    #[serde(rename = "valueSet")]
8040    #[serde(default)]
8041    pub value_set: Option<Vec<CompletionItemKind>>,
8042}
8043/**The client supports the following `CompletionList` specific
8044capabilities.
8045
8046@since 3.17.0*/
8047#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8048#[serde(rename_all = "camelCase")]
8049pub struct CompletionListCapabilities {
8050    /**The client supports the following itemDefaults on
8051a completion list.
8052
8053The value lists the supported property names of the
8054`CompletionList.itemDefaults` object. If omitted
8055no properties are supported.
8056
8057@since 3.17.0*/
8058    #[serde(rename = "itemDefaults")]
8059    #[serde(default)]
8060    pub item_defaults: Option<Vec<String>>,
8061    /**Specifies whether the client supports `CompletionList.applyKind` to
8062indicate how supported values from `completionList.itemDefaults`
8063and `completion` will be combined.
8064
8065If a client supports `applyKind` it must support it for all fields
8066that it supports that are listed in `CompletionList.applyKind`. This
8067means when clients add support for new/future fields in completion
8068items the MUST also support merge for them if those fields are
8069defined in `CompletionList.applyKind`.
8070
8071@since 3.18.0*/
8072    #[serde(rename = "applyKindSupport")]
8073    #[serde(default)]
8074    pub apply_kind_support: Option<bool>,
8075}
8076///@since 3.18.0
8077#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8078#[serde(rename_all = "camelCase")]
8079pub struct ClientSignatureInformationOptions {
8080    /**Client supports the following content formats for the documentation
8081property. The order describes the preferred format of the client.*/
8082    #[serde(rename = "documentationFormat")]
8083    #[serde(default)]
8084    pub documentation_format: Option<Vec<MarkupKind>>,
8085    ///Client capabilities specific to parameter information.
8086    #[serde(rename = "parameterInformation")]
8087    #[serde(default)]
8088    pub parameter_information: Option<ClientSignatureParameterInformationOptions>,
8089    /**The client supports the `activeParameter` property on `SignatureInformation`
8090literal.
8091
8092@since 3.16.0*/
8093    #[serde(rename = "activeParameterSupport")]
8094    #[serde(default)]
8095    pub active_parameter_support: Option<bool>,
8096    /**The client supports the `activeParameter` property on
8097`SignatureHelp`/`SignatureInformation` being set to `null` to
8098indicate that no parameter should be active.
8099
8100@since 3.18.0*/
8101    #[serde(rename = "noActiveParameterSupport")]
8102    #[serde(default)]
8103    pub no_active_parameter_support: Option<bool>,
8104}
8105///@since 3.18.0
8106#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8107#[serde(rename_all = "camelCase")]
8108pub struct ClientCodeActionLiteralOptions {
8109    /**The code action kind is support with the following value
8110set.*/
8111    #[serde(rename = "codeActionKind")]
8112    pub code_action_kind: ClientCodeActionKindOptions,
8113}
8114///@since 3.18.0
8115#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8116#[serde(rename_all = "camelCase")]
8117pub struct ClientCodeActionResolveOptions {
8118    ///The properties that a client can resolve lazily.
8119    pub properties: Vec<String>,
8120}
8121///@since 3.18.0 - proposed
8122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8123#[serde(rename_all = "camelCase")]
8124pub struct CodeActionTagOptions {
8125    ///The tags supported by the client.
8126    #[serde(rename = "valueSet")]
8127    pub value_set: Vec<CodeActionTag>,
8128}
8129///@since 3.18.0
8130#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8131#[serde(rename_all = "camelCase")]
8132pub struct ClientCodeLensResolveOptions {
8133    ///The properties that a client can resolve lazily.
8134    pub properties: Vec<String>,
8135}
8136///@since 3.18.0
8137#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8138#[serde(rename_all = "camelCase")]
8139pub struct ClientFoldingRangeKindOptions {
8140    /**The folding range kind values the client supports. When this
8141property exists the client also guarantees that it will
8142handle values outside its set gracefully and falls back
8143to a default value when unknown.*/
8144    #[serde(rename = "valueSet")]
8145    #[serde(default)]
8146    pub value_set: Option<Vec<FoldingRangeKind>>,
8147}
8148///@since 3.18.0
8149#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8150#[serde(rename_all = "camelCase")]
8151pub struct ClientFoldingRangeOptions {
8152    /**If set, the client signals that it supports setting collapsedText on
8153folding ranges to display custom labels instead of the default text.
8154
8155@since 3.17.0*/
8156    #[serde(rename = "collapsedText")]
8157    #[serde(default)]
8158    pub collapsed_text: Option<bool>,
8159}
8160///General diagnostics capabilities for pull and push model.
8161#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8162#[serde(rename_all = "camelCase")]
8163pub struct DiagnosticsCapabilities {
8164    ///Whether the clients accepts diagnostics with related information.
8165    #[serde(rename = "relatedInformation")]
8166    #[serde(default)]
8167    pub related_information: Option<bool>,
8168    /**Client supports the tag property to provide meta data about a diagnostic.
8169Clients supporting tags have to handle unknown tags gracefully.
8170
8171@since 3.15.0*/
8172    #[serde(rename = "tagSupport")]
8173    #[serde(default)]
8174    pub tag_support: Option<ClientDiagnosticsTagOptions>,
8175    /**Client supports a codeDescription property
8176
8177@since 3.16.0*/
8178    #[serde(rename = "codeDescriptionSupport")]
8179    #[serde(default)]
8180    pub code_description_support: Option<bool>,
8181    /**Whether code action supports the `data` property which is
8182preserved between a `textDocument/publishDiagnostics` and
8183`textDocument/codeAction` request.
8184
8185@since 3.16.0*/
8186    #[serde(rename = "dataSupport")]
8187    #[serde(default)]
8188    pub data_support: Option<bool>,
8189}
8190///@since 3.18.0
8191#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8192#[serde(rename_all = "camelCase")]
8193pub struct ClientSemanticTokensRequestOptions {
8194    /**The client will send the `textDocument/semanticTokens/range` request if
8195the server provides a corresponding handler.*/
8196    #[serde(default)]
8197    pub range: Option<BooleanOrLiteral57f9bf6390bb37d9>,
8198    /**The client will send the `textDocument/semanticTokens/full` request if
8199the server provides a corresponding handler.*/
8200    #[serde(default)]
8201    pub full: Option<BooleanOrClientSemanticTokensRequestFullDelta>,
8202}
8203///@since 3.18.0
8204#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8205#[serde(rename_all = "camelCase")]
8206pub struct ClientInlayHintResolveOptions {
8207    ///The properties that a client can resolve lazily.
8208    pub properties: Vec<String>,
8209}
8210///@since 3.18.0
8211#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8212#[serde(rename_all = "camelCase")]
8213pub struct ClientShowMessageActionItemOptions {
8214    /**Whether the client supports additional attributes which
8215are preserved and send back to the server in the
8216request's response.*/
8217    #[serde(rename = "additionalPropertiesSupport")]
8218    #[serde(default)]
8219    pub additional_properties_support: Option<bool>,
8220}
8221///@since 3.18.0
8222#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8223#[serde(rename_all = "camelCase")]
8224pub struct CompletionItemTagOptions {
8225    ///The tags supported by the client.
8226    #[serde(rename = "valueSet")]
8227    pub value_set: Vec<CompletionItemTag>,
8228}
8229///@since 3.18.0
8230#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8231#[serde(rename_all = "camelCase")]
8232pub struct ClientCompletionItemResolveOptions {
8233    ///The properties that a client can resolve lazily.
8234    pub properties: Vec<String>,
8235}
8236///@since 3.18.0
8237#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8238#[serde(rename_all = "camelCase")]
8239pub struct ClientCompletionItemInsertTextModeOptions {
8240    #[serde(rename = "valueSet")]
8241    pub value_set: Vec<InsertTextMode>,
8242}
8243///@since 3.18.0
8244#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8245#[serde(rename_all = "camelCase")]
8246pub struct ClientSignatureParameterInformationOptions {
8247    /**The client supports processing label offsets instead of a
8248simple label string.
8249
8250@since 3.14.0*/
8251    #[serde(rename = "labelOffsetSupport")]
8252    #[serde(default)]
8253    pub label_offset_support: Option<bool>,
8254}
8255///@since 3.18.0
8256#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8257#[serde(rename_all = "camelCase")]
8258pub struct ClientCodeActionKindOptions {
8259    /**The code action kind values the client supports. When this
8260property exists the client also guarantees that it will
8261handle values outside its set gracefully and falls back
8262to a default value when unknown.*/
8263    #[serde(rename = "valueSet")]
8264    pub value_set: Vec<CodeActionKind>,
8265}
8266///@since 3.18.0
8267#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8268#[serde(rename_all = "camelCase")]
8269pub struct ClientDiagnosticsTagOptions {
8270    ///The tags supported by the client.
8271    #[serde(rename = "valueSet")]
8272    pub value_set: Vec<DiagnosticTag>,
8273}
8274///@since 3.18.0
8275#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8276#[serde(rename_all = "camelCase")]
8277pub struct ClientSemanticTokensRequestFullDelta {
8278    /**The client will send the `textDocument/semanticTokens/full/delta` request if
8279the server provides a corresponding handler.*/
8280    #[serde(default)]
8281    pub delta: Option<bool>,
8282}
8283#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8284#[serde(untagged)]
8285pub enum AnnotatedTextEditOrSnippetTextEditOrTextEdit {
8286    AnnotatedTextEdit(AnnotatedTextEdit),
8287    SnippetTextEdit(SnippetTextEdit),
8288    TextEdit(TextEdit),
8289}
8290#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8291#[serde(untagged)]
8292pub enum BooleanOrCallHierarchyOptionsOrCallHierarchyRegistrationOptions {
8293    CallHierarchyRegistrationOptions(CallHierarchyRegistrationOptions),
8294    CallHierarchyOptions(CallHierarchyOptions),
8295    Boolean(bool),
8296}
8297#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8298#[serde(untagged)]
8299pub enum BooleanOrClientSemanticTokensRequestFullDelta {
8300    ClientSemanticTokensRequestFullDelta(ClientSemanticTokensRequestFullDelta),
8301    Boolean(bool),
8302}
8303#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8304#[serde(untagged)]
8305pub enum BooleanOrCodeActionOptions {
8306    CodeActionOptions(CodeActionOptions),
8307    Boolean(bool),
8308}
8309#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8310#[serde(untagged)]
8311pub enum BooleanOrDecimalOrIntegerOrLSPArrayOrLSPObjectOrStringOrUinteger {
8312    LSPArray(LSPArray),
8313    LSPObject(LSPObject),
8314    Boolean(bool),
8315    Decimal(Decimal),
8316    Integer(Integer),
8317    String(String),
8318    Uinteger(Uinteger),
8319}
8320#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8321#[serde(untagged)]
8322pub enum BooleanOrDeclarationOptionsOrDeclarationRegistrationOptions {
8323    DeclarationRegistrationOptions(DeclarationRegistrationOptions),
8324    DeclarationOptions(DeclarationOptions),
8325    Boolean(bool),
8326}
8327#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8328#[serde(untagged)]
8329pub enum BooleanOrDefinitionOptions {
8330    DefinitionOptions(DefinitionOptions),
8331    Boolean(bool),
8332}
8333#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8334#[serde(untagged)]
8335pub enum BooleanOrDocumentColorOptionsOrDocumentColorRegistrationOptions {
8336    DocumentColorRegistrationOptions(DocumentColorRegistrationOptions),
8337    DocumentColorOptions(DocumentColorOptions),
8338    Boolean(bool),
8339}
8340#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8341#[serde(untagged)]
8342pub enum BooleanOrDocumentFormattingOptions {
8343    DocumentFormattingOptions(DocumentFormattingOptions),
8344    Boolean(bool),
8345}
8346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8347#[serde(untagged)]
8348pub enum BooleanOrDocumentHighlightOptions {
8349    DocumentHighlightOptions(DocumentHighlightOptions),
8350    Boolean(bool),
8351}
8352#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8353#[serde(untagged)]
8354pub enum BooleanOrDocumentRangeFormattingOptions {
8355    DocumentRangeFormattingOptions(DocumentRangeFormattingOptions),
8356    Boolean(bool),
8357}
8358#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8359#[serde(untagged)]
8360pub enum BooleanOrDocumentSymbolOptions {
8361    DocumentSymbolOptions(DocumentSymbolOptions),
8362    Boolean(bool),
8363}
8364#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8365#[serde(untagged)]
8366pub enum BooleanOrFoldingRangeOptionsOrFoldingRangeRegistrationOptions {
8367    FoldingRangeRegistrationOptions(FoldingRangeRegistrationOptions),
8368    FoldingRangeOptions(FoldingRangeOptions),
8369    Boolean(bool),
8370}
8371#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8372#[serde(untagged)]
8373pub enum BooleanOrHoverOptions {
8374    HoverOptions(HoverOptions),
8375    Boolean(bool),
8376}
8377#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8378#[serde(untagged)]
8379pub enum BooleanOrImplementationOptionsOrImplementationRegistrationOptions {
8380    ImplementationRegistrationOptions(ImplementationRegistrationOptions),
8381    ImplementationOptions(ImplementationOptions),
8382    Boolean(bool),
8383}
8384#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8385#[serde(untagged)]
8386pub enum BooleanOrInlayHintOptionsOrInlayHintRegistrationOptions {
8387    InlayHintRegistrationOptions(InlayHintRegistrationOptions),
8388    InlayHintOptions(InlayHintOptions),
8389    Boolean(bool),
8390}
8391#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8392#[serde(untagged)]
8393pub enum BooleanOrInlineCompletionOptions {
8394    InlineCompletionOptions(InlineCompletionOptions),
8395    Boolean(bool),
8396}
8397#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8398#[serde(untagged)]
8399pub enum BooleanOrInlineValueOptionsOrInlineValueRegistrationOptions {
8400    InlineValueRegistrationOptions(InlineValueRegistrationOptions),
8401    InlineValueOptions(InlineValueOptions),
8402    Boolean(bool),
8403}
8404#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8405#[serde(untagged)]
8406pub enum BooleanOrLinkedEditingRangeOptionsOrLinkedEditingRangeRegistrationOptions {
8407    LinkedEditingRangeRegistrationOptions(LinkedEditingRangeRegistrationOptions),
8408    LinkedEditingRangeOptions(LinkedEditingRangeOptions),
8409    Boolean(bool),
8410}
8411#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8412#[serde(untagged)]
8413pub enum BooleanOrLiteral57f9bf6390bb37d9 {
8414    Literal57f9bf6390bb37d9(Literal57f9bf6390bb37d9),
8415    Boolean(bool),
8416}
8417#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8418#[serde(untagged)]
8419pub enum BooleanOrMonikerOptionsOrMonikerRegistrationOptions {
8420    MonikerRegistrationOptions(MonikerRegistrationOptions),
8421    MonikerOptions(MonikerOptions),
8422    Boolean(bool),
8423}
8424#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8425#[serde(untagged)]
8426pub enum BooleanOrReferenceOptions {
8427    ReferenceOptions(ReferenceOptions),
8428    Boolean(bool),
8429}
8430#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8431#[serde(untagged)]
8432pub enum BooleanOrRenameOptions {
8433    RenameOptions(RenameOptions),
8434    Boolean(bool),
8435}
8436#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8437#[serde(untagged)]
8438pub enum BooleanOrSaveOptions {
8439    SaveOptions(SaveOptions),
8440    Boolean(bool),
8441}
8442#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8443#[serde(untagged)]
8444pub enum BooleanOrSelectionRangeOptionsOrSelectionRangeRegistrationOptions {
8445    SelectionRangeRegistrationOptions(SelectionRangeRegistrationOptions),
8446    SelectionRangeOptions(SelectionRangeOptions),
8447    Boolean(bool),
8448}
8449#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8450#[serde(untagged)]
8451pub enum BooleanOrSemanticTokensFullDelta {
8452    SemanticTokensFullDelta(SemanticTokensFullDelta),
8453    Boolean(bool),
8454}
8455#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8456#[serde(untagged)]
8457pub enum BooleanOrString {
8458    Boolean(bool),
8459    String(String),
8460}
8461#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8462#[serde(untagged)]
8463pub enum BooleanOrTypeDefinitionOptionsOrTypeDefinitionRegistrationOptions {
8464    TypeDefinitionRegistrationOptions(TypeDefinitionRegistrationOptions),
8465    TypeDefinitionOptions(TypeDefinitionOptions),
8466    Boolean(bool),
8467}
8468#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8469#[serde(untagged)]
8470pub enum BooleanOrTypeHierarchyOptionsOrTypeHierarchyRegistrationOptions {
8471    TypeHierarchyRegistrationOptions(TypeHierarchyRegistrationOptions),
8472    TypeHierarchyOptions(TypeHierarchyOptions),
8473    Boolean(bool),
8474}
8475#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8476#[serde(untagged)]
8477pub enum BooleanOrWorkspaceSymbolOptions {
8478    WorkspaceSymbolOptions(WorkspaceSymbolOptions),
8479    Boolean(bool),
8480}
8481#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8482#[serde(untagged)]
8483pub enum CodeActionOrCommand {
8484    CodeAction(CodeAction),
8485    Command(Command),
8486}
8487#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8488#[serde(untagged)]
8489pub enum CompletionItemArrayOrCompletionList {
8490    CompletionItemArray(Vec<CompletionItem>),
8491    CompletionList(CompletionList),
8492}
8493#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8494#[serde(untagged)]
8495pub enum CreateFileOrDeleteFileOrRenameFileOrTextDocumentEdit {
8496    RenameFile(RenameFile),
8497    CreateFile(CreateFile),
8498    DeleteFile(DeleteFile),
8499    TextDocumentEdit(TextDocumentEdit),
8500}
8501#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8502#[serde(untagged)]
8503pub enum DeclarationOrDeclarationLinkArray {
8504    Declaration(Declaration),
8505    DeclarationLinkArray(Vec<DeclarationLink>),
8506}
8507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8508#[serde(untagged)]
8509pub enum DefinitionOrDefinitionLinkArray {
8510    Definition(Definition),
8511    DefinitionLinkArray(Vec<DefinitionLink>),
8512}
8513#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8514#[serde(untagged)]
8515pub enum DiagnosticOptionsOrDiagnosticRegistrationOptions {
8516    DiagnosticRegistrationOptions(DiagnosticRegistrationOptions),
8517    DiagnosticOptions(DiagnosticOptions),
8518}
8519#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8520#[serde(untagged)]
8521pub enum DocumentSymbolArrayOrSymbolInformationArray {
8522    DocumentSymbolArray(Vec<DocumentSymbol>),
8523    SymbolInformationArray(Vec<SymbolInformation>),
8524}
8525#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8526#[serde(untagged)]
8527pub enum EditRangeWithInsertReplaceOrRange {
8528    EditRangeWithInsertReplace(EditRangeWithInsertReplace),
8529    Range(Range),
8530}
8531#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8532#[serde(untagged)]
8533pub enum FullDocumentDiagnosticReportOrUnchangedDocumentDiagnosticReport {
8534    FullDocumentDiagnosticReport(FullDocumentDiagnosticReport),
8535    UnchangedDocumentDiagnosticReport(UnchangedDocumentDiagnosticReport),
8536}
8537#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8538#[serde(untagged)]
8539pub enum InlayHintLabelPartArrayOrString {
8540    InlayHintLabelPartArray(Vec<InlayHintLabelPart>),
8541    String(String),
8542}
8543#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8544#[serde(untagged)]
8545pub enum InlineCompletionItemArrayOrInlineCompletionList {
8546    InlineCompletionItemArray(Vec<InlineCompletionItem>),
8547    InlineCompletionList(InlineCompletionList),
8548}
8549#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8550#[serde(untagged)]
8551pub enum InlineValueEvaluatableExpressionOrInlineValueTextOrInlineValueVariableLookup {
8552    InlineValueVariableLookup(InlineValueVariableLookup),
8553    InlineValueEvaluatableExpression(InlineValueEvaluatableExpression),
8554    InlineValueText(InlineValueText),
8555}
8556#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8557#[serde(untagged)]
8558pub enum InsertReplaceEditOrTextEdit {
8559    InsertReplaceEdit(InsertReplaceEdit),
8560    TextEdit(TextEdit),
8561}
8562#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8563#[serde(untagged)]
8564pub enum IntegerOrString {
8565    Integer(Integer),
8566    String(String),
8567}
8568#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8569#[serde(rename_all = "camelCase")]
8570pub struct Literal57f9bf6390bb37d9 {}
8571#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8572#[serde(untagged)]
8573pub enum LocationOrLocationArray {
8574    LocationArray(Vec<Location>),
8575    Location(Location),
8576}
8577#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8578#[serde(untagged)]
8579pub enum LocationOrLocationUriOnly {
8580    Location(Location),
8581    LocationUriOnly(LocationUriOnly),
8582}
8583#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8584#[serde(untagged)]
8585pub enum MarkedStringOrMarkedStringArrayOrMarkupContent {
8586    MarkedStringArray(Vec<MarkedString>),
8587    MarkedString(MarkedString),
8588    MarkupContent(MarkupContent),
8589}
8590#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8591#[serde(untagged)]
8592pub enum MarkedStringWithLanguageOrString {
8593    MarkedStringWithLanguage(MarkedStringWithLanguage),
8594    String(String),
8595}
8596#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8597#[serde(untagged)]
8598pub enum MarkupContentOrString {
8599    MarkupContent(MarkupContent),
8600    String(String),
8601}
8602#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8603#[serde(untagged)]
8604pub enum NotebookCellTextDocumentFilterOrTextDocumentFilter {
8605    TextDocumentFilter(TextDocumentFilter),
8606    NotebookCellTextDocumentFilter(NotebookCellTextDocumentFilter),
8607}
8608#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8609#[serde(untagged)]
8610pub enum NotebookDocumentFilterNotebookTypeOrNotebookDocumentFilterPatternOrNotebookDocumentFilterScheme {
8611    NotebookDocumentFilterNotebookType(NotebookDocumentFilterNotebookType),
8612    NotebookDocumentFilterPattern(NotebookDocumentFilterPattern),
8613    NotebookDocumentFilterScheme(NotebookDocumentFilterScheme),
8614}
8615#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8616#[serde(untagged)]
8617pub enum NotebookDocumentFilterOrString {
8618    NotebookDocumentFilter(NotebookDocumentFilter),
8619    String(String),
8620}
8621#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8622#[serde(untagged)]
8623pub enum NotebookDocumentFilterWithCellsOrNotebookDocumentFilterWithNotebook {
8624    NotebookDocumentFilterWithCells(NotebookDocumentFilterWithCells),
8625    NotebookDocumentFilterWithNotebook(NotebookDocumentFilterWithNotebook),
8626}
8627#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8628#[serde(untagged)]
8629pub enum NotebookDocumentSyncOptionsOrNotebookDocumentSyncRegistrationOptions {
8630    NotebookDocumentSyncRegistrationOptions(NotebookDocumentSyncRegistrationOptions),
8631    NotebookDocumentSyncOptions(NotebookDocumentSyncOptions),
8632}
8633#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8634#[serde(untagged)]
8635pub enum PatternOrRelativePattern {
8636    RelativePattern(RelativePattern),
8637    Pattern(Pattern),
8638}
8639#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8640#[serde(untagged)]
8641pub enum PrepareRenameDefaultBehaviorOrPrepareRenamePlaceholderOrRange {
8642    PrepareRenamePlaceholder(PrepareRenamePlaceholder),
8643    Range(Range),
8644    PrepareRenameDefaultBehavior(PrepareRenameDefaultBehavior),
8645}
8646#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8647#[serde(untagged)]
8648pub enum RelatedFullDocumentDiagnosticReportOrRelatedUnchangedDocumentDiagnosticReport {
8649    RelatedFullDocumentDiagnosticReport(RelatedFullDocumentDiagnosticReport),
8650    RelatedUnchangedDocumentDiagnosticReport(RelatedUnchangedDocumentDiagnosticReport),
8651}
8652#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8653#[serde(untagged)]
8654pub enum SemanticTokensOptionsOrSemanticTokensRegistrationOptions {
8655    SemanticTokensRegistrationOptions(SemanticTokensRegistrationOptions),
8656    SemanticTokensOptions(SemanticTokensOptions),
8657}
8658#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8659#[serde(untagged)]
8660pub enum SemanticTokensOrSemanticTokensDelta {
8661    SemanticTokens(SemanticTokens),
8662    SemanticTokensDelta(SemanticTokensDelta),
8663}
8664#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8665#[serde(untagged)]
8666pub enum StringOrStringArray {
8667    StringArray(Vec<String>),
8668    String(String),
8669}
8670#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8671#[serde(untagged)]
8672pub enum StringOrStringValue {
8673    StringValue(StringValue),
8674    String(String),
8675}
8676#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8677#[serde(untagged)]
8678pub enum StringOrTupleOfUintegerAndUinteger {
8679    TupleOfUintegerAndUinteger((Uinteger, Uinteger)),
8680    String(String),
8681}
8682#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8683#[serde(untagged)]
8684pub enum SymbolInformationArrayOrWorkspaceSymbolArray {
8685    SymbolInformationArray(Vec<SymbolInformation>),
8686    WorkspaceSymbolArray(Vec<WorkspaceSymbol>),
8687}
8688#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8689#[serde(untagged)]
8690pub enum TextDocumentContentChangePartialOrTextDocumentContentChangeWholeDocument {
8691    TextDocumentContentChangePartial(TextDocumentContentChangePartial),
8692    TextDocumentContentChangeWholeDocument(TextDocumentContentChangeWholeDocument),
8693}
8694#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8695#[serde(untagged)]
8696pub enum TextDocumentContentOptionsOrTextDocumentContentRegistrationOptions {
8697    TextDocumentContentRegistrationOptions(TextDocumentContentRegistrationOptions),
8698    TextDocumentContentOptions(TextDocumentContentOptions),
8699}
8700#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8701#[serde(untagged)]
8702pub enum TextDocumentFilterLanguageOrTextDocumentFilterPatternOrTextDocumentFilterScheme {
8703    TextDocumentFilterLanguage(TextDocumentFilterLanguage),
8704    TextDocumentFilterPattern(TextDocumentFilterPattern),
8705    TextDocumentFilterScheme(TextDocumentFilterScheme),
8706}
8707#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8708#[serde(untagged)]
8709pub enum TextDocumentSyncKindOrTextDocumentSyncOptions {
8710    TextDocumentSyncOptions(TextDocumentSyncOptions),
8711    TextDocumentSyncKind(TextDocumentSyncKind),
8712}
8713#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8714#[serde(untagged)]
8715pub enum UriOrWorkspaceFolder {
8716    WorkspaceFolder(WorkspaceFolder),
8717    Uri(URI),
8718}
8719#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8720#[serde(untagged)]
8721pub enum WorkspaceFullDocumentDiagnosticReportOrWorkspaceUnchangedDocumentDiagnosticReport {
8722    WorkspaceFullDocumentDiagnosticReport(WorkspaceFullDocumentDiagnosticReport),
8723    WorkspaceUnchangedDocumentDiagnosticReport(
8724        WorkspaceUnchangedDocumentDiagnosticReport,
8725    ),
8726}
8727pub trait LspRequest {
8728    type Params: Serialize + for<'de> Deserialize<'de>;
8729    type Result: Serialize + for<'de> Deserialize<'de>;
8730    const METHOD: &'static str;
8731}
8732pub struct ImplementationRequest;
8733impl LspRequest for ImplementationRequest {
8734    type Params = ImplementationParams;
8735    type Result = Option<DefinitionOrDefinitionLinkArray>;
8736    const METHOD: &'static str = "textDocument/implementation";
8737}
8738pub struct TypeDefinitionRequest;
8739impl LspRequest for TypeDefinitionRequest {
8740    type Params = TypeDefinitionParams;
8741    type Result = Option<DefinitionOrDefinitionLinkArray>;
8742    const METHOD: &'static str = "textDocument/typeDefinition";
8743}
8744pub struct WorkspaceFoldersRequest;
8745impl LspRequest for WorkspaceFoldersRequest {
8746    type Params = ();
8747    type Result = Option<Vec<WorkspaceFolder>>;
8748    const METHOD: &'static str = "workspace/workspaceFolders";
8749}
8750pub struct ConfigurationRequest;
8751impl LspRequest for ConfigurationRequest {
8752    type Params = ConfigurationParams;
8753    type Result = Vec<LSPAny>;
8754    const METHOD: &'static str = "workspace/configuration";
8755}
8756pub struct DocumentColorRequest;
8757impl LspRequest for DocumentColorRequest {
8758    type Params = DocumentColorParams;
8759    type Result = Vec<ColorInformation>;
8760    const METHOD: &'static str = "textDocument/documentColor";
8761}
8762pub struct ColorPresentationRequest;
8763impl LspRequest for ColorPresentationRequest {
8764    type Params = ColorPresentationParams;
8765    type Result = Vec<ColorPresentation>;
8766    const METHOD: &'static str = "textDocument/colorPresentation";
8767}
8768pub struct FoldingRangeRequest;
8769impl LspRequest for FoldingRangeRequest {
8770    type Params = FoldingRangeParams;
8771    type Result = Option<Vec<FoldingRange>>;
8772    const METHOD: &'static str = "textDocument/foldingRange";
8773}
8774pub struct FoldingRangeRefreshRequest;
8775impl LspRequest for FoldingRangeRefreshRequest {
8776    type Params = ();
8777    type Result = ();
8778    const METHOD: &'static str = "workspace/foldingRange/refresh";
8779}
8780pub struct DeclarationRequest;
8781impl LspRequest for DeclarationRequest {
8782    type Params = DeclarationParams;
8783    type Result = Option<DeclarationOrDeclarationLinkArray>;
8784    const METHOD: &'static str = "textDocument/declaration";
8785}
8786pub struct SelectionRangeRequest;
8787impl LspRequest for SelectionRangeRequest {
8788    type Params = SelectionRangeParams;
8789    type Result = Option<Vec<SelectionRange>>;
8790    const METHOD: &'static str = "textDocument/selectionRange";
8791}
8792pub struct WorkDoneProgressCreateRequest;
8793impl LspRequest for WorkDoneProgressCreateRequest {
8794    type Params = WorkDoneProgressCreateParams;
8795    type Result = ();
8796    const METHOD: &'static str = "window/workDoneProgress/create";
8797}
8798pub struct CallHierarchyPrepareRequest;
8799impl LspRequest for CallHierarchyPrepareRequest {
8800    type Params = CallHierarchyPrepareParams;
8801    type Result = Option<Vec<CallHierarchyItem>>;
8802    const METHOD: &'static str = "textDocument/prepareCallHierarchy";
8803}
8804pub struct CallHierarchyIncomingCallsRequest;
8805impl LspRequest for CallHierarchyIncomingCallsRequest {
8806    type Params = CallHierarchyIncomingCallsParams;
8807    type Result = Option<Vec<CallHierarchyIncomingCall>>;
8808    const METHOD: &'static str = "callHierarchy/incomingCalls";
8809}
8810pub struct CallHierarchyOutgoingCallsRequest;
8811impl LspRequest for CallHierarchyOutgoingCallsRequest {
8812    type Params = CallHierarchyOutgoingCallsParams;
8813    type Result = Option<Vec<CallHierarchyOutgoingCall>>;
8814    const METHOD: &'static str = "callHierarchy/outgoingCalls";
8815}
8816pub struct SemanticTokensRequest;
8817impl LspRequest for SemanticTokensRequest {
8818    type Params = SemanticTokensParams;
8819    type Result = Option<SemanticTokens>;
8820    const METHOD: &'static str = "textDocument/semanticTokens/full";
8821}
8822pub struct SemanticTokensDeltaRequest;
8823impl LspRequest for SemanticTokensDeltaRequest {
8824    type Params = SemanticTokensDeltaParams;
8825    type Result = Option<SemanticTokensOrSemanticTokensDelta>;
8826    const METHOD: &'static str = "textDocument/semanticTokens/full/delta";
8827}
8828pub struct SemanticTokensRangeRequest;
8829impl LspRequest for SemanticTokensRangeRequest {
8830    type Params = SemanticTokensRangeParams;
8831    type Result = Option<SemanticTokens>;
8832    const METHOD: &'static str = "textDocument/semanticTokens/range";
8833}
8834pub struct SemanticTokensRefreshRequest;
8835impl LspRequest for SemanticTokensRefreshRequest {
8836    type Params = ();
8837    type Result = ();
8838    const METHOD: &'static str = "workspace/semanticTokens/refresh";
8839}
8840pub struct ShowDocumentRequest;
8841impl LspRequest for ShowDocumentRequest {
8842    type Params = ShowDocumentParams;
8843    type Result = ShowDocumentResult;
8844    const METHOD: &'static str = "window/showDocument";
8845}
8846pub struct LinkedEditingRangeRequest;
8847impl LspRequest for LinkedEditingRangeRequest {
8848    type Params = LinkedEditingRangeParams;
8849    type Result = Option<LinkedEditingRanges>;
8850    const METHOD: &'static str = "textDocument/linkedEditingRange";
8851}
8852pub struct WillCreateFilesRequest;
8853impl LspRequest for WillCreateFilesRequest {
8854    type Params = CreateFilesParams;
8855    type Result = Option<WorkspaceEdit>;
8856    const METHOD: &'static str = "workspace/willCreateFiles";
8857}
8858pub struct WillRenameFilesRequest;
8859impl LspRequest for WillRenameFilesRequest {
8860    type Params = RenameFilesParams;
8861    type Result = Option<WorkspaceEdit>;
8862    const METHOD: &'static str = "workspace/willRenameFiles";
8863}
8864pub struct WillDeleteFilesRequest;
8865impl LspRequest for WillDeleteFilesRequest {
8866    type Params = DeleteFilesParams;
8867    type Result = Option<WorkspaceEdit>;
8868    const METHOD: &'static str = "workspace/willDeleteFiles";
8869}
8870pub struct MonikerRequest;
8871impl LspRequest for MonikerRequest {
8872    type Params = MonikerParams;
8873    type Result = Option<Vec<Moniker>>;
8874    const METHOD: &'static str = "textDocument/moniker";
8875}
8876pub struct TypeHierarchyPrepareRequest;
8877impl LspRequest for TypeHierarchyPrepareRequest {
8878    type Params = TypeHierarchyPrepareParams;
8879    type Result = Option<Vec<TypeHierarchyItem>>;
8880    const METHOD: &'static str = "textDocument/prepareTypeHierarchy";
8881}
8882pub struct TypeHierarchySupertypesRequest;
8883impl LspRequest for TypeHierarchySupertypesRequest {
8884    type Params = TypeHierarchySupertypesParams;
8885    type Result = Option<Vec<TypeHierarchyItem>>;
8886    const METHOD: &'static str = "typeHierarchy/supertypes";
8887}
8888pub struct TypeHierarchySubtypesRequest;
8889impl LspRequest for TypeHierarchySubtypesRequest {
8890    type Params = TypeHierarchySubtypesParams;
8891    type Result = Option<Vec<TypeHierarchyItem>>;
8892    const METHOD: &'static str = "typeHierarchy/subtypes";
8893}
8894pub struct InlineValueRequest;
8895impl LspRequest for InlineValueRequest {
8896    type Params = InlineValueParams;
8897    type Result = Option<Vec<InlineValue>>;
8898    const METHOD: &'static str = "textDocument/inlineValue";
8899}
8900pub struct InlineValueRefreshRequest;
8901impl LspRequest for InlineValueRefreshRequest {
8902    type Params = ();
8903    type Result = ();
8904    const METHOD: &'static str = "workspace/inlineValue/refresh";
8905}
8906pub struct InlayHintRequest;
8907impl LspRequest for InlayHintRequest {
8908    type Params = InlayHintParams;
8909    type Result = Option<Vec<InlayHint>>;
8910    const METHOD: &'static str = "textDocument/inlayHint";
8911}
8912pub struct InlayHintResolveRequest;
8913impl LspRequest for InlayHintResolveRequest {
8914    type Params = InlayHint;
8915    type Result = InlayHint;
8916    const METHOD: &'static str = "inlayHint/resolve";
8917}
8918pub struct InlayHintRefreshRequest;
8919impl LspRequest for InlayHintRefreshRequest {
8920    type Params = ();
8921    type Result = ();
8922    const METHOD: &'static str = "workspace/inlayHint/refresh";
8923}
8924pub struct DocumentDiagnosticRequest;
8925impl LspRequest for DocumentDiagnosticRequest {
8926    type Params = DocumentDiagnosticParams;
8927    type Result = DocumentDiagnosticReport;
8928    const METHOD: &'static str = "textDocument/diagnostic";
8929}
8930pub struct WorkspaceDiagnosticRequest;
8931impl LspRequest for WorkspaceDiagnosticRequest {
8932    type Params = WorkspaceDiagnosticParams;
8933    type Result = WorkspaceDiagnosticReport;
8934    const METHOD: &'static str = "workspace/diagnostic";
8935}
8936pub struct DiagnosticRefreshRequest;
8937impl LspRequest for DiagnosticRefreshRequest {
8938    type Params = ();
8939    type Result = ();
8940    const METHOD: &'static str = "workspace/diagnostic/refresh";
8941}
8942pub struct InlineCompletionRequest;
8943impl LspRequest for InlineCompletionRequest {
8944    type Params = InlineCompletionParams;
8945    type Result = Option<InlineCompletionItemArrayOrInlineCompletionList>;
8946    const METHOD: &'static str = "textDocument/inlineCompletion";
8947}
8948pub struct TextDocumentContentRequest;
8949impl LspRequest for TextDocumentContentRequest {
8950    type Params = TextDocumentContentParams;
8951    type Result = TextDocumentContentResult;
8952    const METHOD: &'static str = "workspace/textDocumentContent";
8953}
8954pub struct TextDocumentContentRefreshRequest;
8955impl LspRequest for TextDocumentContentRefreshRequest {
8956    type Params = TextDocumentContentRefreshParams;
8957    type Result = ();
8958    const METHOD: &'static str = "workspace/textDocumentContent/refresh";
8959}
8960// `Client::send_request` is bound by `lsp_types_max::request::Request`, the LSP
8961// type authority's request trait. This proposed 3.18 request is owned by the
8962// protocol mirror rather than sourced from `lsp_types_max`, so it must satisfy
8963// that bound explicitly to be dispatched through `Client` like the stabilized
8964// requests. Params/Result mirror the `LspRequest` impl above.
8965impl lsp_types_max::request::Request for TextDocumentContentRefreshRequest {
8966    type Params = TextDocumentContentRefreshParams;
8967    type Result = ();
8968    const METHOD: &'static str = "workspace/textDocumentContent/refresh";
8969}
8970pub struct RegistrationRequest;
8971impl LspRequest for RegistrationRequest {
8972    type Params = RegistrationParams;
8973    type Result = ();
8974    const METHOD: &'static str = "client/registerCapability";
8975}
8976pub struct UnregistrationRequest;
8977impl LspRequest for UnregistrationRequest {
8978    type Params = UnregistrationParams;
8979    type Result = ();
8980    const METHOD: &'static str = "client/unregisterCapability";
8981}
8982pub struct InitializeRequest;
8983impl LspRequest for InitializeRequest {
8984    type Params = InitializeParams;
8985    type Result = InitializeResult;
8986    const METHOD: &'static str = "initialize";
8987}
8988pub struct ShutdownRequest;
8989impl LspRequest for ShutdownRequest {
8990    type Params = ();
8991    type Result = ();
8992    const METHOD: &'static str = "shutdown";
8993}
8994pub struct ShowMessageRequest;
8995impl LspRequest for ShowMessageRequest {
8996    type Params = ShowMessageRequestParams;
8997    type Result = Option<MessageActionItem>;
8998    const METHOD: &'static str = "window/showMessageRequest";
8999}
9000pub struct WillSaveTextDocumentWaitUntilRequest;
9001impl LspRequest for WillSaveTextDocumentWaitUntilRequest {
9002    type Params = WillSaveTextDocumentParams;
9003    type Result = Option<Vec<TextEdit>>;
9004    const METHOD: &'static str = "textDocument/willSaveWaitUntil";
9005}
9006pub struct CompletionRequest;
9007impl LspRequest for CompletionRequest {
9008    type Params = CompletionParams;
9009    type Result = Option<CompletionItemArrayOrCompletionList>;
9010    const METHOD: &'static str = "textDocument/completion";
9011}
9012pub struct CompletionResolveRequest;
9013impl LspRequest for CompletionResolveRequest {
9014    type Params = CompletionItem;
9015    type Result = CompletionItem;
9016    const METHOD: &'static str = "completionItem/resolve";
9017}
9018pub struct HoverRequest;
9019impl LspRequest for HoverRequest {
9020    type Params = HoverParams;
9021    type Result = Option<Hover>;
9022    const METHOD: &'static str = "textDocument/hover";
9023}
9024pub struct SignatureHelpRequest;
9025impl LspRequest for SignatureHelpRequest {
9026    type Params = SignatureHelpParams;
9027    type Result = Option<SignatureHelp>;
9028    const METHOD: &'static str = "textDocument/signatureHelp";
9029}
9030pub struct DefinitionRequest;
9031impl LspRequest for DefinitionRequest {
9032    type Params = DefinitionParams;
9033    type Result = Option<DefinitionOrDefinitionLinkArray>;
9034    const METHOD: &'static str = "textDocument/definition";
9035}
9036pub struct ReferencesRequest;
9037impl LspRequest for ReferencesRequest {
9038    type Params = ReferenceParams;
9039    type Result = Option<Vec<Location>>;
9040    const METHOD: &'static str = "textDocument/references";
9041}
9042pub struct DocumentHighlightRequest;
9043impl LspRequest for DocumentHighlightRequest {
9044    type Params = DocumentHighlightParams;
9045    type Result = Option<Vec<DocumentHighlight>>;
9046    const METHOD: &'static str = "textDocument/documentHighlight";
9047}
9048pub struct DocumentSymbolRequest;
9049impl LspRequest for DocumentSymbolRequest {
9050    type Params = DocumentSymbolParams;
9051    type Result = Option<DocumentSymbolArrayOrSymbolInformationArray>;
9052    const METHOD: &'static str = "textDocument/documentSymbol";
9053}
9054pub struct CodeActionRequest;
9055impl LspRequest for CodeActionRequest {
9056    type Params = CodeActionParams;
9057    type Result = Option<Vec<CodeActionOrCommand>>;
9058    const METHOD: &'static str = "textDocument/codeAction";
9059}
9060pub struct CodeActionResolveRequest;
9061impl LspRequest for CodeActionResolveRequest {
9062    type Params = CodeAction;
9063    type Result = CodeAction;
9064    const METHOD: &'static str = "codeAction/resolve";
9065}
9066pub struct WorkspaceSymbolRequest;
9067impl LspRequest for WorkspaceSymbolRequest {
9068    type Params = WorkspaceSymbolParams;
9069    type Result = Option<SymbolInformationArrayOrWorkspaceSymbolArray>;
9070    const METHOD: &'static str = "workspace/symbol";
9071}
9072pub struct WorkspaceSymbolResolveRequest;
9073impl LspRequest for WorkspaceSymbolResolveRequest {
9074    type Params = WorkspaceSymbol;
9075    type Result = WorkspaceSymbol;
9076    const METHOD: &'static str = "workspaceSymbol/resolve";
9077}
9078pub struct CodeLensRequest;
9079impl LspRequest for CodeLensRequest {
9080    type Params = CodeLensParams;
9081    type Result = Option<Vec<CodeLens>>;
9082    const METHOD: &'static str = "textDocument/codeLens";
9083}
9084pub struct CodeLensResolveRequest;
9085impl LspRequest for CodeLensResolveRequest {
9086    type Params = CodeLens;
9087    type Result = CodeLens;
9088    const METHOD: &'static str = "codeLens/resolve";
9089}
9090pub struct CodeLensRefreshRequest;
9091impl LspRequest for CodeLensRefreshRequest {
9092    type Params = ();
9093    type Result = ();
9094    const METHOD: &'static str = "workspace/codeLens/refresh";
9095}
9096pub struct DocumentLinkRequest;
9097impl LspRequest for DocumentLinkRequest {
9098    type Params = DocumentLinkParams;
9099    type Result = Option<Vec<DocumentLink>>;
9100    const METHOD: &'static str = "textDocument/documentLink";
9101}
9102pub struct DocumentLinkResolveRequest;
9103impl LspRequest for DocumentLinkResolveRequest {
9104    type Params = DocumentLink;
9105    type Result = DocumentLink;
9106    const METHOD: &'static str = "documentLink/resolve";
9107}
9108pub struct DocumentFormattingRequest;
9109impl LspRequest for DocumentFormattingRequest {
9110    type Params = DocumentFormattingParams;
9111    type Result = Option<Vec<TextEdit>>;
9112    const METHOD: &'static str = "textDocument/formatting";
9113}
9114pub struct DocumentRangeFormattingRequest;
9115impl LspRequest for DocumentRangeFormattingRequest {
9116    type Params = DocumentRangeFormattingParams;
9117    type Result = Option<Vec<TextEdit>>;
9118    const METHOD: &'static str = "textDocument/rangeFormatting";
9119}
9120pub struct DocumentRangesFormattingRequest;
9121impl LspRequest for DocumentRangesFormattingRequest {
9122    type Params = DocumentRangesFormattingParams;
9123    type Result = Option<Vec<TextEdit>>;
9124    const METHOD: &'static str = "textDocument/rangesFormatting";
9125}
9126pub struct DocumentOnTypeFormattingRequest;
9127impl LspRequest for DocumentOnTypeFormattingRequest {
9128    type Params = DocumentOnTypeFormattingParams;
9129    type Result = Option<Vec<TextEdit>>;
9130    const METHOD: &'static str = "textDocument/onTypeFormatting";
9131}
9132pub struct RenameRequest;
9133impl LspRequest for RenameRequest {
9134    type Params = RenameParams;
9135    type Result = Option<WorkspaceEdit>;
9136    const METHOD: &'static str = "textDocument/rename";
9137}
9138pub struct PrepareRenameRequest;
9139impl LspRequest for PrepareRenameRequest {
9140    type Params = PrepareRenameParams;
9141    type Result = Option<PrepareRenameResult>;
9142    const METHOD: &'static str = "textDocument/prepareRename";
9143}
9144pub struct ExecuteCommandRequest;
9145impl LspRequest for ExecuteCommandRequest {
9146    type Params = ExecuteCommandParams;
9147    type Result = Option<LSPAny>;
9148    const METHOD: &'static str = "workspace/executeCommand";
9149}
9150pub struct ApplyWorkspaceEditRequest;
9151impl LspRequest for ApplyWorkspaceEditRequest {
9152    type Params = ApplyWorkspaceEditParams;
9153    type Result = ApplyWorkspaceEditResult;
9154    const METHOD: &'static str = "workspace/applyEdit";
9155}
9156#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9157pub enum KnownRequest {
9158    ImplementationRequest,
9159    TypeDefinitionRequest,
9160    WorkspaceFoldersRequest,
9161    ConfigurationRequest,
9162    DocumentColorRequest,
9163    ColorPresentationRequest,
9164    FoldingRangeRequest,
9165    FoldingRangeRefreshRequest,
9166    DeclarationRequest,
9167    SelectionRangeRequest,
9168    WorkDoneProgressCreateRequest,
9169    CallHierarchyPrepareRequest,
9170    CallHierarchyIncomingCallsRequest,
9171    CallHierarchyOutgoingCallsRequest,
9172    SemanticTokensRequest,
9173    SemanticTokensDeltaRequest,
9174    SemanticTokensRangeRequest,
9175    SemanticTokensRefreshRequest,
9176    ShowDocumentRequest,
9177    LinkedEditingRangeRequest,
9178    WillCreateFilesRequest,
9179    WillRenameFilesRequest,
9180    WillDeleteFilesRequest,
9181    MonikerRequest,
9182    TypeHierarchyPrepareRequest,
9183    TypeHierarchySupertypesRequest,
9184    TypeHierarchySubtypesRequest,
9185    InlineValueRequest,
9186    InlineValueRefreshRequest,
9187    InlayHintRequest,
9188    InlayHintResolveRequest,
9189    InlayHintRefreshRequest,
9190    DocumentDiagnosticRequest,
9191    WorkspaceDiagnosticRequest,
9192    DiagnosticRefreshRequest,
9193    InlineCompletionRequest,
9194    TextDocumentContentRequest,
9195    TextDocumentContentRefreshRequest,
9196    RegistrationRequest,
9197    UnregistrationRequest,
9198    InitializeRequest,
9199    ShutdownRequest,
9200    ShowMessageRequest,
9201    WillSaveTextDocumentWaitUntilRequest,
9202    CompletionRequest,
9203    CompletionResolveRequest,
9204    HoverRequest,
9205    SignatureHelpRequest,
9206    DefinitionRequest,
9207    ReferencesRequest,
9208    DocumentHighlightRequest,
9209    DocumentSymbolRequest,
9210    CodeActionRequest,
9211    CodeActionResolveRequest,
9212    WorkspaceSymbolRequest,
9213    WorkspaceSymbolResolveRequest,
9214    CodeLensRequest,
9215    CodeLensResolveRequest,
9216    CodeLensRefreshRequest,
9217    DocumentLinkRequest,
9218    DocumentLinkResolveRequest,
9219    DocumentFormattingRequest,
9220    DocumentRangeFormattingRequest,
9221    DocumentRangesFormattingRequest,
9222    DocumentOnTypeFormattingRequest,
9223    RenameRequest,
9224    PrepareRenameRequest,
9225    ExecuteCommandRequest,
9226    ApplyWorkspaceEditRequest,
9227}
9228pub trait LspNotification {
9229    type Params: Serialize + for<'de> Deserialize<'de>;
9230    const METHOD: &'static str;
9231}
9232pub struct DidChangeWorkspaceFoldersNotification;
9233impl LspNotification for DidChangeWorkspaceFoldersNotification {
9234    type Params = DidChangeWorkspaceFoldersParams;
9235    const METHOD: &'static str = "workspace/didChangeWorkspaceFolders";
9236}
9237pub struct WorkDoneProgressCancelNotification;
9238impl LspNotification for WorkDoneProgressCancelNotification {
9239    type Params = WorkDoneProgressCancelParams;
9240    const METHOD: &'static str = "window/workDoneProgress/cancel";
9241}
9242pub struct DidCreateFilesNotification;
9243impl LspNotification for DidCreateFilesNotification {
9244    type Params = CreateFilesParams;
9245    const METHOD: &'static str = "workspace/didCreateFiles";
9246}
9247pub struct DidRenameFilesNotification;
9248impl LspNotification for DidRenameFilesNotification {
9249    type Params = RenameFilesParams;
9250    const METHOD: &'static str = "workspace/didRenameFiles";
9251}
9252pub struct DidDeleteFilesNotification;
9253impl LspNotification for DidDeleteFilesNotification {
9254    type Params = DeleteFilesParams;
9255    const METHOD: &'static str = "workspace/didDeleteFiles";
9256}
9257pub struct DidOpenNotebookDocumentNotification;
9258impl LspNotification for DidOpenNotebookDocumentNotification {
9259    type Params = DidOpenNotebookDocumentParams;
9260    const METHOD: &'static str = "notebookDocument/didOpen";
9261}
9262pub struct DidChangeNotebookDocumentNotification;
9263impl LspNotification for DidChangeNotebookDocumentNotification {
9264    type Params = DidChangeNotebookDocumentParams;
9265    const METHOD: &'static str = "notebookDocument/didChange";
9266}
9267pub struct DidSaveNotebookDocumentNotification;
9268impl LspNotification for DidSaveNotebookDocumentNotification {
9269    type Params = DidSaveNotebookDocumentParams;
9270    const METHOD: &'static str = "notebookDocument/didSave";
9271}
9272pub struct DidCloseNotebookDocumentNotification;
9273impl LspNotification for DidCloseNotebookDocumentNotification {
9274    type Params = DidCloseNotebookDocumentParams;
9275    const METHOD: &'static str = "notebookDocument/didClose";
9276}
9277pub struct InitializedNotification;
9278impl LspNotification for InitializedNotification {
9279    type Params = InitializedParams;
9280    const METHOD: &'static str = "initialized";
9281}
9282pub struct ExitNotification;
9283impl LspNotification for ExitNotification {
9284    type Params = ();
9285    const METHOD: &'static str = "exit";
9286}
9287pub struct DidChangeConfigurationNotification;
9288impl LspNotification for DidChangeConfigurationNotification {
9289    type Params = DidChangeConfigurationParams;
9290    const METHOD: &'static str = "workspace/didChangeConfiguration";
9291}
9292pub struct ShowMessageNotification;
9293impl LspNotification for ShowMessageNotification {
9294    type Params = ShowMessageParams;
9295    const METHOD: &'static str = "window/showMessage";
9296}
9297pub struct LogMessageNotification;
9298impl LspNotification for LogMessageNotification {
9299    type Params = LogMessageParams;
9300    const METHOD: &'static str = "window/logMessage";
9301}
9302pub struct TelemetryEventNotification;
9303impl LspNotification for TelemetryEventNotification {
9304    type Params = LSPAny;
9305    const METHOD: &'static str = "telemetry/event";
9306}
9307pub struct DidOpenTextDocumentNotification;
9308impl LspNotification for DidOpenTextDocumentNotification {
9309    type Params = DidOpenTextDocumentParams;
9310    const METHOD: &'static str = "textDocument/didOpen";
9311}
9312pub struct DidChangeTextDocumentNotification;
9313impl LspNotification for DidChangeTextDocumentNotification {
9314    type Params = DidChangeTextDocumentParams;
9315    const METHOD: &'static str = "textDocument/didChange";
9316}
9317pub struct DidCloseTextDocumentNotification;
9318impl LspNotification for DidCloseTextDocumentNotification {
9319    type Params = DidCloseTextDocumentParams;
9320    const METHOD: &'static str = "textDocument/didClose";
9321}
9322pub struct DidSaveTextDocumentNotification;
9323impl LspNotification for DidSaveTextDocumentNotification {
9324    type Params = DidSaveTextDocumentParams;
9325    const METHOD: &'static str = "textDocument/didSave";
9326}
9327pub struct WillSaveTextDocumentNotification;
9328impl LspNotification for WillSaveTextDocumentNotification {
9329    type Params = WillSaveTextDocumentParams;
9330    const METHOD: &'static str = "textDocument/willSave";
9331}
9332pub struct DidChangeWatchedFilesNotification;
9333impl LspNotification for DidChangeWatchedFilesNotification {
9334    type Params = DidChangeWatchedFilesParams;
9335    const METHOD: &'static str = "workspace/didChangeWatchedFiles";
9336}
9337pub struct PublishDiagnosticsNotification;
9338impl LspNotification for PublishDiagnosticsNotification {
9339    type Params = PublishDiagnosticsParams;
9340    const METHOD: &'static str = "textDocument/publishDiagnostics";
9341}
9342pub struct SetTraceNotification;
9343impl LspNotification for SetTraceNotification {
9344    type Params = SetTraceParams;
9345    const METHOD: &'static str = "$/setTrace";
9346}
9347pub struct LogTraceNotification;
9348impl LspNotification for LogTraceNotification {
9349    type Params = LogTraceParams;
9350    const METHOD: &'static str = "$/logTrace";
9351}
9352pub struct CancelNotification;
9353impl LspNotification for CancelNotification {
9354    type Params = CancelParams;
9355    const METHOD: &'static str = "$/cancelRequest";
9356}
9357pub struct ProgressNotification;
9358impl LspNotification for ProgressNotification {
9359    type Params = ProgressParams;
9360    const METHOD: &'static str = "$/progress";
9361}