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