summaryrefslogtreecommitdiffstats
path: root/packages/rust/lsprotocol/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/rust/lsprotocol/src/lib.rs')
-rw-r--r--packages/rust/lsprotocol/src/lib.rs10474
1 files changed, 10474 insertions, 0 deletions
diff --git a/packages/rust/lsprotocol/src/lib.rs b/packages/rust/lsprotocol/src/lib.rs
new file mode 100644
index 0000000..d50af4b
--- /dev/null
+++ b/packages/rust/lsprotocol/src/lib.rs
@@ -0,0 +1,10474 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+// ****** THIS IS A GENERATED FILE, DO NOT EDIT. ******
+// Steps to generate:
+// 1. Checkout https://github.com/microsoft/lsprotocol
+// 2. Install nox: `python -m pip install nox`
+// 3. Run command: `python -m nox --session build_lsp`
+
+use rust_decimal::Decimal;
+use serde::{Deserialize, Serialize};
+use std::collections::HashMap;
+/// This type allows extending any string enum to support custom values.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum CustomStringEnum<T> {
+ /// The value is one of the known enum values.
+ Known(T),
+ /// The value is custom.
+ Custom(String),
+}
+
+/// This type allows extending any integer enum to support custom values.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum CustomIntEnum<T> {
+ /// The value is one of the known enum values.
+ Known(T),
+ /// The value is custom.
+ Custom(i32),
+}
+
+/// This allows a field to have two types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR2<T, U> {
+ T(T),
+ U(U),
+}
+
+/// This allows a field to have three types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR3<T, U, V> {
+ T(T),
+ U(U),
+ V(V),
+}
+
+/// This allows a field to have four types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR4<T, U, V, W> {
+ T(T),
+ U(U),
+ V(V),
+ W(W),
+}
+
+/// This allows a field to have five types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR5<T, U, V, W, X> {
+ T(T),
+ U(U),
+ V(V),
+ W(W),
+ X(X),
+}
+
+/// This allows a field to have six types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR6<T, U, V, W, X, Y> {
+ T(T),
+ U(U),
+ V(V),
+ W(W),
+ X(X),
+ Y(Y),
+}
+
+/// This allows a field to have seven types.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum OR7<T, U, V, W, X, Y, Z> {
+ T(T),
+ U(U),
+ V(V),
+ W(W),
+ X(X),
+ Y(Y),
+ Z(Z),
+}
+
+/// This allows a field to always have null or empty value.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum LSPNull {
+ None,
+}
+
+/// The LSP any type.
+/// Please note that strictly speaking a property with the value `undefined`
+/// can't be converted into JSON preserving the property name. However for
+/// convenience it is allowed and assumed that all these properties are
+/// optional as well.
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum LSPAny {
+ String(String),
+ Integer(i32),
+ UInteger(u32),
+ Decimal(Decimal),
+ Boolean(bool),
+ Object(LSPObject),
+ Array(LSPArray),
+ Null,
+}
+
+/// LSP object definition.
+/// @since 3.17.0
+type LSPObject = serde_json::Value;
+
+/// LSP arrays.
+/// @since 3.17.0
+type LSPArray = Vec<LSPAny>;
+
+/// A selection range represents a part of a selection hierarchy. A selection range
+/// may have a parent selection range that contains it.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub struct SelectionRange {
+ /// The [range][Range] of this selection range.
+ pub range: Range,
+
+ /// The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
+ pub parent: Option<Box<SelectionRange>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum LSPRequestMethods {
+ #[serde(rename = "textDocument/implementation")]
+ TextDocumentImplementation,
+ #[serde(rename = "textDocument/typeDefinition")]
+ TextDocumentTypeDefinition,
+ #[serde(rename = "workspace/workspaceFolders")]
+ WorkspaceWorkspaceFolders,
+ #[serde(rename = "workspace/configuration")]
+ WorkspaceConfiguration,
+ #[serde(rename = "textDocument/documentColor")]
+ TextDocumentDocumentColor,
+ #[serde(rename = "textDocument/colorPresentation")]
+ TextDocumentColorPresentation,
+ #[serde(rename = "textDocument/foldingRange")]
+ TextDocumentFoldingRange,
+ #[serde(rename = "workspace/foldingRange/refresh")]
+ WorkspaceFoldingRangeRefresh,
+ #[serde(rename = "textDocument/declaration")]
+ TextDocumentDeclaration,
+ #[serde(rename = "textDocument/selectionRange")]
+ TextDocumentSelectionRange,
+ #[serde(rename = "window/workDoneProgress/create")]
+ WindowWorkDoneProgressCreate,
+ #[serde(rename = "textDocument/prepareCallHierarchy")]
+ TextDocumentPrepareCallHierarchy,
+ #[serde(rename = "callHierarchy/incomingCalls")]
+ CallHierarchyIncomingCalls,
+ #[serde(rename = "callHierarchy/outgoingCalls")]
+ CallHierarchyOutgoingCalls,
+ #[serde(rename = "textDocument/semanticTokens/full")]
+ TextDocumentSemanticTokensFull,
+ #[serde(rename = "textDocument/semanticTokens/full/delta")]
+ TextDocumentSemanticTokensFullDelta,
+ #[serde(rename = "textDocument/semanticTokens/range")]
+ TextDocumentSemanticTokensRange,
+ #[serde(rename = "workspace/semanticTokens/refresh")]
+ WorkspaceSemanticTokensRefresh,
+ #[serde(rename = "window/showDocument")]
+ WindowShowDocument,
+ #[serde(rename = "textDocument/linkedEditingRange")]
+ TextDocumentLinkedEditingRange,
+ #[serde(rename = "workspace/willCreateFiles")]
+ WorkspaceWillCreateFiles,
+ #[serde(rename = "workspace/willRenameFiles")]
+ WorkspaceWillRenameFiles,
+ #[serde(rename = "workspace/willDeleteFiles")]
+ WorkspaceWillDeleteFiles,
+ #[serde(rename = "textDocument/moniker")]
+ TextDocumentMoniker,
+ #[serde(rename = "textDocument/prepareTypeHierarchy")]
+ TextDocumentPrepareTypeHierarchy,
+ #[serde(rename = "typeHierarchy/supertypes")]
+ TypeHierarchySupertypes,
+ #[serde(rename = "typeHierarchy/subtypes")]
+ TypeHierarchySubtypes,
+ #[serde(rename = "textDocument/inlineValue")]
+ TextDocumentInlineValue,
+ #[serde(rename = "workspace/inlineValue/refresh")]
+ WorkspaceInlineValueRefresh,
+ #[serde(rename = "textDocument/inlayHint")]
+ TextDocumentInlayHint,
+ #[serde(rename = "inlayHint/resolve")]
+ InlayHintResolve,
+ #[serde(rename = "workspace/inlayHint/refresh")]
+ WorkspaceInlayHintRefresh,
+ #[serde(rename = "textDocument/diagnostic")]
+ TextDocumentDiagnostic,
+ #[serde(rename = "workspace/diagnostic")]
+ WorkspaceDiagnostic,
+ #[serde(rename = "workspace/diagnostic/refresh")]
+ WorkspaceDiagnosticRefresh,
+ #[serde(rename = "textDocument/inlineCompletion")]
+ TextDocumentInlineCompletion,
+ #[serde(rename = "client/registerCapability")]
+ ClientRegisterCapability,
+ #[serde(rename = "client/unregisterCapability")]
+ ClientUnregisterCapability,
+ #[serde(rename = "initialize")]
+ Initialize,
+ #[serde(rename = "shutdown")]
+ Shutdown,
+ #[serde(rename = "window/showMessageRequest")]
+ WindowShowMessageRequest,
+ #[serde(rename = "textDocument/willSaveWaitUntil")]
+ TextDocumentWillSaveWaitUntil,
+ #[serde(rename = "textDocument/completion")]
+ TextDocumentCompletion,
+ #[serde(rename = "completionItem/resolve")]
+ CompletionItemResolve,
+ #[serde(rename = "textDocument/hover")]
+ TextDocumentHover,
+ #[serde(rename = "textDocument/signatureHelp")]
+ TextDocumentSignatureHelp,
+ #[serde(rename = "textDocument/definition")]
+ TextDocumentDefinition,
+ #[serde(rename = "textDocument/references")]
+ TextDocumentReferences,
+ #[serde(rename = "textDocument/documentHighlight")]
+ TextDocumentDocumentHighlight,
+ #[serde(rename = "textDocument/documentSymbol")]
+ TextDocumentDocumentSymbol,
+ #[serde(rename = "textDocument/codeAction")]
+ TextDocumentCodeAction,
+ #[serde(rename = "codeAction/resolve")]
+ CodeActionResolve,
+ #[serde(rename = "workspace/symbol")]
+ WorkspaceSymbol,
+ #[serde(rename = "workspaceSymbol/resolve")]
+ WorkspaceSymbolResolve,
+ #[serde(rename = "textDocument/codeLens")]
+ TextDocumentCodeLens,
+ #[serde(rename = "codeLens/resolve")]
+ CodeLensResolve,
+ #[serde(rename = "workspace/codeLens/refresh")]
+ WorkspaceCodeLensRefresh,
+ #[serde(rename = "textDocument/documentLink")]
+ TextDocumentDocumentLink,
+ #[serde(rename = "documentLink/resolve")]
+ DocumentLinkResolve,
+ #[serde(rename = "textDocument/formatting")]
+ TextDocumentFormatting,
+ #[serde(rename = "textDocument/rangeFormatting")]
+ TextDocumentRangeFormatting,
+ #[serde(rename = "textDocument/rangesFormatting")]
+ TextDocumentRangesFormatting,
+ #[serde(rename = "textDocument/onTypeFormatting")]
+ TextDocumentOnTypeFormatting,
+ #[serde(rename = "textDocument/rename")]
+ TextDocumentRename,
+ #[serde(rename = "textDocument/prepareRename")]
+ TextDocumentPrepareRename,
+ #[serde(rename = "workspace/executeCommand")]
+ WorkspaceExecuteCommand,
+ #[serde(rename = "workspace/applyEdit")]
+ WorkspaceApplyEdit,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum LSPNotificationMethods {
+ #[serde(rename = "workspace/didChangeWorkspaceFolders")]
+ WorkspaceDidChangeWorkspaceFolders,
+ #[serde(rename = "window/workDoneProgress/cancel")]
+ WindowWorkDoneProgressCancel,
+ #[serde(rename = "workspace/didCreateFiles")]
+ WorkspaceDidCreateFiles,
+ #[serde(rename = "workspace/didRenameFiles")]
+ WorkspaceDidRenameFiles,
+ #[serde(rename = "workspace/didDeleteFiles")]
+ WorkspaceDidDeleteFiles,
+ #[serde(rename = "notebookDocument/didOpen")]
+ NotebookDocumentDidOpen,
+ #[serde(rename = "notebookDocument/didChange")]
+ NotebookDocumentDidChange,
+ #[serde(rename = "notebookDocument/didSave")]
+ NotebookDocumentDidSave,
+ #[serde(rename = "notebookDocument/didClose")]
+ NotebookDocumentDidClose,
+ #[serde(rename = "initialized")]
+ Initialized,
+ #[serde(rename = "exit")]
+ Exit,
+ #[serde(rename = "workspace/didChangeConfiguration")]
+ WorkspaceDidChangeConfiguration,
+ #[serde(rename = "window/showMessage")]
+ WindowShowMessage,
+ #[serde(rename = "window/logMessage")]
+ WindowLogMessage,
+ #[serde(rename = "telemetry/event")]
+ TelemetryEvent,
+ #[serde(rename = "textDocument/didOpen")]
+ TextDocumentDidOpen,
+ #[serde(rename = "textDocument/didChange")]
+ TextDocumentDidChange,
+ #[serde(rename = "textDocument/didClose")]
+ TextDocumentDidClose,
+ #[serde(rename = "textDocument/didSave")]
+ TextDocumentDidSave,
+ #[serde(rename = "textDocument/willSave")]
+ TextDocumentWillSave,
+ #[serde(rename = "workspace/didChangeWatchedFiles")]
+ WorkspaceDidChangeWatchedFiles,
+ #[serde(rename = "textDocument/publishDiagnostics")]
+ TextDocumentPublishDiagnostics,
+ #[serde(rename = "$/setTrace")]
+ SetTrace,
+ #[serde(rename = "$/logTrace")]
+ LogTrace,
+ #[serde(rename = "$/cancelRequest")]
+ CancelRequest,
+ #[serde(rename = "$/progress")]
+ Progress,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum MessageDirection {
+ #[serde(rename = "clientToServer")]
+ ClientToServer,
+ #[serde(rename = "both")]
+ Both,
+ #[serde(rename = "serverToClient")]
+ ServerToClient,
+}
+
+/// A set of predefined token types. This set is not fixed
+/// an clients can specify additional token types via the
+/// corresponding client capabilities.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum SemanticTokenTypes {
+ #[serde(rename = "namespace")]
+ Namespace,
+
+ /// Represents a generic type. Acts as a fallback for types which can't be mapped to
+ /// a specific type like class or enum.
+ #[serde(rename = "type")]
+ Type,
+
+ #[serde(rename = "class")]
+ Class,
+
+ #[serde(rename = "enum")]
+ Enum,
+
+ #[serde(rename = "interface")]
+ Interface,
+
+ #[serde(rename = "struct")]
+ Struct,
+
+ #[serde(rename = "typeParameter")]
+ TypeParameter,
+
+ #[serde(rename = "parameter")]
+ Parameter,
+
+ #[serde(rename = "variable")]
+ Variable,
+
+ #[serde(rename = "property")]
+ Property,
+
+ #[serde(rename = "enumMember")]
+ EnumMember,
+
+ #[serde(rename = "event")]
+ Event,
+
+ #[serde(rename = "function")]
+ Function,
+
+ #[serde(rename = "method")]
+ Method,
+
+ #[serde(rename = "macro")]
+ Macro,
+
+ #[serde(rename = "keyword")]
+ Keyword,
+
+ #[serde(rename = "modifier")]
+ Modifier,
+
+ #[serde(rename = "comment")]
+ Comment,
+
+ #[serde(rename = "string")]
+ String,
+
+ #[serde(rename = "number")]
+ Number,
+
+ #[serde(rename = "regexp")]
+ Regexp,
+
+ #[serde(rename = "operator")]
+ Operator,
+
+ /// @since 3.17.0
+ #[serde(rename = "decorator")]
+ Decorator,
+}
+
+/// A set of predefined token modifiers. This set is not fixed
+/// an clients can specify additional token types via the
+/// corresponding client capabilities.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum SemanticTokenModifiers {
+ #[serde(rename = "declaration")]
+ Declaration,
+
+ #[serde(rename = "definition")]
+ Definition,
+
+ #[serde(rename = "readonly")]
+ Readonly,
+
+ #[serde(rename = "static")]
+ Static,
+
+ #[serde(rename = "deprecated")]
+ Deprecated,
+
+ #[serde(rename = "abstract")]
+ Abstract,
+
+ #[serde(rename = "async")]
+ Async,
+
+ #[serde(rename = "modification")]
+ Modification,
+
+ #[serde(rename = "documentation")]
+ Documentation,
+
+ #[serde(rename = "defaultLibrary")]
+ DefaultLibrary,
+}
+
+/// The document diagnostic report kinds.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum DocumentDiagnosticReportKind {
+ /// A diagnostic report with a full
+ /// set of problems.
+ #[serde(rename = "full")]
+ Full,
+
+ /// A report indicating that the last
+ /// returned report is still accurate.
+ #[serde(rename = "unchanged")]
+ Unchanged,
+}
+
+/// Predefined error codes.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum ErrorCodes {
+ ParseError = -32700,
+
+ InvalidRequest = -32600,
+
+ MethodNotFound = -32601,
+
+ InvalidParams = -32602,
+
+ InternalError = -32603,
+
+ /// Error code indicating that a server received a notification or
+ /// request before the server has received the `initialize` request.
+ ServerNotInitialized = -32002,
+
+ UnknownErrorCode = -32001,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum LSPErrorCodes {
+ /// A request failed but it was syntactically correct, e.g the
+ /// method name was known and the parameters were valid. The error
+ /// message should contain human readable information about why
+ /// the request failed.
+ ///
+ /// @since 3.17.0
+ RequestFailed = -32803,
+
+ /// The server cancelled the request. This error code should
+ /// only be used for requests that explicitly support being
+ /// server cancellable.
+ ///
+ /// @since 3.17.0
+ ServerCancelled = -32802,
+
+ /// The server detected that the content of a document got
+ /// modified outside normal conditions. A server should
+ /// NOT send this error code if it detects a content change
+ /// in it unprocessed messages. The result even computed
+ /// on an older state might still be useful for the client.
+ ///
+ /// If a client decides that a result is not of any use anymore
+ /// the client should cancel the request.
+ ContentModified = -32801,
+
+ /// The client has canceled a request and a server as detected
+ /// the cancel.
+ RequestCancelled = -32800,
+}
+
+/// A set of predefined range kinds.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum FoldingRangeKind {
+ /// Folding range for a comment
+ #[serde(rename = "comment")]
+ Comment,
+
+ /// Folding range for an import or include
+ #[serde(rename = "imports")]
+ Imports,
+
+ /// Folding range for a region (e.g. `#region`)
+ #[serde(rename = "region")]
+ Region,
+}
+
+/// A symbol kind.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum SymbolKind {
+ File = 1,
+
+ Module = 2,
+
+ Namespace = 3,
+
+ Package = 4,
+
+ Class = 5,
+
+ Method = 6,
+
+ Property = 7,
+
+ Field = 8,
+
+ Constructor = 9,
+
+ Enum = 10,
+
+ Interface = 11,
+
+ Function = 12,
+
+ Variable = 13,
+
+ Constant = 14,
+
+ String = 15,
+
+ Number = 16,
+
+ Boolean = 17,
+
+ Array = 18,
+
+ Object = 19,
+
+ Key = 20,
+
+ Null = 21,
+
+ EnumMember = 22,
+
+ Struct = 23,
+
+ Event = 24,
+
+ Operator = 25,
+
+ TypeParameter = 26,
+}
+
+/// Symbol tags are extra annotations that tweak the rendering of a symbol.
+///
+/// @since 3.16
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum SymbolTag {
+ /// Render a symbol as obsolete, usually using a strike-out.
+ Deprecated = 1,
+}
+
+/// Moniker uniqueness level to define scope of the moniker.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum UniquenessLevel {
+ /// The moniker is only unique inside a document
+ #[serde(rename = "document")]
+ Document,
+
+ /// The moniker is unique inside a project for which a dump got created
+ #[serde(rename = "project")]
+ Project,
+
+ /// The moniker is unique inside the group to which a project belongs
+ #[serde(rename = "group")]
+ Group,
+
+ /// The moniker is unique inside the moniker scheme.
+ #[serde(rename = "scheme")]
+ Scheme,
+
+ /// The moniker is globally unique
+ #[serde(rename = "global")]
+ Global,
+}
+
+/// The moniker kind.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum MonikerKind {
+ /// The moniker represent a symbol that is imported into a project
+ #[serde(rename = "import")]
+ Import,
+
+ /// The moniker represents a symbol that is exported from a project
+ #[serde(rename = "export")]
+ Export,
+
+ /// The moniker represents a symbol that is local to a project (e.g. a local
+ /// variable of a function, a class not visible outside the project, ...)
+ #[serde(rename = "local")]
+ Local,
+}
+
+/// Inlay hint kinds.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum InlayHintKind {
+ /// An inlay hint that for a type annotation.
+ Type = 1,
+
+ /// An inlay hint that is for a parameter.
+ Parameter = 2,
+}
+
+/// The message type
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum MessageType {
+ /// An error message.
+ Error = 1,
+
+ /// A warning message.
+ Warning = 2,
+
+ /// An information message.
+ Info = 3,
+
+ /// A log message.
+ Log = 4,
+
+ /// A debug message.
+ ///
+ /// @since 3.18.0
+ Debug = 5,
+}
+
+/// Defines how the host (editor) should sync
+/// document changes to the language server.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum TextDocumentSyncKind {
+ /// Documents should not be synced at all.
+ None = 0,
+
+ /// Documents are synced by always sending the full content
+ /// of the document.
+ Full = 1,
+
+ /// Documents are synced by sending the full content on open.
+ /// After that only incremental updates to the document are
+ /// send.
+ Incremental = 2,
+}
+
+/// Represents reasons why a text document is saved.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum TextDocumentSaveReason {
+ /// Manually triggered, e.g. by the user pressing save, by starting debugging,
+ /// or by an API call.
+ Manual = 1,
+
+ /// Automatic after a delay.
+ AfterDelay = 2,
+
+ /// When the editor lost focus.
+ FocusOut = 3,
+}
+
+/// The kind of a completion entry.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum CompletionItemKind {
+ Text = 1,
+
+ Method = 2,
+
+ Function = 3,
+
+ Constructor = 4,
+
+ Field = 5,
+
+ Variable = 6,
+
+ Class = 7,
+
+ Interface = 8,
+
+ Module = 9,
+
+ Property = 10,
+
+ Unit = 11,
+
+ Value = 12,
+
+ Enum = 13,
+
+ Keyword = 14,
+
+ Snippet = 15,
+
+ Color = 16,
+
+ File = 17,
+
+ Reference = 18,
+
+ Folder = 19,
+
+ EnumMember = 20,
+
+ Constant = 21,
+
+ Struct = 22,
+
+ Event = 23,
+
+ Operator = 24,
+
+ TypeParameter = 25,
+}
+
+/// Completion item tags are extra annotations that tweak the rendering of a completion
+/// item.
+///
+/// @since 3.15.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum CompletionItemTag {
+ /// Render a completion as obsolete, usually using a strike-out.
+ Deprecated = 1,
+}
+
+/// Defines whether the insert text in a completion item should be interpreted as
+/// plain text or a snippet.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum InsertTextFormat {
+ /// The primary text to be inserted is treated as a plain string.
+ PlainText = 1,
+
+ /// The primary text to be inserted is treated as a snippet.
+ ///
+ /// A snippet can define tab stops and placeholders with `$1`, `$2`
+ /// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
+ /// the end of the snippet. Placeholders with equal identifiers are linked,
+ /// that is typing in one will update others too.
+ ///
+ /// See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax
+ Snippet = 2,
+}
+
+/// How whitespace and indentation is handled during completion
+/// item insertion.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum InsertTextMode {
+ /// The insertion or replace strings is taken as it is. If the
+ /// value is multi line the lines below the cursor will be
+ /// inserted using the indentation defined in the string value.
+ /// The client will not apply any kind of adjustments to the
+ /// string.
+ AsIs = 1,
+
+ /// The editor adjusts leading whitespace of new lines so that
+ /// they match the indentation up to the cursor of the line for
+ /// which the item is accepted.
+ ///
+ /// Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a
+ /// multi line completion item is indented using 2 tabs and all
+ /// following lines inserted will be indented using 2 tabs as well.
+ AdjustIndentation = 2,
+}
+
+/// A document highlight kind.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum DocumentHighlightKind {
+ /// A textual occurrence.
+ Text = 1,
+
+ /// Read-access of a symbol, like reading a variable.
+ Read = 2,
+
+ /// Write-access of a symbol, like writing to a variable.
+ Write = 3,
+}
+
+/// A set of predefined code action kinds
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum CodeActionKind {
+ /// Empty kind.
+ #[serde(rename = "")]
+ Empty,
+
+ /// Base kind for quickfix actions: 'quickfix'
+ #[serde(rename = "quickfix")]
+ QuickFix,
+
+ /// Base kind for refactoring actions: 'refactor'
+ #[serde(rename = "refactor")]
+ Refactor,
+
+ /// Base kind for refactoring extraction actions: 'refactor.extract'
+ ///
+ /// Example extract actions:
+ ///
+ /// - Extract method
+ /// - Extract function
+ /// - Extract variable
+ /// - Extract interface from class
+ /// - ...
+ #[serde(rename = "refactor.extract")]
+ RefactorExtract,
+
+ /// Base kind for refactoring inline actions: 'refactor.inline'
+ ///
+ /// Example inline actions:
+ ///
+ /// - Inline function
+ /// - Inline variable
+ /// - Inline constant
+ /// - ...
+ #[serde(rename = "refactor.inline")]
+ RefactorInline,
+
+ /// Base kind for refactoring rewrite actions: 'refactor.rewrite'
+ ///
+ /// Example rewrite actions:
+ ///
+ /// - Convert JavaScript function to class
+ /// - Add or remove parameter
+ /// - Encapsulate field
+ /// - Make method static
+ /// - Move method to base class
+ /// - ...
+ #[serde(rename = "refactor.rewrite")]
+ RefactorRewrite,
+
+ /// Base kind for source actions: `source`
+ ///
+ /// Source code actions apply to the entire file.
+ #[serde(rename = "source")]
+ Source,
+
+ /// Base kind for an organize imports source action: `source.organizeImports`
+ #[serde(rename = "source.organizeImports")]
+ SourceOrganizeImports,
+
+ /// Base kind for auto-fix source actions: `source.fixAll`.
+ ///
+ /// Fix all actions automatically fix errors that have a clear fix that do not require user input.
+ /// They should not suppress errors or perform unsafe fixes such as generating new types or classes.
+ ///
+ /// @since 3.15.0
+ #[serde(rename = "source.fixAll")]
+ SourceFixAll,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum TraceValues {
+ /// Turn tracing off.
+ #[serde(rename = "off")]
+ Off,
+
+ /// Trace messages only.
+ #[serde(rename = "messages")]
+ Messages,
+
+ /// Verbose message tracing.
+ #[serde(rename = "verbose")]
+ Verbose,
+}
+
+/// Describes the content type that a client supports in various
+/// result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
+///
+/// Please note that `MarkupKinds` must not start with a `$`. This kinds
+/// are reserved for internal usage.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum MarkupKind {
+ /// Plain text is supported as a content format
+ #[serde(rename = "plaintext")]
+ PlainText,
+
+ /// Markdown is supported as a content format
+ #[serde(rename = "markdown")]
+ Markdown,
+}
+
+/// Describes how an [inline completion provider][InlineCompletionItemProvider] was triggered.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum InlineCompletionTriggerKind {
+ /// Completion was triggered explicitly by a user gesture.
+ Invoked = 0,
+
+ /// Completion was triggered automatically while editing.
+ Automatic = 1,
+}
+
+/// A set of predefined position encoding kinds.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum PositionEncodingKind {
+ /// Character offsets count UTF-8 code units (e.g. bytes).
+ #[serde(rename = "utf-8")]
+ Utf8,
+
+ /// Character offsets count UTF-16 code units.
+ ///
+ /// This is the default and must always be supported
+ /// by servers
+ #[serde(rename = "utf-16")]
+ Utf16,
+
+ /// Character offsets count UTF-32 code units.
+ ///
+ /// Implementation note: these are the same as Unicode codepoints,
+ /// so this `PositionEncodingKind` may also be used for an
+ /// encoding-agnostic representation of character offsets.
+ #[serde(rename = "utf-32")]
+ Utf32,
+}
+
+/// The file event type
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum FileChangeType {
+ /// The file got created.
+ Created = 1,
+
+ /// The file got changed.
+ Changed = 2,
+
+ /// The file got deleted.
+ Deleted = 3,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum WatchKind {
+ /// Interested in create events.
+ Create = 1,
+
+ /// Interested in change events
+ Change = 2,
+
+ /// Interested in delete events
+ Delete = 4,
+}
+
+/// The diagnostic's severity.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum DiagnosticSeverity {
+ /// Reports an error.
+ Error = 1,
+
+ /// Reports a warning.
+ Warning = 2,
+
+ /// Reports an information.
+ Information = 3,
+
+ /// Reports a hint.
+ Hint = 4,
+}
+
+/// The diagnostic tags.
+///
+/// @since 3.15.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum DiagnosticTag {
+ /// Unused or unnecessary code.
+ ///
+ /// Clients are allowed to render diagnostics with this tag faded out instead of having
+ /// an error squiggle.
+ Unnecessary = 1,
+
+ /// Deprecated or obsolete code.
+ ///
+ /// Clients are allowed to rendered diagnostics with this tag strike through.
+ Deprecated = 2,
+}
+
+/// How a completion was triggered
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum CompletionTriggerKind {
+ /// Completion was triggered by typing an identifier (24x7 code
+ /// complete), manual invocation (e.g Ctrl+Space) or via API.
+ Invoked = 1,
+
+ /// Completion was triggered by a trigger character specified by
+ /// the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
+ TriggerCharacter = 2,
+
+ /// Completion was re-triggered as current completion list is incomplete
+ TriggerForIncompleteCompletions = 3,
+}
+
+/// How a signature help was triggered.
+///
+/// @since 3.15.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum SignatureHelpTriggerKind {
+ /// Signature help was invoked manually by the user or by a command.
+ Invoked = 1,
+
+ /// Signature help was triggered by a trigger character.
+ TriggerCharacter = 2,
+
+ /// Signature help was triggered by the cursor moving or by the document content changing.
+ ContentChange = 3,
+}
+
+/// The reason why code actions were requested.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum CodeActionTriggerKind {
+ /// Code actions were explicitly requested by the user or by an extension.
+ Invoked = 1,
+
+ /// Code actions were requested automatically.
+ ///
+ /// This typically happens when current selection in a file changes, but can
+ /// also be triggered when file content changes.
+ Automatic = 2,
+}
+
+/// A pattern kind describing if a glob pattern matches a file a folder or
+/// both.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum FileOperationPatternKind {
+ /// The pattern matches a file only.
+ #[serde(rename = "file")]
+ File,
+
+ /// The pattern matches a folder only.
+ #[serde(rename = "folder")]
+ Folder,
+}
+
+/// A notebook cell kind.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum NotebookCellKind {
+ /// A markup-cell is formatted source that is used for display.
+ Markup = 1,
+
+ /// A code-cell is source code.
+ Code = 2,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum ResourceOperationKind {
+ /// Supports creating new files and folders.
+ #[serde(rename = "create")]
+ Create,
+
+ /// Supports renaming existing files and folders.
+ #[serde(rename = "rename")]
+ Rename,
+
+ /// Supports deleting existing files and folders.
+ #[serde(rename = "delete")]
+ Delete,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum FailureHandlingKind {
+ /// Applying the workspace change is simply aborted if one of the changes provided
+ /// fails. All operations executed before the failing operation stay executed.
+ #[serde(rename = "abort")]
+ Abort,
+
+ /// All operations are executed transactional. That means they either all
+ /// succeed or no changes at all are applied to the workspace.
+ #[serde(rename = "transactional")]
+ Transactional,
+
+ /// If the workspace edit contains only textual file changes they are executed transactional.
+ /// If resource changes (create, rename or delete file) are part of the change the failure
+ /// handling strategy is abort.
+ #[serde(rename = "textOnlyTransactional")]
+ TextOnlyTransactional,
+
+ /// The client tries to undo the operations already executed. But there is no
+ /// guarantee that this is succeeding.
+ #[serde(rename = "undo")]
+ Undo,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum PrepareSupportDefaultBehavior {
+ /// The client's default behavior is to select the identifier
+ /// according the to language's syntax rule.
+ Identifier = 1,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+pub enum TokenFormat {
+ #[serde(rename = "relative")]
+ Relative,
+}
+
+/// The definition of a symbol represented as one or many [locations][Location].
+/// For most programming languages there is only one location at which a symbol is
+/// defined.
+///
+/// Servers should prefer returning `DefinitionLink` over `Definition` if supported
+/// by the client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum Definition {
+ One(Location),
+ Many(Vec<Location>),
+}
+
+/// Information about where a symbol is defined.
+///
+/// Provides additional metadata over normal [location][Location] definitions, including the range of
+/// the defining symbol
+pub type DefinitionLink = LocationLink;
+
+/// The declaration of a symbol representation as one or many [locations][Location].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum Declaration {
+ One(Location),
+ Many(Vec<Location>),
+}
+
+/// Information about where a symbol is declared.
+///
+/// Provides additional metadata over normal [location][Location] declarations, including the range of
+/// the declaring symbol.
+///
+/// Servers should prefer returning `DeclarationLink` over `Declaration` if supported
+/// by the client.
+pub type DeclarationLink = LocationLink;
+
+/// Inline value information can be provided by different means:
+/// - directly as a text value (class InlineValueText).
+/// - as a name to use for a variable lookup (class InlineValueVariableLookup)
+/// - as an evaluatable expression (class InlineValueEvaluatableExpression)
+/// The InlineValue types combines all inline value types into one type.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum InlineValue {
+ Text(InlineValueText),
+ VariableLookup(InlineValueVariableLookup),
+ EvaluatableExpression(InlineValueEvaluatableExpression),
+}
+
+/// The result of a document diagnostic pull request. A report can
+/// either be a full report containing all diagnostics for the
+/// requested document or an unchanged report indicating that nothing
+/// has changed in terms of diagnostics in comparison to the last
+/// pull request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum DocumentDiagnosticReport {
+ Full(RelatedFullDocumentDiagnosticReport),
+ Unchanged(RelatedUnchangedDocumentDiagnosticReport),
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructPrepareRenameResult {
+ pub range: Range,
+
+ pub placeholder: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructPrepareRenameResultDefault {
+ pub default_behavior: bool,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum PrepareRenameResult {
+ Range(Range),
+ Placeholder(StructPrepareRenameResult),
+ Default(StructPrepareRenameResultDefault),
+}
+
+/// A document selector is the combination of one or many document filters.
+///
+/// @sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`;
+///
+/// The use of a string as a document filter is deprecated @since 3.16.0.
+pub type DocumentSelector = Vec<DocumentFilter>;
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum ProgressToken {
+ Int(i32),
+ String(String),
+}
+
+/// An identifier to refer to a change annotation stored with a workspace edit.
+pub type ChangeAnnotationIdentifier = String;
+
+/// A workspace diagnostic document report.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum WorkspaceDocumentDiagnosticReport {
+ Full(WorkspaceFullDocumentDiagnosticReport),
+ Unchanged(WorkspaceUnchangedDocumentDiagnosticReport),
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTextDocumentContentChangeEvent {
+ /// The range of the document that changed.
+ pub range: Range,
+
+ /// The optional length of the range that got replaced.
+ ///
+ /// @deprecated use range instead.
+ pub range_length: Option<u32>,
+
+ /// The new text for the provided range.
+ pub text: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTextDocumentContentChangeEventText {
+ /// The new text of the whole document.
+ pub text: String,
+}
+
+/// An event describing a change to a text document. If only a text is provided
+/// it is considered to be the full content of the document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum TextDocumentContentChangeEvent {
+ Range(StructTextDocumentContentChangeEvent),
+ Text(StructTextDocumentContentChangeEventText),
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructMarkedString {
+ pub language: String,
+
+ pub value: String,
+}
+
+/// MarkedString can be used to render human readable text. It is either a markdown string
+/// or a code-block that provides a language and a code snippet. The language identifier
+/// is semantically equal to the optional language identifier in fenced code blocks in GitHub
+/// issues. See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
+///
+/// The pair of a language and a value is an equivalent to markdown:
+/// ```${language}
+/// ${value}
+/// ```
+///
+/// Note that markdown strings will be sanitized - that means html will be escaped.
+/// @deprecated use MarkupContent instead.
+#[deprecated]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum MarkedString {
+ String(String),
+ MarkedString(StructMarkedString),
+}
+
+/// A document filter describes a top level text document or
+/// a notebook cell document.
+///
+/// @since 3.17.0 - proposed support for NotebookCellTextDocumentFilter.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum DocumentFilter {
+ TextDocumentFilter(TextDocumentFilter),
+ NotebookCell(NotebookCellTextDocumentFilter),
+}
+
+/// The glob pattern. Either a string pattern or a relative pattern.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum GlobPattern {
+ Pattern(Pattern),
+ Relative(RelativePattern),
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTextDocumentFilter {
+ /// A language id, like `typescript`.
+ pub language: String,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: Option<String>,
+
+ /// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
+ pub pattern: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTextDocumentFilterScheme {
+ /// A language id, like `typescript`.
+ pub language: Option<String>,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: String,
+
+ /// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
+ pub pattern: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTextDocumentFilterPattern {
+ /// A language id, like `typescript`.
+ pub language: Option<String>,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: Option<String>,
+
+ /// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
+ pub pattern: String,
+}
+
+/// A document filter denotes a document by different properties like
+/// the [language][`TextDocument::languageId`], the [scheme][`Uri::scheme`] of
+/// its resource, or a glob-pattern that is applied to the [path][`TextDocument::fileName`].
+///
+/// Glob patterns can have the following syntax:
+/// - `*` to match one or more characters in a path segment
+/// - `?` to match on one character in a path segment
+/// - `**` to match any number of path segments, including none
+/// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
+/// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
+/// - `[!...]` 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`)
+///
+/// @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }`
+/// @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }`
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum TextDocumentFilter {
+ Language(StructTextDocumentFilter),
+ Scheme(StructTextDocumentFilterScheme),
+ Pattern(StructTextDocumentFilterPattern),
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructNotebookDocumentFilter {
+ /// The type of the enclosing notebook.
+ pub notebook_type: String,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: Option<String>,
+
+ /// A glob pattern.
+ pub pattern: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructNotebookDocumentFilterScheme {
+ /// The type of the enclosing notebook.
+ pub notebook_type: Option<String>,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: String,
+
+ /// A glob pattern.
+ pub pattern: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructNotebookDocumentFilterPattern {
+ /// The type of the enclosing notebook.
+ pub notebook_type: Option<String>,
+
+ /// A Uri [scheme][`Uri::scheme`], like `file` or `untitled`.
+ pub scheme: Option<String>,
+
+ /// A glob pattern.
+ pub pattern: String,
+}
+
+/// A notebook document filter denotes a notebook document by
+/// different properties. The properties will be match
+/// against the notebook's URI (same as with documents)
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum NotebookDocumentFilter {
+ Type(StructNotebookDocumentFilter),
+ Scheme(StructNotebookDocumentFilterScheme),
+ Pattern(StructNotebookDocumentFilterPattern),
+}
+
+/// The glob pattern to watch relative to the base path. Glob patterns can have the following syntax:
+/// - `*` to match one or more characters in a path segment
+/// - `?` to match on one character in a path segment
+/// - `**` to match any number of path segments, including none
+/// - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
+/// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
+/// - `[!...]` 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`)
+///
+/// @since 3.17.0
+pub type Pattern = String;
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ImplementationParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents a location inside a resource, such as a line
+/// inside a text file.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Location {
+ pub range: Range,
+
+ pub uri: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ImplementationRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeDefinitionParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeDefinitionRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// A workspace folder inside a client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFolder {
+ /// The name of the workspace folder. Used to refer to this
+ /// workspace folder in the user interface.
+ pub name: String,
+
+ /// The associated URI for this workspace folder.
+ pub uri: String,
+}
+
+/// The parameters of a `workspace/didChangeWorkspaceFolders` notification.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeWorkspaceFoldersParams {
+ /// The actual workspace folder change event.
+ pub event: WorkspaceFoldersChangeEvent,
+}
+
+/// The parameters of a configuration request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ConfigurationParams {
+ pub items: Vec<ConfigurationItem>,
+}
+
+/// Parameters for a [DocumentColorRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentColorParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents a color range from a document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ColorInformation {
+ /// The actual color value for this color range.
+ pub color: Color,
+
+ /// The range in the document where this color appears.
+ pub range: Range,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentColorRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// Parameters for a [ColorPresentationRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ColorPresentationParams {
+ /// The color to request presentations for.
+ pub color: Color,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The range where the color would be inserted. Serves as a context.
+ pub range: Range,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ColorPresentation {
+ /// An optional array of additional [text edits][TextEdit] that are applied when
+ /// selecting this color presentation. Edits must not overlap with the main [edit][`ColorPresentation::textEdit`] nor with themselves.
+ pub additional_text_edits: Option<Vec<TextEdit>>,
+
+ /// The label of this color presentation. It will be shown on the color
+ /// picker header. By default this is also the text that is inserted when selecting
+ /// this color presentation.
+ pub label: String,
+
+ /// An [edit][TextEdit] which is applied to a document when selecting
+ /// this presentation for the color. When `falsy` the [label][`ColorPresentation::label`]
+ /// is used.
+ pub text_edit: Option<TextEdit>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// General text document registration options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// Parameters for a [FoldingRangeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRangeParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents a folding range. To be valid, start and end line must be bigger than zero and smaller
+/// than the number of lines in the document. Clients are free to ignore invalid ranges.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRange {
+ /// The text that the client should show when the specified range is
+ /// collapsed. If not defined or not supported by the client, a default
+ /// will be chosen by the client.
+ ///
+ /// @since 3.17.0
+ pub collapsed_text: Option<String>,
+
+ /// The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line.
+ pub end_character: Option<u32>,
+
+ /// The zero-based end line of the range to fold. The folded area ends with the line's last character.
+ /// To be valid, the end must be zero or larger and smaller than the number of lines in the document.
+ pub end_line: u32,
+
+ /// Describes the kind of the folding range such as `comment' or 'region'. The kind
+ /// is used to categorize folding ranges and used by commands like 'Fold all comments'.
+ /// See [FoldingRangeKind] for an enumeration of standardized kinds.
+ pub kind: Option<CustomStringEnum<FoldingRangeKind>>,
+
+ /// The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line.
+ pub start_character: Option<u32>,
+
+ /// The zero-based start line of the range to fold. The folded area starts after the line's last character.
+ /// To be valid, the end must be zero or larger and smaller than the number of lines in the document.
+ pub start_line: u32,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRangeRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeclarationParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeclarationRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// A parameter literal used in selection range requests.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SelectionRangeParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The positions inside the text document.
+ pub positions: Vec<Position>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SelectionRangeRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressCreateParams {
+ /// The token to be used to report progress.
+ pub token: ProgressToken,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressCancelParams {
+ /// The token to be used to report progress.
+ pub token: ProgressToken,
+}
+
+/// The parameter of a `textDocument/prepareCallHierarchy` request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyPrepareParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents programming constructs like functions or constructors in the context
+/// of call hierarchy.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyItem {
+ /// A data entry field that is preserved between a call hierarchy prepare and
+ /// incoming calls or outgoing calls requests.
+ pub data: Option<LSPAny>,
+
+ /// More detail for this item, e.g. the signature of a function.
+ pub detail: Option<String>,
+
+ /// The kind of this item.
+ pub kind: SymbolKind,
+
+ /// The name of this item.
+ pub name: String,
+
+ /// The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
+ pub range: Range,
+
+ /// The range that should be selected and revealed when this symbol is being picked, e.g. the name of a function.
+ /// Must be contained by the [`range`][`CallHierarchyItem::range`].
+ pub selection_range: Range,
+
+ /// Tags for this item.
+ pub tags: Option<Vec<SymbolTag>>,
+
+ /// The resource identifier of this item.
+ pub uri: String,
+}
+
+/// Call hierarchy options used during static or dynamic registration.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// The parameter of a `callHierarchy/incomingCalls` request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyIncomingCallsParams {
+ pub item: CallHierarchyItem,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents an incoming call, e.g. a caller of a method or constructor.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyIncomingCall {
+ /// The item that makes the call.
+ pub from: CallHierarchyItem,
+
+ /// The ranges at which the calls appear. This is relative to the caller
+ /// denoted by [`this.from`][`CallHierarchyIncomingCall::from`].
+ pub from_ranges: Vec<Range>,
+}
+
+/// The parameter of a `callHierarchy/outgoingCalls` request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyOutgoingCallsParams {
+ pub item: CallHierarchyItem,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyOutgoingCall {
+ /// The range at which this item is called. This is the range relative to the caller, e.g the item
+ /// passed to [`provideCallHierarchyOutgoingCalls`][`CallHierarchyItemProvider::provideCallHierarchyOutgoingCalls`]
+ /// and not [`this.to`][`CallHierarchyOutgoingCall::to`].
+ pub from_ranges: Vec<Range>,
+
+ /// The item that is called.
+ pub to: CallHierarchyItem,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokens {
+ /// The actual tokens.
+ pub data: Vec<u32>,
+
+ /// An optional result id. If provided and clients support delta updating
+ /// the client will include the result id in the next semantic token request.
+ /// A server can then instead of computing all semantic tokens again simply
+ /// send a delta.
+ pub result_id: Option<String>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensPartialResult {
+ pub data: Vec<u32>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructOptions {
+ /// The server supports deltas for full documents.
+ pub delta: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// Server supports providing semantic tokens for a full document.
+ pub full: Option<OR2<bool, StructOptions>>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+
+ /// The legend used by the server
+ pub legend: SemanticTokensLegend,
+
+ /// Server supports providing semantic tokens for a specific range
+ /// of a document.
+ pub range: Option<OR2<bool, LSPObject>>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensDeltaParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The result id of a previous response. The result Id can either point to a full response
+ /// or a delta response depending on what was received last.
+ pub previous_result_id: String,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensDelta {
+ /// The semantic token edits to transform a previous result into a new result.
+ pub edits: Vec<SemanticTokensEdit>,
+
+ pub result_id: Option<String>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensDeltaPartialResult {
+ pub edits: Vec<SemanticTokensEdit>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensRangeParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The range the semantic tokens are requested for.
+ pub range: Range,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Params to show a resource in the UI.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowDocumentParams {
+ /// Indicates to show the resource in an external program.
+ /// To show, for example, `https://code.visualstudio.com/`
+ /// in the default WEB browser set `external` to `true`.
+ pub external: Option<bool>,
+
+ /// An optional selection range if the document is a text
+ /// document. Clients might ignore the property if an
+ /// external program is started or the file is not a text
+ /// file.
+ pub selection: Option<Range>,
+
+ /// An optional property to indicate whether the editor
+ /// showing the document should take focus or not.
+ /// Clients might ignore this property if an external
+ /// program is started.
+ pub take_focus: Option<bool>,
+
+ /// The uri to show.
+ pub uri: String,
+}
+
+/// The result of a showDocument request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowDocumentResult {
+ /// A boolean indicating if the show was successful.
+ pub success: bool,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LinkedEditingRangeParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// The result of a linked editing range request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LinkedEditingRanges {
+ /// A list of ranges that can be edited together. The ranges must have
+ /// identical length and contain identical text content. The ranges cannot overlap.
+ pub ranges: Vec<Range>,
+
+ /// An optional word pattern (regular expression) that describes valid contents for
+ /// the given ranges. If no pattern is provided, the client configuration's word
+ /// pattern will be used.
+ pub word_pattern: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LinkedEditingRangeRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// The parameters sent in notifications/requests for user-initiated creation of
+/// files.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CreateFilesParams {
+ /// An array of all files/folders created in this operation.
+ pub files: Vec<FileCreate>,
+}
+
+/// A workspace edit represents changes to many resources managed in the workspace. The edit
+/// should either provide `changes` or `documentChanges`. If documentChanges are present
+/// they are preferred over `changes` if the client can handle versioned document edits.
+///
+/// Since version 3.13.0 a workspace edit can contain resource operations as well. If resource
+/// operations are present clients need to execute the operations in the order in which they
+/// are provided. So a workspace edit for example can consist of the following two changes:
+/// (1) a create file a.txt and (2) a text document edit which insert text into file a.txt.
+///
+/// An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will
+/// cause failure of the operation. How the client recovers from the failure is described by
+/// the client capability: `workspace.workspaceEdit.failureHandling`
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceEdit {
+ /// A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and
+ /// delete file / folder operations.
+ ///
+ /// Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`.
+ ///
+ /// @since 3.16.0
+ pub change_annotations: Option<HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>>,
+
+ /// Holds changes to existing resources.
+ pub changes: Option<HashMap<String, Vec<TextEdit>>>,
+
+ /// Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes
+ /// are either an array of `TextDocumentEdit`s to express changes to n different text documents
+ /// where each text document edit addresses a specific version of a text document. Or it can contain
+ /// above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations.
+ ///
+ /// Whether a client supports versioned document edits is expressed via
+ /// `workspace.workspaceEdit.documentChanges` client capability.
+ ///
+ /// If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then
+ /// only plain `TextEdit`s using the `changes` property are supported.
+ pub document_changes: Option<Vec<OR4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>,
+}
+
+/// The options to register for file operations.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationRegistrationOptions {
+ /// The actual filters.
+ pub filters: Vec<FileOperationFilter>,
+}
+
+/// The parameters sent in notifications/requests for user-initiated renames of
+/// files.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameFilesParams {
+ /// An array of all files/folders renamed in this operation. When a folder is renamed, only
+ /// the folder will be included, and not its children.
+ pub files: Vec<FileRename>,
+}
+
+/// The parameters sent in notifications/requests for user-initiated deletes of
+/// files.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeleteFilesParams {
+ /// An array of all files/folders deleted in this operation.
+ pub files: Vec<FileDelete>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MonikerParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Moniker definition to match LSIF 0.5 moniker definition.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Moniker {
+ /// The identifier of the moniker. The value is opaque in LSIF however
+ /// schema owners are allowed to define the structure if they want.
+ pub identifier: String,
+
+ /// The moniker kind if known.
+ pub kind: Option<MonikerKind>,
+
+ /// The scheme of the moniker. For example tsc or .Net
+ pub scheme: String,
+
+ /// The scope in which the moniker is unique
+ pub unique: UniquenessLevel,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MonikerRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// The parameter of a `textDocument/prepareTypeHierarchy` request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchyPrepareParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchyItem {
+ /// A data entry field that is preserved between a type hierarchy prepare and
+ /// supertypes or subtypes requests. It could also be used to identify the
+ /// type hierarchy in the server, helping improve the performance on
+ /// resolving supertypes and subtypes.
+ pub data: Option<LSPAny>,
+
+ /// More detail for this item, e.g. the signature of a function.
+ pub detail: Option<String>,
+
+ /// The kind of this item.
+ pub kind: SymbolKind,
+
+ /// The name of this item.
+ pub name: String,
+
+ /// The range enclosing this symbol not including leading/trailing whitespace
+ /// but everything else, e.g. comments and code.
+ pub range: Range,
+
+ /// The range that should be selected and revealed when this symbol is being
+ /// picked, e.g. the name of a function. Must be contained by the
+ /// [`range`][`TypeHierarchyItem::range`].
+ pub selection_range: Range,
+
+ /// Tags for this item.
+ pub tags: Option<Vec<SymbolTag>>,
+
+ /// The resource identifier of this item.
+ pub uri: String,
+}
+
+/// Type hierarchy options used during static or dynamic registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchyRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// The parameter of a `typeHierarchy/supertypes` request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySupertypesParams {
+ pub item: TypeHierarchyItem,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// The parameter of a `typeHierarchy/subtypes` request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySubtypesParams {
+ pub item: TypeHierarchyItem,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A parameter literal used in inline value requests.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueParams {
+ /// Additional information about the context in which inline values were
+ /// requested.
+ pub context: InlineValueContext,
+
+ /// The document range for which inline values should be computed.
+ pub range: Range,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Inline value options used during static or dynamic registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+/// A parameter literal used in inlay hint requests.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintParams {
+ /// The document range for which inlay hints should be computed.
+ pub range: Range,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Inlay hint information.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHint {
+ /// A data entry field that is preserved on an inlay hint between
+ /// a `textDocument/inlayHint` and a `inlayHint/resolve` request.
+ pub data: Option<LSPAny>,
+
+ /// The kind of this hint. Can be omitted in which case the client
+ /// should fall back to a reasonable default.
+ pub kind: Option<InlayHintKind>,
+
+ /// The label of this hint. A human readable string or an array of
+ /// InlayHintLabelPart label parts.
+ ///
+ /// *Note* that neither the string nor the label part can be empty.
+ pub label: OR2<String, Vec<InlayHintLabelPart>>,
+
+ /// Render padding before the hint.
+ ///
+ /// Note: Padding should use the editor's background color, not the
+ /// background color of the hint itself. That means padding can be used
+ /// to visually align/separate an inlay hint.
+ pub padding_left: Option<bool>,
+
+ /// Render padding after the hint.
+ ///
+ /// Note: Padding should use the editor's background color, not the
+ /// background color of the hint itself. That means padding can be used
+ /// to visually align/separate an inlay hint.
+ pub padding_right: Option<bool>,
+
+ /// The position of this hint.
+ pub position: Position,
+
+ /// Optional text edits that are performed when accepting this inlay hint.
+ ///
+ /// *Note* that edits are expected to change the document so that the inlay
+ /// hint (or its nearest variant) is now part of the document and the inlay
+ /// hint itself is now obsolete.
+ pub text_edits: Option<Vec<TextEdit>>,
+
+ /// The tooltip text when you hover over this item.
+ pub tooltip: Option<OR2<String, MarkupContent>>,
+}
+
+/// Inlay hint options used during static or dynamic registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+
+ /// The server provides support to resolve additional
+ /// information for an inlay hint item.
+ pub resolve_provider: Option<bool>,
+}
+
+/// Parameters of the document diagnostic request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentDiagnosticParams {
+ /// The additional identifier provided during registration.
+ pub identifier: Option<String>,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The result id of a previous response if provided.
+ pub previous_result_id: Option<String>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A partial result for a document diagnostic report.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentDiagnosticReportPartialResult {
+ pub related_documents:
+ HashMap<String, OR2<FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport>>,
+}
+
+/// Cancellation data returned from a diagnostic request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticServerCancellationData {
+ pub retrigger_request: bool,
+}
+
+/// Diagnostic registration options.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+
+ /// An optional identifier under which the diagnostics are
+ /// managed by the client.
+ pub identifier: Option<String>,
+
+ /// Whether the language has inter file dependencies meaning that
+ /// editing code in one file can result in a different diagnostic
+ /// set in another file. Inter file dependencies are common for
+ /// most programming languages and typically uncommon for linters.
+ pub inter_file_dependencies: bool,
+
+ /// The server provides support for workspace diagnostics as well.
+ pub workspace_diagnostics: bool,
+}
+
+/// Parameters of the workspace diagnostic request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticParams {
+ /// The additional identifier provided during registration.
+ pub identifier: Option<String>,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The currently known diagnostic reports with their
+ /// previous result ids.
+ pub previous_result_ids: Vec<PreviousResultId>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A workspace diagnostic report.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticReport {
+ pub items: Vec<WorkspaceDocumentDiagnosticReport>,
+}
+
+/// A partial result for a workspace diagnostic report.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticReportPartialResult {
+ pub items: Vec<WorkspaceDocumentDiagnosticReport>,
+}
+
+/// The params sent in an open notebook document notification.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidOpenNotebookDocumentParams {
+ /// The text documents that represent the content
+ /// of a notebook cell.
+ pub cell_text_documents: Vec<TextDocumentItem>,
+
+ /// The notebook document that got opened.
+ pub notebook_document: NotebookDocument,
+}
+
+/// The params sent in a change notebook document notification.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeNotebookDocumentParams {
+ /// The actual changes to the notebook document.
+ ///
+ /// The changes describe single state changes to the notebook document.
+ /// So if there are two changes c1 (at array index 0) and c2 (at array
+ /// index 1) for a notebook in state S then c1 moves the notebook from
+ /// S to S' and c2 from S' to S''. So c1 is computed on the state S and
+ /// c2 is computed on the state S'.
+ ///
+ /// To mirror the content of a notebook using change events use the following approach:
+ /// - start with the same initial content
+ /// - apply the 'notebookDocument/didChange' notifications in the order you receive them.
+ /// - apply the `NotebookChangeEvent`s in a single notification in the order
+ /// you receive them.
+ pub change: NotebookDocumentChangeEvent,
+
+ /// The notebook document that did change. The version number points
+ /// to the version after all provided changes have been applied. If
+ /// only the text document content of a cell changes the notebook version
+ /// doesn't necessarily have to change.
+ pub notebook_document: VersionedNotebookDocumentIdentifier,
+}
+
+/// The params sent in a save notebook document notification.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidSaveNotebookDocumentParams {
+ /// The notebook document that got saved.
+ pub notebook_document: NotebookDocumentIdentifier,
+}
+
+/// The params sent in a close notebook document notification.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidCloseNotebookDocumentParams {
+ /// The text documents that represent the content
+ /// of a notebook cell that got closed.
+ pub cell_text_documents: Vec<TextDocumentIdentifier>,
+
+ /// The notebook document that got closed.
+ pub notebook_document: NotebookDocumentIdentifier,
+}
+
+/// A parameter literal used in inline completion requests.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionParams {
+ /// Additional information about the context in which inline completions were
+ /// requested.
+ pub context: InlineCompletionContext,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents a collection of [inline completion items][InlineCompletionItem] to be presented in the editor.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionList {
+ /// The inline completion items
+ pub items: Vec<InlineCompletionItem>,
+}
+
+/// An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionItem {
+ /// An optional [Command] that is executed *after* inserting this completion.
+ pub command: Option<Command>,
+
+ /// A text that is used to decide if this inline completion should be shown. When `falsy` the [`InlineCompletionItem::insertText`] is used.
+ pub filter_text: Option<String>,
+
+ /// The text to replace the range with. Must be set.
+ pub insert_text: OR2<String, StringValue>,
+
+ /// The range to replace. Must begin and end on the same line.
+ pub range: Option<Range>,
+}
+
+/// Inline completion options used during static or dynamic registration.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RegistrationParams {
+ pub registrations: Vec<Registration>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct UnregistrationParams {
+ pub unregisterations: Vec<Unregistration>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructClientInfo {
+ /// The name of the client as defined by the client.
+ pub name: String,
+
+ /// The client's version as defined by the client.
+ pub version: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializeParams {
+ /// The capabilities provided by the client (editor or tool)
+ pub capabilities: ClientCapabilities,
+
+ /// Information about the client
+ ///
+ /// @since 3.15.0
+ pub client_info: Option<StructClientInfo>,
+
+ /// User provided initialization options.
+ pub initialization_options: Option<LSPAny>,
+
+ /// The locale the client is currently showing the user interface
+ /// in. This must not necessarily be the locale of the operating
+ /// system.
+ ///
+ /// Uses IETF language tags as the value's syntax
+ /// (See https://en.wikipedia.org/wiki/IETF_language_tag)
+ ///
+ /// @since 3.16.0
+ pub locale: Option<String>,
+
+ /// The process Id of the parent process that started
+ /// the server.
+ ///
+ /// Is `null` if the process has not been started by another process.
+ /// If the parent process is not alive then the server should exit.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub process_id: Option<i32>,
+
+ /// The rootPath of the workspace. Is null
+ /// if no folder is open.
+ ///
+ /// @deprecated in favour of rootUri.
+ #[deprecated]
+ pub root_path: Option<String>,
+
+ /// The rootUri of the workspace. Is null if no
+ /// folder is open. If both `rootPath` and `rootUri` are set
+ /// `rootUri` wins.
+ ///
+ /// @deprecated in favour of workspaceFolders.
+ #[deprecated]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub root_uri: Option<String>,
+
+ /// The initial trace setting. If omitted trace is disabled ('off').
+ pub trace: Option<TraceValues>,
+
+ /// The workspace folders configured in the client when the server starts.
+ ///
+ /// This property is only available if the client supports workspace folders.
+ /// It can be `null` if the client supports workspace folders but none are
+ /// configured.
+ ///
+ /// @since 3.6.0
+ pub workspace_folders: Option<Vec<WorkspaceFolder>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructServerInfo {
+ /// The name of the server as defined by the server.
+ pub name: String,
+
+ /// The server's version as defined by the server.
+ pub version: Option<String>,
+}
+
+/// The result returned from an initialize request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializeResult {
+ /// The capabilities the language server provides.
+ pub capabilities: ServerCapabilities,
+
+ /// Information about the server.
+ ///
+ /// @since 3.15.0
+ pub server_info: Option<StructServerInfo>,
+}
+
+/// The data type of the ResponseError if the
+/// initialize request fails.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializeError {
+ /// Indicates whether the client execute the following retry logic:
+ /// (1) show the message provided by the ResponseError to the user
+ /// (2) user selects retry or cancel
+ /// (3) if user selected retry the initialize method is sent again.
+ pub retry: bool,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializedParams {}
+
+/// The parameters of a change configuration notification.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeConfigurationParams {
+ /// The actual changed settings
+ pub settings: LSPAny,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeConfigurationRegistrationOptions {
+ pub section: Option<OR2<String, Vec<String>>>,
+}
+
+/// The parameters of a notification message.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowMessageParams {
+ /// The actual message.
+ pub message: String,
+
+ /// The message type. See [MessageType]
+ #[serde(rename = "type")]
+ pub type_: MessageType,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowMessageRequestParams {
+ /// The message action items to present.
+ pub actions: Option<Vec<MessageActionItem>>,
+
+ /// The actual message.
+ pub message: String,
+
+ /// The message type. See [MessageType]
+ #[serde(rename = "type")]
+ pub type_: MessageType,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MessageActionItem {
+ /// A short title like 'Retry', 'Open Log' etc.
+ pub title: String,
+}
+
+/// The log message parameters.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LogMessageParams {
+ /// The actual message.
+ pub message: String,
+
+ /// The message type. See [MessageType]
+ #[serde(rename = "type")]
+ pub type_: MessageType,
+}
+
+/// The parameters sent in an open text document notification
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidOpenTextDocumentParams {
+ /// The document that was opened.
+ pub text_document: TextDocumentItem,
+}
+
+/// The change text document notification's parameters.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeTextDocumentParams {
+ /// The actual content changes. The content changes describe single state changes
+ /// to the document. So if there are two content changes c1 (at array index 0) and
+ /// c2 (at array index 1) for a document in state S then c1 moves the document from
+ /// S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed
+ /// on the state S'.
+ ///
+ /// To mirror the content of a document using change events use the following approach:
+ /// - start with the same initial content
+ /// - apply the 'textDocument/didChange' notifications in the order you receive them.
+ /// - apply the `TextDocumentContentChangeEvent`s in a single notification in the order
+ /// you receive them.
+ pub content_changes: Vec<TextDocumentContentChangeEvent>,
+
+ /// The document that did change. The version number points
+ /// to the version after all provided content changes have
+ /// been applied.
+ pub text_document: VersionedTextDocumentIdentifier,
+}
+
+/// Describe options to be used when registered for text document change events.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentChangeRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// How documents are synced to the server.
+ pub sync_kind: TextDocumentSyncKind,
+}
+
+/// The parameters sent in a close text document notification
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidCloseTextDocumentParams {
+ /// The document that was closed.
+ pub text_document: TextDocumentIdentifier,
+}
+
+/// The parameters sent in a save text document notification
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidSaveTextDocumentParams {
+ /// Optional the content when saved. Depends on the includeText value
+ /// when the save notification was requested.
+ pub text: Option<String>,
+
+ /// The document that was saved.
+ pub text_document: TextDocumentIdentifier,
+}
+
+/// Save registration options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSaveRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The client is supposed to include the content on save.
+ pub include_text: Option<bool>,
+}
+
+/// The parameters sent in a will save text document notification.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WillSaveTextDocumentParams {
+ /// The 'TextDocumentSaveReason'.
+ pub reason: TextDocumentSaveReason,
+
+ /// The document that will be saved.
+ pub text_document: TextDocumentIdentifier,
+}
+
+/// A text edit applicable to a text document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextEdit {
+ /// The string to be inserted. For delete operations use an
+ /// empty string.
+ pub new_text: String,
+
+ /// The range of the text document to be manipulated. To insert
+ /// text into a document create a range where start === end.
+ pub range: Range,
+}
+
+/// The watched files change notification's parameters.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeWatchedFilesParams {
+ /// The actual file events.
+ pub changes: Vec<FileEvent>,
+}
+
+/// Describe options to be used when registered for text document change events.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeWatchedFilesRegistrationOptions {
+ /// The watchers to register.
+ pub watchers: Vec<FileSystemWatcher>,
+}
+
+/// The publish diagnostic notification's parameters.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct PublishDiagnosticsParams {
+ /// An array of diagnostic information items.
+ pub diagnostics: Vec<Diagnostic>,
+
+ /// The URI for which diagnostic information is reported.
+ pub uri: String,
+
+ /// Optional the version number of the document the diagnostics are published for.
+ ///
+ /// @since 3.15.0
+ pub version: Option<i32>,
+}
+
+/// Completion parameters
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionParams {
+ /// The completion context. This is only available it the client specifies
+ /// to send this using the client capability `textDocument.completion.contextSupport === true`
+ pub context: Option<CompletionContext>,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A completion item represents a text snippet that is
+/// proposed to complete text that is being typed.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionItem {
+ /// An optional array of additional [text edits][TextEdit] that are applied when
+ /// selecting this completion. Edits must not overlap (including the same insert position)
+ /// with the main [edit][`CompletionItem::textEdit`] nor with themselves.
+ ///
+ /// Additional text edits should be used to change text unrelated to the current cursor position
+ /// (for example adding an import statement at the top of the file if the completion item will
+ /// insert an unqualified type).
+ pub additional_text_edits: Option<Vec<TextEdit>>,
+
+ /// An optional [command][Command] that is executed *after* inserting this completion. *Note* that
+ /// additional modifications to the current document should be described with the
+ /// [additionalTextEdits][`CompletionItem::additionalTextEdits`]-property.
+ pub command: Option<Command>,
+
+ /// An optional set of characters that when pressed while this completion is active will accept it first and
+ /// then type that character. *Note* that all commit characters should have `length=1` and that superfluous
+ /// characters will be ignored.
+ pub commit_characters: Option<Vec<String>>,
+
+ /// A data entry field that is preserved on a completion item between a
+ /// [CompletionRequest] and a [CompletionResolveRequest].
+ pub data: Option<LSPAny>,
+
+ /// Indicates if this item is deprecated.
+ /// @deprecated Use `tags` instead.
+ #[deprecated]
+ pub deprecated: Option<bool>,
+
+ /// A human-readable string with additional information
+ /// about this item, like type or symbol information.
+ pub detail: Option<String>,
+
+ /// A human-readable string that represents a doc-comment.
+ pub documentation: Option<OR2<String, MarkupContent>>,
+
+ /// A string that should be used when filtering a set of
+ /// completion items. When `falsy` the [label][`CompletionItem::label`]
+ /// is used.
+ pub filter_text: Option<String>,
+
+ /// A string that should be inserted into a document when selecting
+ /// this completion. When `falsy` the [label][`CompletionItem::label`]
+ /// is used.
+ ///
+ /// The `insertText` is subject to interpretation by the client side.
+ /// Some tools might not take the string literally. For example
+ /// VS Code when code complete is requested in this example
+ /// `con<cursor position>` and a completion item with an `insertText` of
+ /// `console` is provided it will only insert `sole`. Therefore it is
+ /// recommended to use `textEdit` instead since it avoids additional client
+ /// side interpretation.
+ pub insert_text: Option<String>,
+
+ /// The format of the insert text. The format applies to both the
+ /// `insertText` property and the `newText` property of a provided
+ /// `textEdit`. If omitted defaults to `InsertTextFormat.PlainText`.
+ ///
+ /// Please note that the insertTextFormat doesn't apply to
+ /// `additionalTextEdits`.
+ pub insert_text_format: Option<InsertTextFormat>,
+
+ /// How whitespace and indentation is handled during completion
+ /// item insertion. If not provided the clients default value depends on
+ /// the `textDocument.completion.insertTextMode` client capability.
+ ///
+ /// @since 3.16.0
+ pub insert_text_mode: Option<InsertTextMode>,
+
+ /// The kind of this completion item. Based of the kind
+ /// an icon is chosen by the editor.
+ pub kind: Option<CompletionItemKind>,
+
+ /// The label of this completion item.
+ ///
+ /// The label property is also by default the text that
+ /// is inserted when selecting this completion.
+ ///
+ /// If label details are provided the label itself should
+ /// be an unqualified name of the completion item.
+ pub label: String,
+
+ /// Additional details for the label
+ ///
+ /// @since 3.17.0
+ pub label_details: Option<CompletionItemLabelDetails>,
+
+ /// Select this item when showing.
+ ///
+ /// *Note* that only one completion item can be selected and that the
+ /// tool / client decides which item that is. The rule is that the *first*
+ /// item of those that match best is selected.
+ pub preselect: Option<bool>,
+
+ /// A string that should be used when comparing this item
+ /// with other items. When `falsy` the [label][`CompletionItem::label`]
+ /// is used.
+ pub sort_text: Option<String>,
+
+ /// Tags for this completion item.
+ ///
+ /// @since 3.15.0
+ pub tags: Option<Vec<CompletionItemTag>>,
+
+ /// An [edit][TextEdit] which is applied to a document when selecting
+ /// this completion. When an edit is provided the value of
+ /// [insertText][`CompletionItem::insertText`] is ignored.
+ ///
+ /// Most editors support two different operations when accepting a completion
+ /// item. One is to insert a completion text and the other is to replace an
+ /// existing text with a completion text. Since this can usually not be
+ /// predetermined by a server it can report both ranges. Clients need to
+ /// signal support for `InsertReplaceEdits` via the
+ /// `textDocument.completion.insertReplaceSupport` client capability
+ /// property.
+ ///
+ /// *Note 1:* The text edit's range as well as both ranges from an insert
+ /// replace edit must be a [single line] and they must contain the position
+ /// at which completion has been requested.
+ /// *Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range
+ /// must be a prefix of the edit's replace range, that means it must be
+ /// contained and starting at the same position.
+ ///
+ /// @since 3.16.0 additional type `InsertReplaceEdit`
+ pub text_edit: Option<OR2<TextEdit, InsertReplaceEdit>>,
+
+ /// The edit text used if the completion item is part of a CompletionList and
+ /// CompletionList defines an item default for the text edit range.
+ ///
+ /// Clients will only honor this property if they opt into completion list
+ /// item defaults using the capability `completionList.itemDefaults`.
+ ///
+ /// If not provided and a list's default range is provided the label
+ /// property is used as a text.
+ ///
+ /// @since 3.17.0
+ pub text_edit_text: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructInsert {
+ pub insert: Range,
+
+ pub replace: Range,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructItemDefaults {
+ /// A default commit character set.
+ ///
+ /// @since 3.17.0
+ pub commit_characters: Option<Vec<String>>,
+
+ /// A default edit range.
+ ///
+ /// @since 3.17.0
+ pub edit_range: Option<OR2<Range, StructInsert>>,
+
+ /// A default insert text format.
+ ///
+ /// @since 3.17.0
+ pub insert_text_format: Option<InsertTextFormat>,
+
+ /// A default insert text mode.
+ ///
+ /// @since 3.17.0
+ pub insert_text_mode: Option<InsertTextMode>,
+
+ /// A default data value.
+ ///
+ /// @since 3.17.0
+ pub data: Option<LSPAny>,
+}
+
+/// Represents a collection of [completion items][CompletionItem] to be presented
+/// in the editor.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionList {
+ /// This list it not complete. Further typing results in recomputing this list.
+ ///
+ /// Recomputed lists have all their items replaced (not appended) in the
+ /// incomplete completion sessions.
+ pub is_incomplete: bool,
+
+ /// In many cases the items of an actual completion result share the same
+ /// value for properties like `commitCharacters` or the range of a text
+ /// edit. A completion list can therefore define item defaults which will
+ /// be used if a completion item itself doesn't specify the value.
+ ///
+ /// If a completion list specifies a default value and a completion item
+ /// also specifies a corresponding value the one from the item is used.
+ ///
+ /// Servers are only allowed to return default values if the client
+ /// signals support for this via the `completionList.itemDefaults`
+ /// capability.
+ ///
+ /// @since 3.17.0
+ pub item_defaults: Option<StructItemDefaults>,
+
+ /// The completion items.
+ pub items: Vec<CompletionItem>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCompletionItem {
+ /// The server has support for completion item label
+ /// details (see also `CompletionItemLabelDetails`) when
+ /// receiving a completion item in a resolve call.
+ ///
+ /// @since 3.17.0
+ pub label_details_support: Option<bool>,
+}
+
+/// Registration options for a [CompletionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionRegistrationOptions {
+ /// The list of all possible characters that commit a completion. This field can be used
+ /// if clients don't support individual commit characters per completion item. See
+ /// `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`
+ ///
+ /// If a server provides both `allCommitCharacters` and commit characters on an individual
+ /// completion item the ones on the completion item win.
+ ///
+ /// @since 3.2.0
+ pub all_commit_characters: Option<Vec<String>>,
+
+ /// The server supports the following `CompletionItem` specific
+ /// capabilities.
+ ///
+ /// @since 3.17.0
+ pub completion_item: Option<StructCompletionItem>,
+
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The server provides support to resolve additional
+ /// information for a completion item.
+ pub resolve_provider: Option<bool>,
+
+ /// Most tools trigger completion request automatically without explicitly requesting
+ /// it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
+ /// starts to type an identifier. For example if the user types `c` in a JavaScript file
+ /// code complete will automatically pop up present `console` besides others as a
+ /// completion item. Characters that make up identifiers don't need to be listed here.
+ ///
+ /// If code complete should automatically be trigger on characters not being valid inside
+ /// an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.
+ pub trigger_characters: Option<Vec<String>>,
+}
+
+/// Parameters for a [HoverRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct HoverParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// The result of a hover request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Hover {
+ /// The hover's content
+ pub contents: OR3<MarkupContent, MarkedString, Vec<MarkedString>>,
+
+ /// An optional range inside the text document that is used to
+ /// visualize the hover, e.g. by changing the background color.
+ pub range: Option<Range>,
+}
+
+/// Registration options for a [HoverRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct HoverRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// Parameters for a [SignatureHelpRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelpParams {
+ /// The signature help context. This is only available if the client specifies
+ /// to send this using the client capability `textDocument.signatureHelp.contextSupport === true`
+ ///
+ /// @since 3.15.0
+ pub context: Option<SignatureHelpContext>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Signature help represents the signature of something
+/// callable. There can be multiple signature but only one
+/// active and only one active parameter.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelp {
+ /// The active parameter of the active signature. If omitted or the value
+ /// lies outside the range of `signatures[activeSignature].parameters`
+ /// defaults to 0 if the active signature has parameters. If
+ /// the active signature has no parameters it is ignored.
+ /// In future version of the protocol this property might become
+ /// mandatory to better express the active parameter if the
+ /// active signature does have any.
+ pub active_parameter: Option<u32>,
+
+ /// The active signature. If omitted or the value lies outside the
+ /// range of `signatures` the value defaults to zero or is ignored if
+ /// the `SignatureHelp` has no signatures.
+ ///
+ /// Whenever possible implementors should make an active decision about
+ /// the active signature and shouldn't rely on a default value.
+ ///
+ /// In future version of the protocol this property might become
+ /// mandatory to better express this.
+ pub active_signature: Option<u32>,
+
+ /// One or more signatures.
+ pub signatures: Vec<SignatureInformation>,
+}
+
+/// Registration options for a [SignatureHelpRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelpRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// List of characters that re-trigger signature help.
+ ///
+ /// These trigger characters are only active when signature help is already showing. All trigger characters
+ /// are also counted as re-trigger characters.
+ ///
+ /// @since 3.15.0
+ pub retrigger_characters: Option<Vec<String>>,
+
+ /// List of characters that trigger signature help automatically.
+ pub trigger_characters: Option<Vec<String>>,
+}
+
+/// Parameters for a [DefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DefinitionParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [DefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DefinitionRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// Parameters for a [ReferencesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ReferenceParams {
+ pub context: ReferenceContext,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [ReferencesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ReferenceRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// Parameters for a [DocumentHighlightRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentHighlightParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A document highlight is a range inside a text document which deserves
+/// special attention. Usually a document highlight is visualized by changing
+/// the background color of its range.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentHighlight {
+ /// The highlight kind, default is [text][`DocumentHighlightKind::Text`].
+ pub kind: Option<DocumentHighlightKind>,
+
+ /// The range this highlight applies to.
+ pub range: Range,
+}
+
+/// Registration options for a [DocumentHighlightRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentHighlightRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// Parameters for a [DocumentSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentSymbolParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents information about programming constructs like variables, classes,
+/// interfaces etc.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SymbolInformation {
+ /// The name of the symbol containing this symbol. This information is for
+ /// user interface purposes (e.g. to render a qualifier in the user interface
+ /// if necessary). It can't be used to re-infer a hierarchy for the document
+ /// symbols.
+ pub container_name: Option<String>,
+
+ /// Indicates if this symbol is deprecated.
+ ///
+ /// @deprecated Use tags instead
+ #[deprecated]
+ pub deprecated: Option<bool>,
+
+ /// The kind of this symbol.
+ pub kind: SymbolKind,
+
+ /// The location of this symbol. The location's range is used by a tool
+ /// to reveal the location in the editor. If the symbol is selected in the
+ /// tool the range's start information is used to position the cursor. So
+ /// the range usually spans more than the actual symbol's name and does
+ /// normally include things like visibility modifiers.
+ ///
+ /// The range doesn't have to denote a node range in the sense of an abstract
+ /// syntax tree. It can therefore not be used to re-construct a hierarchy of
+ /// the symbols.
+ pub location: Location,
+
+ /// The name of this symbol.
+ pub name: String,
+
+ /// Tags for this symbol.
+ ///
+ /// @since 3.16.0
+ pub tags: Option<Vec<SymbolTag>>,
+}
+
+/// Represents programming constructs like variables, classes, interfaces etc.
+/// that appear in a document. Document symbols can be hierarchical and they
+/// have two ranges: one that encloses its definition and one that points to
+/// its most interesting range, e.g. the range of an identifier.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentSymbol {
+ /// Children of this symbol, e.g. properties of a class.
+ pub children: Option<Vec<DocumentSymbol>>,
+
+ /// Indicates if this symbol is deprecated.
+ ///
+ /// @deprecated Use tags instead
+ #[deprecated]
+ pub deprecated: Option<bool>,
+
+ /// More detail for this symbol, e.g the signature of a function.
+ pub detail: Option<String>,
+
+ /// The kind of this symbol.
+ pub kind: SymbolKind,
+
+ /// The name of this symbol. Will be displayed in the user interface and therefore must not be
+ /// an empty string or a string only consisting of white spaces.
+ pub name: String,
+
+ /// The range enclosing this symbol not including leading/trailing whitespace but everything else
+ /// like comments. This information is typically used to determine if the clients cursor is
+ /// inside the symbol to reveal in the symbol in the UI.
+ pub range: Range,
+
+ /// The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
+ /// Must be contained by the `range`.
+ pub selection_range: Range,
+
+ /// Tags for this document symbol.
+ ///
+ /// @since 3.16.0
+ pub tags: Option<Vec<SymbolTag>>,
+}
+
+/// Registration options for a [DocumentSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentSymbolRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// A human-readable string that is shown when multiple outlines trees
+ /// are shown for the same document.
+ ///
+ /// @since 3.16.0
+ pub label: Option<String>,
+}
+
+/// The parameters of a [CodeActionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionParams {
+ /// Context carrying additional information.
+ pub context: CodeActionContext,
+
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The range for which the command was invoked.
+ pub range: Range,
+
+ /// The document in which the command was invoked.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Represents a reference to a command. Provides a title which
+/// will be used to represent a command in the UI and, optionally,
+/// an array of arguments which will be passed to the command handler
+/// function when invoked.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Command {
+ /// Arguments that the command handler should be
+ /// invoked with.
+ pub arguments: Option<Vec<LSPAny>>,
+
+ /// The identifier of the actual command handler.
+ pub command: String,
+
+ /// Title of the command, like `save`.
+ pub title: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructDisabled {
+ /// Human readable description of why the code action is currently disabled.
+ ///
+ /// This is displayed in the code actions UI.
+ pub reason: String,
+}
+
+/// A code action represents a change that can be performed in code, e.g. to fix a problem or
+/// to refactor code.
+///
+/// A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeAction {
+ /// A command this code action executes. If a code action
+ /// provides an edit and a command, first the edit is
+ /// executed and then the command.
+ pub command: Option<Command>,
+
+ /// A data entry field that is preserved on a code action between
+ /// a `textDocument/codeAction` and a `codeAction/resolve` request.
+ ///
+ /// @since 3.16.0
+ pub data: Option<LSPAny>,
+
+ /// The diagnostics that this code action resolves.
+ pub diagnostics: Option<Vec<Diagnostic>>,
+
+ /// Marks that the code action cannot currently be applied.
+ ///
+ /// Clients should follow the following guidelines regarding disabled code actions:
+ ///
+ /// - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action)
+ /// code action menus.
+ ///
+ /// - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type
+ /// of code action, such as refactorings.
+ ///
+ /// - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions)
+ /// that auto applies a code action and only disabled code actions are returned, the client should show the user an
+ /// error message with `reason` in the editor.
+ ///
+ /// @since 3.16.0
+ pub disabled: Option<StructDisabled>,
+
+ /// The workspace edit this code action performs.
+ pub edit: Option<WorkspaceEdit>,
+
+ /// Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted
+ /// by keybindings.
+ ///
+ /// A quick fix should be marked preferred if it properly addresses the underlying error.
+ /// A refactoring should be marked preferred if it is the most reasonable choice of actions to take.
+ ///
+ /// @since 3.15.0
+ pub is_preferred: Option<bool>,
+
+ /// The kind of the code action.
+ ///
+ /// Used to filter code actions.
+ pub kind: Option<CustomStringEnum<CodeActionKind>>,
+
+ /// A short, human-readable, title for this code action.
+ pub title: String,
+}
+
+/// Registration options for a [CodeActionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionRegistrationOptions {
+ /// CodeActionKinds that this server may return.
+ ///
+ /// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
+ /// may list out every specific kind they provide.
+ pub code_action_kinds: Option<Vec<CustomStringEnum<CodeActionKind>>>,
+
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// The server provides support to resolve additional
+ /// information for a code action.
+ ///
+ /// @since 3.16.0
+ pub resolve_provider: Option<bool>,
+}
+
+/// The parameters of a [WorkspaceSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// A query string to filter symbols by. Clients may send an empty
+ /// string here to request all symbols.
+ pub query: String,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructUri {
+ pub uri: String,
+}
+
+/// A special workspace symbol that supports locations without a range.
+///
+/// See also SymbolInformation.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbol {
+ /// The name of the symbol containing this symbol. This information is for
+ /// user interface purposes (e.g. to render a qualifier in the user interface
+ /// if necessary). It can't be used to re-infer a hierarchy for the document
+ /// symbols.
+ pub container_name: Option<String>,
+
+ /// A data entry field that is preserved on a workspace symbol between a
+ /// workspace symbol request and a workspace symbol resolve request.
+ pub data: Option<LSPAny>,
+
+ /// The kind of this symbol.
+ pub kind: SymbolKind,
+
+ /// The location of the symbol. Whether a server is allowed to
+ /// return a location without a range depends on the client
+ /// capability `workspace.symbol.resolveSupport`.
+ ///
+ /// See SymbolInformation#location for more details.
+ pub location: OR2<Location, StructUri>,
+
+ /// The name of this symbol.
+ pub name: String,
+
+ /// Tags for this symbol.
+ ///
+ /// @since 3.16.0
+ pub tags: Option<Vec<SymbolTag>>,
+}
+
+/// Registration options for a [WorkspaceSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolRegistrationOptions {
+ /// The server provides support to resolve additional
+ /// information for a workspace symbol.
+ ///
+ /// @since 3.17.0
+ pub resolve_provider: Option<bool>,
+}
+
+/// The parameters of a [CodeLensRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The document to request code lens for.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A code lens represents a [command][Command] that should be shown along with
+/// source text, like the number of references, a way to run tests, etc.
+///
+/// A code lens is _unresolved_ when no command is associated to it. For performance
+/// reasons the creation of a code lens and resolving should be done in two stages.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLens {
+ /// The command this code lens represents.
+ pub command: Option<Command>,
+
+ /// A data entry field that is preserved on a code lens item between
+ /// a [CodeLensRequest] and a [CodeLensResolveRequest]
+ pub data: Option<LSPAny>,
+
+ /// The range in which this code lens is valid. Should only span a single line.
+ pub range: Range,
+}
+
+/// Registration options for a [CodeLensRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// Code lens has a resolve provider as well.
+ pub resolve_provider: Option<bool>,
+}
+
+/// The parameters of a [DocumentLinkRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+
+ /// The document to provide document links for.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// A document link is a range in a text document that links to an internal or external resource, like another
+/// text document or a web site.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLink {
+ /// A data entry field that is preserved on a document link between a
+ /// DocumentLinkRequest and a DocumentLinkResolveRequest.
+ pub data: Option<LSPAny>,
+
+ /// The range this link applies to.
+ pub range: Range,
+
+ /// The uri this link points to. If missing a resolve request is sent later.
+ pub target: Option<String>,
+
+ /// The tooltip text when you hover over this link.
+ ///
+ /// If a tooltip is provided, is will be displayed in a string that includes instructions on how to
+ /// trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS,
+ /// user settings, and localization.
+ ///
+ /// @since 3.15.0
+ pub tooltip: Option<String>,
+}
+
+/// Registration options for a [DocumentLinkRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// Document links have a resolve provider as well.
+ pub resolve_provider: Option<bool>,
+}
+
+/// The parameters of a [DocumentFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentFormattingParams {
+ /// The format options.
+ pub options: FormattingOptions,
+
+ /// The document to format.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [DocumentFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentFormattingRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+}
+
+/// The parameters of a [DocumentRangeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentRangeFormattingParams {
+ /// The format options
+ pub options: FormattingOptions,
+
+ /// The range to format
+ pub range: Range,
+
+ /// The document to format.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [DocumentRangeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentRangeFormattingRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// Whether the server supports formatting multiple ranges at once.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub ranges_support: Option<bool>,
+}
+
+/// The parameters of a [DocumentRangesFormattingRequest].
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentRangesFormattingParams {
+ /// The format options
+ pub options: FormattingOptions,
+
+ /// The ranges to format
+ pub ranges: Vec<Range>,
+
+ /// The document to format.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// The parameters of a [DocumentOnTypeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentOnTypeFormattingParams {
+ /// The character that has been typed that triggered the formatting
+ /// on type request. That is not necessarily the last character that
+ /// got inserted into the document since the client could auto insert
+ /// characters as well (e.g. like automatic brace completion).
+ pub ch: String,
+
+ /// The formatting options.
+ pub options: FormattingOptions,
+
+ /// The position around which the on type formatting should happen.
+ /// This is not necessarily the exact position where the character denoted
+ /// by the property `ch` got typed.
+ pub position: Position,
+
+ /// The document to format.
+ pub text_document: TextDocumentIdentifier,
+}
+
+/// Registration options for a [DocumentOnTypeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentOnTypeFormattingRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// A character on which formatting should be triggered, like `{`.
+ pub first_trigger_character: String,
+
+ /// More trigger characters.
+ pub more_trigger_character: Option<Vec<String>>,
+}
+
+/// The parameters of a [RenameRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameParams {
+ /// The new name of the symbol. If the given name is not valid the
+ /// request must return a [ResponseError] with an
+ /// appropriate message set.
+ pub new_name: String,
+
+ /// The position at which this request was sent.
+ pub position: Position,
+
+ /// The document to rename.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [RenameRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameRegistrationOptions {
+ /// A document selector to identify the scope of the registration. If set to null
+ /// the document selector provided on the client side will be used.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub document_selector: Option<DocumentSelector>,
+
+ /// Renames should be checked and tested before being executed.
+ ///
+ /// @since version 3.12.0
+ pub prepare_provider: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct PrepareRenameParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// The parameters of a [ExecuteCommandRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExecuteCommandParams {
+ /// Arguments that the command should be invoked with.
+ pub arguments: Option<Vec<LSPAny>>,
+
+ /// The identifier of the actual command handler.
+ pub command: String,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+/// Registration options for a [ExecuteCommandRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExecuteCommandRegistrationOptions {
+ /// The commands to be executed on the server
+ pub commands: Vec<String>,
+}
+
+/// The parameters passed via an apply workspace edit request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ApplyWorkspaceEditParams {
+ /// The edits to apply.
+ pub edit: WorkspaceEdit,
+
+ /// An optional label of the workspace edit. This label is
+ /// presented in the user interface for example on an undo
+ /// stack to undo the workspace edit.
+ pub label: Option<String>,
+}
+
+/// The result returned from the apply workspace edit request.
+///
+/// @since 3.17 renamed from ApplyWorkspaceEditResponse
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ApplyWorkspaceEditResult {
+ /// Indicates whether the edit was applied or not.
+ pub applied: bool,
+
+ /// Depending on the client's failure handling strategy `failedChange` might
+ /// contain the index of the change that failed. This property is only available
+ /// if the client signals a `failureHandlingStrategy` in its client capabilities.
+ pub failed_change: Option<u32>,
+
+ /// An optional textual description for why the edit was not applied.
+ /// This may be used by the server for diagnostic logging or to provide
+ /// a suitable error for a request that triggered the edit.
+ pub failure_reason: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressBegin {
+ /// Controls if a cancel button should show to allow the user to cancel the
+ /// long running operation. Clients that don't support cancellation are allowed
+ /// to ignore the setting.
+ pub cancellable: Option<bool>,
+
+ pub kind: String,
+
+ /// Optional, more detailed associated progress message. Contains
+ /// complementary information to the `title`.
+ ///
+ /// Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
+ /// If unset, the previous progress message (if any) is still valid.
+ pub message: Option<String>,
+
+ /// Optional progress percentage to display (value 100 is considered 100%).
+ /// If not provided infinite progress is assumed and clients are allowed
+ /// to ignore the `percentage` value in subsequent in report notifications.
+ ///
+ /// The value should be steadily rising. Clients are free to ignore values
+ /// that are not following this rule. The value range is [0, 100].
+ pub percentage: Option<u32>,
+
+ /// Mandatory title of the progress operation. Used to briefly inform about
+ /// the kind of operation being performed.
+ ///
+ /// Examples: "Indexing" or "Linking dependencies".
+ pub title: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressReport {
+ /// Controls enablement state of a cancel button.
+ ///
+ /// Clients that don't support cancellation or don't support controlling the button's
+ /// enablement state are allowed to ignore the property.
+ pub cancellable: Option<bool>,
+
+ pub kind: String,
+
+ /// Optional, more detailed associated progress message. Contains
+ /// complementary information to the `title`.
+ ///
+ /// Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
+ /// If unset, the previous progress message (if any) is still valid.
+ pub message: Option<String>,
+
+ /// Optional progress percentage to display (value 100 is considered 100%).
+ /// If not provided infinite progress is assumed and clients are allowed
+ /// to ignore the `percentage` value in subsequent in report notifications.
+ ///
+ /// The value should be steadily rising. Clients are free to ignore values
+ /// that are not following this rule. The value range is [0, 100]
+ pub percentage: Option<u32>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressEnd {
+ pub kind: String,
+
+ /// Optional, a final message indicating to for example indicate the outcome
+ /// of the operation.
+ pub message: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SetTraceParams {
+ pub value: TraceValues,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LogTraceParams {
+ pub message: String,
+
+ pub verbose: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CancelParams {
+ /// The request id to cancel.
+ pub id: OR2<i32, String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ProgressParams {
+ /// The progress token provided by the client or server.
+ pub token: ProgressToken,
+
+ /// The progress data.
+ pub value: LSPAny,
+}
+
+/// A parameter literal used in requests to pass a text document and a position inside that
+/// document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPositionParams {
+ /// The position inside the text document.
+ pub position: Position,
+
+ /// The text document.
+ pub text_document: TextDocumentIdentifier,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkDoneProgressParams {
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct PartialResultParams {
+ /// An optional token that a server can use to report partial results (e.g. streaming) to
+ /// the client.
+ pub partial_result_token: Option<ProgressToken>,
+}
+
+/// Represents the connection of two locations. Provides additional metadata over normal [locations][Location],
+/// including an origin range.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LocationLink {
+ /// Span of the origin of this link.
+ ///
+ /// Used as the underlined span for mouse interaction. Defaults to the word range at
+ /// the definition position.
+ pub origin_selection_range: Option<Range>,
+
+ /// The full target range of this link. If the target for example is a symbol then target range is the
+ /// range enclosing this symbol not including leading/trailing whitespace but everything else
+ /// like comments. This information is typically used to highlight the range in the editor.
+ pub target_range: Range,
+
+ /// The range that should be selected and revealed when this link is being followed, e.g the name of a function.
+ /// Must be contained by the `targetRange`. See also `DocumentSymbol#range`
+ pub target_selection_range: Range,
+
+ /// The target resource identifier of this link.
+ pub target_uri: String,
+}
+
+/// A range in a text document expressed as (zero-based) start and end positions.
+///
+/// If you want to specify a range that contains a line including the line ending
+/// character(s) then use an end position denoting the start of the next line.
+/// For example:
+/// ```ts
+/// {
+/// start: { line: 5, character: 23 }
+/// end : { line 6, character : 0 }
+/// }
+/// ```
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Range {
+ /// The range's end position.
+ pub end: Position,
+
+ /// The range's start position.
+ pub start: Position,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ImplementationOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Static registration options to be returned in the initialize
+/// request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StaticRegistrationOptions {
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeDefinitionOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// The workspace folder change event.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFoldersChangeEvent {
+ /// The array of added workspace folders
+ pub added: Vec<WorkspaceFolder>,
+
+ /// The array of the removed workspace folders
+ pub removed: Vec<WorkspaceFolder>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ConfigurationItem {
+ /// The scope to get the configuration section for.
+ pub scope_uri: Option<String>,
+
+ /// The configuration section asked for.
+ pub section: Option<String>,
+}
+
+/// A literal to identify a text document in the client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentIdentifier {
+ /// The text document's uri.
+ pub uri: String,
+}
+
+/// Represents a color in RGBA space.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Color {
+ /// The alpha component of this color in the range [0-1].
+ pub alpha: Decimal,
+
+ /// The blue component of this color in the range [0-1].
+ pub blue: Decimal,
+
+ /// The green component of this color in the range [0-1].
+ pub green: Decimal,
+
+ /// The red component of this color in the range [0-1].
+ pub red: Decimal,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentColorOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRangeOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeclarationOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Position in a text document expressed as zero-based line and character
+/// offset. Prior to 3.17 the offsets were always based on a UTF-16 string
+/// representation. So a string of the form `a𐐀b` the character offset of the
+/// character `a` is 0, the character offset of `𐐀` is 1 and the character
+/// offset of b is 3 since `𐐀` is represented using two code units in UTF-16.
+/// Since 3.17 clients and servers can agree on a different string encoding
+/// representation (e.g. UTF-8). The client announces it's supported encoding
+/// via the client capability [`general.positionEncodings`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#clientCapabilities).
+/// The value is an array of position encodings the client supports, with
+/// decreasing preference (e.g. the encoding at index `0` is the most preferred
+/// one). To stay backwards compatible the only mandatory encoding is UTF-16
+/// represented via the string `utf-16`. The server can pick one of the
+/// encodings offered by the client and signals that encoding back to the
+/// client via the initialize result's property
+/// [`capabilities.positionEncoding`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#serverCapabilities). If the string value
+/// `utf-16` is missing from the client's capability `general.positionEncodings`
+/// servers can safely assume that the client supports UTF-16. If the server
+/// omits the position encoding in its initialize result the encoding defaults
+/// to the string value `utf-16`. Implementation considerations: since the
+/// conversion from one encoding into another requires the content of the
+/// file / line the conversion is best done where the file is read which is
+/// usually on the server side.
+///
+/// Positions are line end character agnostic. So you can not specify a position
+/// that denotes `\r|\n` or `\n|` where `|` represents the character offset.
+///
+/// @since 3.17.0 - support for negotiated position encoding.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Position {
+ /// Character offset on a line in a document (zero-based).
+ ///
+ /// The meaning of this offset is determined by the negotiated
+ /// `PositionEncodingKind`.
+ ///
+ /// If the character value is greater than the line length it defaults back to the
+ /// line length.
+ pub character: u32,
+
+ /// Line position in a document (zero-based).
+ ///
+ /// If a line number is greater than the number of lines in a document, it defaults back to the number of lines in the document.
+ /// If a line number is negative, it defaults to 0.
+ pub line: u32,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SelectionRangeOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Call hierarchy options used during static registration.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensOptions {
+ /// Server supports providing semantic tokens for a full document.
+ pub full: Option<OR2<bool, StructOptions>>,
+
+ /// The legend used by the server
+ pub legend: SemanticTokensLegend,
+
+ /// Server supports providing semantic tokens for a specific range
+ /// of a document.
+ pub range: Option<OR2<bool, LSPObject>>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensEdit {
+ /// The elements to insert.
+ pub data: Option<Vec<u32>>,
+
+ /// The count of elements to remove.
+ pub delete_count: u32,
+
+ /// The start offset of the edit.
+ pub start: u32,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LinkedEditingRangeOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Represents information on a file/folder create.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileCreate {
+ /// A file:// URI for the location of the file/folder being created.
+ pub uri: String,
+}
+
+/// Describes textual changes on a text document. A TextDocumentEdit describes all changes
+/// on a document version Si and after they are applied move the document to version Si+1.
+/// So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any
+/// kind of ordering. However the edits must be non overlapping.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentEdit {
+ /// The edits to be applied.
+ ///
+ /// @since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a
+ /// client capability.
+ pub edits: Vec<OR2<TextEdit, AnnotatedTextEdit>>,
+
+ /// The text document to change.
+ pub text_document: OptionalVersionedTextDocumentIdentifier,
+}
+
+/// Create file operation.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CreateFile {
+ /// An optional annotation identifier describing the operation.
+ ///
+ /// @since 3.16.0
+ pub annotation_id: Option<ChangeAnnotationIdentifier>,
+
+ /// A create
+ pub kind: String,
+
+ /// Additional options
+ pub options: Option<CreateFileOptions>,
+
+ /// The resource to create.
+ pub uri: String,
+}
+
+/// Rename file operation
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameFile {
+ /// An optional annotation identifier describing the operation.
+ ///
+ /// @since 3.16.0
+ pub annotation_id: Option<ChangeAnnotationIdentifier>,
+
+ /// A rename
+ pub kind: String,
+
+ /// The new location.
+ pub new_uri: String,
+
+ /// The old (existing) location.
+ pub old_uri: String,
+
+ /// Rename options.
+ pub options: Option<RenameFileOptions>,
+}
+
+/// Delete file operation
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeleteFile {
+ /// An optional annotation identifier describing the operation.
+ ///
+ /// @since 3.16.0
+ pub annotation_id: Option<ChangeAnnotationIdentifier>,
+
+ /// A delete
+ pub kind: String,
+
+ /// Delete options.
+ pub options: Option<DeleteFileOptions>,
+
+ /// The file to delete.
+ pub uri: String,
+}
+
+/// Additional information that describes document changes.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ChangeAnnotation {
+ /// A human-readable string which is rendered less prominent in
+ /// the user interface.
+ pub description: Option<String>,
+
+ /// A human-readable string describing the actual change. The string
+ /// is rendered prominent in the user interface.
+ pub label: String,
+
+ /// A flag which indicates that user confirmation is needed
+ /// before applying the change.
+ pub needs_confirmation: Option<bool>,
+}
+
+/// A filter to describe in which file operation requests or notifications
+/// the server is interested in receiving.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationFilter {
+ /// The actual file operation pattern.
+ pub pattern: FileOperationPattern,
+
+ /// A Uri scheme like `file` or `untitled`.
+ pub scheme: Option<String>,
+}
+
+/// Represents information on a file/folder rename.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileRename {
+ /// A file:// URI for the new location of the file/folder being renamed.
+ pub new_uri: String,
+
+ /// A file:// URI for the original location of the file/folder being renamed.
+ pub old_uri: String,
+}
+
+/// Represents information on a file/folder delete.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileDelete {
+ /// A file:// URI for the location of the file/folder being deleted.
+ pub uri: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MonikerOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Type hierarchy options used during static registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchyOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueContext {
+ /// The stack frame (as a DAP Id) where the execution has stopped.
+ pub frame_id: i32,
+
+ /// The document range where execution has stopped.
+ /// Typically the end position of the range denotes the line where the inline values are shown.
+ pub stopped_location: Range,
+}
+
+/// Provide inline value as text.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueText {
+ /// The document range for which the inline value applies.
+ pub range: Range,
+
+ /// The text of the inline value.
+ pub text: String,
+}
+
+/// Provide inline value through a variable lookup.
+/// If only a range is specified, the variable name will be extracted from the underlying document.
+/// An optional variable name can be used to override the extracted name.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueVariableLookup {
+ /// How to perform the lookup.
+ pub case_sensitive_lookup: bool,
+
+ /// The document range for which the inline value applies.
+ /// The range is used to extract the variable name from the underlying document.
+ pub range: Range,
+
+ /// If specified the name of the variable to look up.
+ pub variable_name: Option<String>,
+}
+
+/// Provide an inline value through an expression evaluation.
+/// If only a range is specified, the expression will be extracted from the underlying document.
+/// An optional expression can be used to override the extracted expression.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueEvaluatableExpression {
+ /// If specified the expression overrides the extracted expression.
+ pub expression: Option<String>,
+
+ /// The document range for which the inline value applies.
+ /// The range is used to extract the evaluatable expression from the underlying document.
+ pub range: Range,
+}
+
+/// Inline value options used during static registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// An inlay hint label part allows for interactive and composite labels
+/// of inlay hints.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintLabelPart {
+ /// An optional command for this label part.
+ ///
+ /// Depending on the client capability `inlayHint.resolveSupport` clients
+ /// might resolve this property late using the resolve request.
+ pub command: Option<Command>,
+
+ /// An optional source code location that represents this
+ /// label part.
+ ///
+ /// The editor will use this location for the hover and for code navigation
+ /// features: This part will become a clickable link that resolves to the
+ /// definition of the symbol at the given location (not necessarily the
+ /// location itself), it shows the hover that shows at the given location,
+ /// and it shows a context menu with further code navigation commands.
+ ///
+ /// Depending on the client capability `inlayHint.resolveSupport` clients
+ /// might resolve this property late using the resolve request.
+ pub location: Option<Location>,
+
+ /// The tooltip text when you hover over this label part. Depending on
+ /// the client capability `inlayHint.resolveSupport` clients might resolve
+ /// this property late using the resolve request.
+ pub tooltip: Option<OR2<String, MarkupContent>>,
+
+ /// The value of this label part.
+ pub value: String,
+}
+
+/// A `MarkupContent` literal represents a string value which content is interpreted base on its
+/// kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds.
+///
+/// If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues.
+/// See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
+///
+/// Here is an example how such a string can be constructed using JavaScript / TypeScript:
+/// ```ts
+/// let markdown: MarkdownContent = {
+/// kind: MarkupKind.Markdown,
+/// value: [
+/// '# Header',
+/// 'Some text',
+/// '```typescript',
+/// 'someCode();',
+/// '```'
+/// ].join('\n')
+/// };
+/// ```
+///
+/// *Please Note* that clients might sanitize the return markdown. A client could decide to
+/// remove HTML from the markdown to avoid script execution.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MarkupContent {
+ /// The type of the Markup
+ pub kind: MarkupKind,
+
+ /// The content itself
+ pub value: String,
+}
+
+/// Inlay hint options used during static registration.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintOptions {
+ /// The server provides support to resolve additional
+ /// information for an inlay hint item.
+ pub resolve_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// A full diagnostic report with a set of related documents.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RelatedFullDocumentDiagnosticReport {
+ /// The actual items.
+ pub items: Vec<Diagnostic>,
+
+ /// A full document diagnostic report.
+ pub kind: String,
+
+ /// Diagnostics of related documents. This information is useful
+ /// in programming languages where code in a file A can generate
+ /// diagnostics in a file B which A depends on. An example of
+ /// such a language is C/C++ where marco definitions in a file
+ /// a.cpp and result in errors in a header file b.hpp.
+ ///
+ /// @since 3.17.0
+ pub related_documents: Option<
+ HashMap<String, OR2<FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport>>,
+ >,
+
+ /// An optional result id. If provided it will
+ /// be sent on the next diagnostic request for the
+ /// same document.
+ pub result_id: Option<String>,
+}
+
+/// An unchanged diagnostic report with a set of related documents.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RelatedUnchangedDocumentDiagnosticReport {
+ /// A document diagnostic report indicating
+ /// no changes to the last result. A server can
+ /// only return `unchanged` if result ids are
+ /// provided.
+ pub kind: String,
+
+ /// Diagnostics of related documents. This information is useful
+ /// in programming languages where code in a file A can generate
+ /// diagnostics in a file B which A depends on. An example of
+ /// such a language is C/C++ where marco definitions in a file
+ /// a.cpp and result in errors in a header file b.hpp.
+ ///
+ /// @since 3.17.0
+ pub related_documents: Option<
+ HashMap<String, OR2<FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport>>,
+ >,
+
+ /// A result id which will be sent on the next
+ /// diagnostic request for the same document.
+ pub result_id: String,
+}
+
+/// A diagnostic report with a full set of problems.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FullDocumentDiagnosticReport {
+ /// The actual items.
+ pub items: Vec<Diagnostic>,
+
+ /// A full document diagnostic report.
+ pub kind: String,
+
+ /// An optional result id. If provided it will
+ /// be sent on the next diagnostic request for the
+ /// same document.
+ pub result_id: Option<String>,
+}
+
+/// A diagnostic report indicating that the last returned
+/// report is still accurate.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct UnchangedDocumentDiagnosticReport {
+ /// A document diagnostic report indicating
+ /// no changes to the last result. A server can
+ /// only return `unchanged` if result ids are
+ /// provided.
+ pub kind: String,
+
+ /// A result id which will be sent on the next
+ /// diagnostic request for the same document.
+ pub result_id: String,
+}
+
+/// Diagnostic options.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticOptions {
+ /// An optional identifier under which the diagnostics are
+ /// managed by the client.
+ pub identifier: Option<String>,
+
+ /// Whether the language has inter file dependencies meaning that
+ /// editing code in one file can result in a different diagnostic
+ /// set in another file. Inter file dependencies are common for
+ /// most programming languages and typically uncommon for linters.
+ pub inter_file_dependencies: bool,
+
+ pub work_done_progress: Option<bool>,
+
+ /// The server provides support for workspace diagnostics as well.
+ pub workspace_diagnostics: bool,
+}
+
+/// A previous result id in a workspace pull request.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct PreviousResultId {
+ /// The URI for which the client knowns a
+ /// result id.
+ pub uri: String,
+
+ /// The value of the previous result id.
+ pub value: String,
+}
+
+/// A notebook document.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocument {
+ /// The cells of a notebook.
+ pub cells: Vec<NotebookCell>,
+
+ /// Additional metadata stored with the notebook
+ /// document.
+ ///
+ /// Note: should always be an object literal (e.g. LSPObject)
+ pub metadata: Option<LSPObject>,
+
+ /// The type of the notebook.
+ pub notebook_type: String,
+
+ /// The notebook document's uri.
+ pub uri: String,
+
+ /// The version number of this document (it will increase after each
+ /// change, including undo/redo).
+ pub version: i32,
+}
+
+/// An item to transfer a text document from the client to the
+/// server.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentItem {
+ /// The text document's language identifier.
+ pub language_id: String,
+
+ /// The content of the opened text document.
+ pub text: String,
+
+ /// The text document's uri.
+ pub uri: String,
+
+ /// The version number of this document (it will increase after each
+ /// change, including undo/redo).
+ pub version: i32,
+}
+
+/// A versioned notebook document identifier.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct VersionedNotebookDocumentIdentifier {
+ /// The notebook document's uri.
+ pub uri: String,
+
+ /// The version number of this notebook document.
+ pub version: i32,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructStructure {
+ /// The change to the cell array.
+ pub array: NotebookCellArrayChange,
+
+ /// Additional opened cell text documents.
+ pub did_open: Option<Vec<TextDocumentItem>>,
+
+ /// Additional closed cell text documents.
+ pub did_close: Option<Vec<TextDocumentIdentifier>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructDocument {
+ pub document: VersionedTextDocumentIdentifier,
+
+ pub changes: Vec<TextDocumentContentChangeEvent>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCells {
+ /// Changes to the cell structure to add or
+ /// remove cells.
+ pub structure: Option<StructStructure>,
+
+ /// Changes to notebook cells properties like its
+ /// kind, execution summary or metadata.
+ pub data: Option<Vec<NotebookCell>>,
+
+ /// Changes to the text content of notebook cells.
+ pub text_content: Option<Vec<StructDocument>>,
+}
+
+/// A change event for a notebook document.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentChangeEvent {
+ /// Changes to cells
+ pub cells: Option<StructCells>,
+
+ /// The changed meta data if any.
+ ///
+ /// Note: should always be an object literal (e.g. LSPObject)
+ pub metadata: Option<LSPObject>,
+}
+
+/// A literal to identify a notebook document in the client.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentIdentifier {
+ /// The notebook document's uri.
+ pub uri: String,
+}
+
+/// Provides information about the context in which an inline completion was requested.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionContext {
+ /// Provides information about the currently selected item in the autocomplete widget if it is visible.
+ pub selected_completion_info: Option<SelectedCompletionInfo>,
+
+ /// Describes how the inline completion was triggered.
+ pub trigger_kind: InlineCompletionTriggerKind,
+}
+
+/// A string value used as a snippet is a template which allows to insert text
+/// and to control the editor cursor when insertion happens.
+///
+/// A snippet can define tab stops and placeholders with `$1`, `$2`
+/// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
+/// the end of the snippet. Variables are defined with `$name` and
+/// `${name:default value}`.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StringValue {
+ /// The kind of string value.
+ pub kind: String,
+
+ /// The snippet string.
+ pub value: String,
+}
+
+/// Inline completion options used during static registration.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// General parameters to register for a notification or to register a provider.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Registration {
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again.
+ pub id: String,
+
+ /// The method / capability to register for.
+ pub method: String,
+
+ /// Options necessary for the registration.
+ pub register_options: Option<LSPAny>,
+}
+
+/// General parameters to unregister a request or notification.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Unregistration {
+ /// The id used to unregister the request or notification. Usually an id
+ /// provided during the register request.
+ pub id: String,
+
+ /// The method to unregister for.
+ pub method: String,
+}
+
+/// The initialize parameters
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct _InitializeParams {
+ /// The capabilities provided by the client (editor or tool)
+ pub capabilities: ClientCapabilities,
+
+ /// Information about the client
+ ///
+ /// @since 3.15.0
+ pub client_info: Option<StructClientInfo>,
+
+ /// User provided initialization options.
+ pub initialization_options: Option<LSPAny>,
+
+ /// The locale the client is currently showing the user interface
+ /// in. This must not necessarily be the locale of the operating
+ /// system.
+ ///
+ /// Uses IETF language tags as the value's syntax
+ /// (See https://en.wikipedia.org/wiki/IETF_language_tag)
+ ///
+ /// @since 3.16.0
+ pub locale: Option<String>,
+
+ /// The process Id of the parent process that started
+ /// the server.
+ ///
+ /// Is `null` if the process has not been started by another process.
+ /// If the parent process is not alive then the server should exit.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub process_id: Option<i32>,
+
+ /// The rootPath of the workspace. Is null
+ /// if no folder is open.
+ ///
+ /// @deprecated in favour of rootUri.
+ #[deprecated]
+ pub root_path: Option<String>,
+
+ /// The rootUri of the workspace. Is null if no
+ /// folder is open. If both `rootPath` and `rootUri` are set
+ /// `rootUri` wins.
+ ///
+ /// @deprecated in favour of workspaceFolders.
+ #[deprecated]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub root_uri: Option<String>,
+
+ /// The initial trace setting. If omitted trace is disabled ('off').
+ pub trace: Option<TraceValues>,
+
+ /// An optional token that a server can use to report work done progress.
+ pub work_done_token: Option<ProgressToken>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFoldersInitializeParams {
+ /// The workspace folders configured in the client when the server starts.
+ ///
+ /// This property is only available if the client supports workspace folders.
+ /// It can be `null` if the client supports workspace folders but none are
+ /// configured.
+ ///
+ /// @since 3.6.0
+ pub workspace_folders: Option<Vec<WorkspaceFolder>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructWorkspace {
+ /// The server supports workspace folder.
+ ///
+ /// @since 3.6.0
+ pub workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
+
+ /// The server is interested in notifications/requests for operations on files.
+ ///
+ /// @since 3.16.0
+ pub file_operations: Option<FileOperationOptions>,
+}
+
+/// Defines the capabilities provided by a language
+/// server.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ServerCapabilities {
+ /// The server provides call hierarchy support.
+ ///
+ /// @since 3.16.0
+ pub call_hierarchy_provider:
+ Option<OR3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>>,
+
+ /// The server provides code actions. CodeActionOptions may only be
+ /// specified if the client states that it supports
+ /// `codeActionLiteralSupport` in its initial `initialize` request.
+ pub code_action_provider: Option<OR2<bool, CodeActionOptions>>,
+
+ /// The server provides code lens.
+ pub code_lens_provider: Option<CodeLensOptions>,
+
+ /// The server provides color provider support.
+ pub color_provider: Option<OR3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>>,
+
+ /// The server provides completion support.
+ pub completion_provider: Option<CompletionOptions>,
+
+ /// The server provides Goto Declaration support.
+ pub declaration_provider: Option<OR3<bool, DeclarationOptions, DeclarationRegistrationOptions>>,
+
+ /// The server provides goto definition support.
+ pub definition_provider: Option<OR2<bool, DefinitionOptions>>,
+
+ /// The server has support for pull model diagnostics.
+ ///
+ /// @since 3.17.0
+ pub diagnostic_provider: Option<OR2<DiagnosticOptions, DiagnosticRegistrationOptions>>,
+
+ /// The server provides document formatting.
+ pub document_formatting_provider: Option<OR2<bool, DocumentFormattingOptions>>,
+
+ /// The server provides document highlight support.
+ pub document_highlight_provider: Option<OR2<bool, DocumentHighlightOptions>>,
+
+ /// The server provides document link support.
+ pub document_link_provider: Option<DocumentLinkOptions>,
+
+ /// The server provides document formatting on typing.
+ pub document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
+
+ /// The server provides document range formatting.
+ pub document_range_formatting_provider: Option<OR2<bool, DocumentRangeFormattingOptions>>,
+
+ /// The server provides document symbol support.
+ pub document_symbol_provider: Option<OR2<bool, DocumentSymbolOptions>>,
+
+ /// The server provides execute command support.
+ pub execute_command_provider: Option<ExecuteCommandOptions>,
+
+ /// Experimental server capabilities.
+ pub experimental: Option<LSPAny>,
+
+ /// The server provides folding provider support.
+ pub folding_range_provider:
+ Option<OR3<bool, FoldingRangeOptions, FoldingRangeRegistrationOptions>>,
+
+ /// The server provides hover support.
+ pub hover_provider: Option<OR2<bool, HoverOptions>>,
+
+ /// The server provides Goto Implementation support.
+ pub implementation_provider:
+ Option<OR3<bool, ImplementationOptions, ImplementationRegistrationOptions>>,
+
+ /// The server provides inlay hints.
+ ///
+ /// @since 3.17.0
+ pub inlay_hint_provider: Option<OR3<bool, InlayHintOptions, InlayHintRegistrationOptions>>,
+
+ /// Inline completion options used during static registration.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub inline_completion_provider: Option<OR2<bool, InlineCompletionOptions>>,
+
+ /// The server provides inline values.
+ ///
+ /// @since 3.17.0
+ pub inline_value_provider:
+ Option<OR3<bool, InlineValueOptions, InlineValueRegistrationOptions>>,
+
+ /// The server provides linked editing range support.
+ ///
+ /// @since 3.16.0
+ pub linked_editing_range_provider:
+ Option<OR3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>>,
+
+ /// The server provides moniker support.
+ ///
+ /// @since 3.16.0
+ pub moniker_provider: Option<OR3<bool, MonikerOptions, MonikerRegistrationOptions>>,
+
+ /// Defines how notebook documents are synced.
+ ///
+ /// @since 3.17.0
+ pub notebook_document_sync:
+ Option<OR2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>>,
+
+ /// The position encoding the server picked from the encodings offered
+ /// by the client via the client capability `general.positionEncodings`.
+ ///
+ /// If the client didn't provide any position encodings the only valid
+ /// value that a server can return is 'utf-16'.
+ ///
+ /// If omitted it defaults to 'utf-16'.
+ ///
+ /// @since 3.17.0
+ pub position_encoding: Option<CustomStringEnum<PositionEncodingKind>>,
+
+ /// The server provides find references support.
+ pub references_provider: Option<OR2<bool, ReferenceOptions>>,
+
+ /// The server provides rename support. RenameOptions may only be
+ /// specified if the client states that it supports
+ /// `prepareSupport` in its initial `initialize` request.
+ pub rename_provider: Option<OR2<bool, RenameOptions>>,
+
+ /// The server provides selection range support.
+ pub selection_range_provider:
+ Option<OR3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>>,
+
+ /// The server provides semantic tokens support.
+ ///
+ /// @since 3.16.0
+ pub semantic_tokens_provider:
+ Option<OR2<SemanticTokensOptions, SemanticTokensRegistrationOptions>>,
+
+ /// The server provides signature help support.
+ pub signature_help_provider: Option<SignatureHelpOptions>,
+
+ /// Defines how text documents are synced. Is either a detailed structure
+ /// defining each notification or for backwards compatibility the
+ /// TextDocumentSyncKind number.
+ pub text_document_sync: Option<OR2<TextDocumentSyncOptions, TextDocumentSyncKind>>,
+
+ /// The server provides Goto Type Definition support.
+ pub type_definition_provider:
+ Option<OR3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>>,
+
+ /// The server provides type hierarchy support.
+ ///
+ /// @since 3.17.0
+ pub type_hierarchy_provider:
+ Option<OR3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>>,
+
+ /// Workspace specific server capabilities.
+ pub workspace: Option<StructWorkspace>,
+
+ /// The server provides workspace symbol support.
+ pub workspace_symbol_provider: Option<OR2<bool, WorkspaceSymbolOptions>>,
+}
+
+/// A text document identifier to denote a specific version of a text document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct VersionedTextDocumentIdentifier {
+ /// The text document's uri.
+ pub uri: String,
+
+ /// The version number of this document.
+ pub version: i32,
+}
+
+/// Save options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SaveOptions {
+ /// The client is supposed to include the content on save.
+ pub include_text: Option<bool>,
+}
+
+/// An event describing a file change.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileEvent {
+ /// The change type.
+ #[serde(rename = "type")]
+ pub type_: FileChangeType,
+
+ /// The file's uri.
+ pub uri: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileSystemWatcher {
+ /// The glob pattern to watch. See [glob pattern][GlobPattern] for more detail.
+ ///
+ /// @since 3.17.0 support for relative patterns.
+ pub glob_pattern: GlobPattern,
+
+ /// The kind of events of interest. If omitted it defaults
+ /// to WatchKind.Create | WatchKind.Change | WatchKind.Delete
+ /// which is 7.
+ pub kind: Option<CustomIntEnum<WatchKind>>,
+}
+
+/// Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
+/// are only valid in the scope of a resource.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Diagnostic {
+ /// The diagnostic's code, which usually appear in the user interface.
+ pub code: Option<OR2<i32, String>>,
+
+ /// An optional property to describe the error code.
+ /// Requires the code field (above) to be present/not null.
+ ///
+ /// @since 3.16.0
+ pub code_description: Option<CodeDescription>,
+
+ /// A data entry field that is preserved between a `textDocument/publishDiagnostics`
+ /// notification and `textDocument/codeAction` request.
+ ///
+ /// @since 3.16.0
+ pub data: Option<LSPAny>,
+
+ /// The diagnostic's message. It usually appears in the user interface
+ pub message: String,
+
+ /// The range at which the message applies
+ pub range: Range,
+
+ /// An array of related diagnostic information, e.g. when symbol-names within
+ /// a scope collide all definitions can be marked via this property.
+ pub related_information: Option<Vec<DiagnosticRelatedInformation>>,
+
+ /// The diagnostic's severity. Can be omitted. If omitted it is up to the
+ /// client to interpret diagnostics as error, warning, info or hint.
+ pub severity: Option<DiagnosticSeverity>,
+
+ /// A human-readable string describing the source of this
+ /// diagnostic, e.g. 'typescript' or 'super lint'. It usually
+ /// appears in the user interface.
+ pub source: Option<String>,
+
+ /// Additional metadata about the diagnostic.
+ ///
+ /// @since 3.15.0
+ pub tags: Option<Vec<DiagnosticTag>>,
+}
+
+/// Contains additional information about the context in which a completion request is triggered.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionContext {
+ /// The trigger character (a single character) that has trigger code complete.
+ /// Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
+ pub trigger_character: Option<String>,
+
+ /// How the completion was triggered.
+ pub trigger_kind: CompletionTriggerKind,
+}
+
+/// Additional details for a completion item label.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionItemLabelDetails {
+ /// An optional string which is rendered less prominently after [`CompletionItem::detail`]. Should be used
+ /// for fully qualified names and file paths.
+ pub description: Option<String>,
+
+ /// An optional string which is rendered less prominently directly after [label][`CompletionItem::label`],
+ /// without any spacing. Should be used for function signatures and type annotations.
+ pub detail: Option<String>,
+}
+
+/// A special text edit to provide an insert and a replace operation.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InsertReplaceEdit {
+ /// The range if the insert is requested
+ pub insert: Range,
+
+ /// The string to be inserted.
+ pub new_text: String,
+
+ /// The range if the replace is requested.
+ pub replace: Range,
+}
+
+/// Completion options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionOptions {
+ /// The list of all possible characters that commit a completion. This field can be used
+ /// if clients don't support individual commit characters per completion item. See
+ /// `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`
+ ///
+ /// If a server provides both `allCommitCharacters` and commit characters on an individual
+ /// completion item the ones on the completion item win.
+ ///
+ /// @since 3.2.0
+ pub all_commit_characters: Option<Vec<String>>,
+
+ /// The server supports the following `CompletionItem` specific
+ /// capabilities.
+ ///
+ /// @since 3.17.0
+ pub completion_item: Option<StructCompletionItem>,
+
+ /// The server provides support to resolve additional
+ /// information for a completion item.
+ pub resolve_provider: Option<bool>,
+
+ /// Most tools trigger completion request automatically without explicitly requesting
+ /// it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
+ /// starts to type an identifier. For example if the user types `c` in a JavaScript file
+ /// code complete will automatically pop up present `console` besides others as a
+ /// completion item. Characters that make up identifiers don't need to be listed here.
+ ///
+ /// If code complete should automatically be trigger on characters not being valid inside
+ /// an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.
+ pub trigger_characters: Option<Vec<String>>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Hover options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct HoverOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Additional information about the context in which a signature help request was triggered.
+///
+/// @since 3.15.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelpContext {
+ /// The currently active `SignatureHelp`.
+ ///
+ /// The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on
+ /// the user navigating through available signatures.
+ pub active_signature_help: Option<SignatureHelp>,
+
+ /// `true` if signature help was already showing when it was triggered.
+ ///
+ /// Retriggers occurs when the signature help is already active and can be caused by actions such as
+ /// typing a trigger character, a cursor move, or document content changes.
+ pub is_retrigger: bool,
+
+ /// Character that caused signature help to be triggered.
+ ///
+ /// This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter`
+ pub trigger_character: Option<String>,
+
+ /// Action that caused signature help to be triggered.
+ pub trigger_kind: SignatureHelpTriggerKind,
+}
+
+/// Represents the signature of something callable. A signature
+/// can have a label, like a function-name, a doc-comment, and
+/// a set of parameters.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureInformation {
+ /// The index of the active parameter.
+ ///
+ /// If provided, this is used in place of `SignatureHelp.activeParameter`.
+ ///
+ /// @since 3.16.0
+ pub active_parameter: Option<u32>,
+
+ /// The human-readable doc-comment of this signature. Will be shown
+ /// in the UI but can be omitted.
+ pub documentation: Option<OR2<String, MarkupContent>>,
+
+ /// The label of this signature. Will be shown in
+ /// the UI.
+ pub label: String,
+
+ /// The parameters of this signature.
+ pub parameters: Option<Vec<ParameterInformation>>,
+}
+
+/// Server Capabilities for a [SignatureHelpRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelpOptions {
+ /// List of characters that re-trigger signature help.
+ ///
+ /// These trigger characters are only active when signature help is already showing. All trigger characters
+ /// are also counted as re-trigger characters.
+ ///
+ /// @since 3.15.0
+ pub retrigger_characters: Option<Vec<String>>,
+
+ /// List of characters that trigger signature help automatically.
+ pub trigger_characters: Option<Vec<String>>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Server Capabilities for a [DefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DefinitionOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Value-object that contains additional information when
+/// requesting references.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ReferenceContext {
+ /// Include the declaration of the current symbol.
+ pub include_declaration: bool,
+}
+
+/// Reference options.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ReferenceOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Provider options for a [DocumentHighlightRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentHighlightOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// A base for all symbol information.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct BaseSymbolInformation {
+ /// The name of the symbol containing this symbol. This information is for
+ /// user interface purposes (e.g. to render a qualifier in the user interface
+ /// if necessary). It can't be used to re-infer a hierarchy for the document
+ /// symbols.
+ pub container_name: Option<String>,
+
+ /// The kind of this symbol.
+ pub kind: SymbolKind,
+
+ /// The name of this symbol.
+ pub name: String,
+
+ /// Tags for this symbol.
+ ///
+ /// @since 3.16.0
+ pub tags: Option<Vec<SymbolTag>>,
+}
+
+/// Provider options for a [DocumentSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentSymbolOptions {
+ /// A human-readable string that is shown when multiple outlines trees
+ /// are shown for the same document.
+ ///
+ /// @since 3.16.0
+ pub label: Option<String>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Contains additional diagnostic information about the context in which
+/// a [code action][`CodeActionProvider::provideCodeActions`] is run.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionContext {
+ /// An array of diagnostics known on the client side overlapping the range provided to the
+ /// `textDocument/codeAction` request. They are provided so that the server knows which
+ /// errors are currently presented to the user for the given range. There is no guarantee
+ /// that these accurately reflect the error state of the resource. The primary parameter
+ /// to compute code actions is the provided range.
+ pub diagnostics: Vec<Diagnostic>,
+
+ /// Requested kind of actions to return.
+ ///
+ /// Actions not of this kind are filtered out by the client before being shown. So servers
+ /// can omit computing them.
+ pub only: Option<Vec<CustomStringEnum<CodeActionKind>>>,
+
+ /// The reason why code actions were requested.
+ ///
+ /// @since 3.17.0
+ pub trigger_kind: Option<CodeActionTriggerKind>,
+}
+
+/// Provider options for a [CodeActionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionOptions {
+ /// CodeActionKinds that this server may return.
+ ///
+ /// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
+ /// may list out every specific kind they provide.
+ pub code_action_kinds: Option<Vec<CustomStringEnum<CodeActionKind>>>,
+
+ /// The server provides support to resolve additional
+ /// information for a code action.
+ ///
+ /// @since 3.16.0
+ pub resolve_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Server capabilities for a [WorkspaceSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolOptions {
+ /// The server provides support to resolve additional
+ /// information for a workspace symbol.
+ ///
+ /// @since 3.17.0
+ pub resolve_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Code Lens provider options of a [CodeLensRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensOptions {
+ /// Code lens has a resolve provider as well.
+ pub resolve_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Provider options for a [DocumentLinkRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkOptions {
+ /// Document links have a resolve provider as well.
+ pub resolve_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Value-object describing what options formatting should use.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FormattingOptions {
+ /// Insert a newline character at the end of the file if one does not exist.
+ ///
+ /// @since 3.15.0
+ pub insert_final_newline: Option<bool>,
+
+ /// Prefer spaces over tabs.
+ pub insert_spaces: bool,
+
+ /// Size of a tab in spaces.
+ pub tab_size: u32,
+
+ /// Trim all newlines after the final newline at the end of the file.
+ ///
+ /// @since 3.15.0
+ pub trim_final_newlines: Option<bool>,
+
+ /// Trim trailing whitespace on a line.
+ ///
+ /// @since 3.15.0
+ pub trim_trailing_whitespace: Option<bool>,
+}
+
+/// Provider options for a [DocumentFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentFormattingOptions {
+ pub work_done_progress: Option<bool>,
+}
+
+/// Provider options for a [DocumentRangeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentRangeFormattingOptions {
+ /// Whether the server supports formatting multiple ranges at once.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub ranges_support: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// Provider options for a [DocumentOnTypeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentOnTypeFormattingOptions {
+ /// A character on which formatting should be triggered, like `{`.
+ pub first_trigger_character: String,
+
+ /// More trigger characters.
+ pub more_trigger_character: Option<Vec<String>>,
+}
+
+/// Provider options for a [RenameRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameOptions {
+ /// Renames should be checked and tested before being executed.
+ ///
+ /// @since version 3.12.0
+ pub prepare_provider: Option<bool>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// The server capabilities of a [ExecuteCommandRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExecuteCommandOptions {
+ /// The commands to be executed on the server
+ pub commands: Vec<String>,
+
+ pub work_done_progress: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensLegend {
+ /// The token modifiers a server uses.
+ pub token_modifiers: Vec<String>,
+
+ /// The token types a server uses.
+ pub token_types: Vec<String>,
+}
+
+/// A text document identifier to optionally denote a specific version of a text document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct OptionalVersionedTextDocumentIdentifier {
+ /// The text document's uri.
+ pub uri: String,
+
+ /// The version number of this document. If a versioned text document identifier
+ /// is sent from the server to the client and the file is not open in the editor
+ /// (the server has not received an open notification before) the server can send
+ /// `null` to indicate that the version is unknown and the content on disk is the
+ /// truth (as specified with document content ownership).
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub version: Option<i32>,
+}
+
+/// A special text edit with an additional change annotation.
+///
+/// @since 3.16.0.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct AnnotatedTextEdit {
+ /// The actual identifier of the change annotation
+ pub annotation_id: ChangeAnnotationIdentifier,
+
+ /// The string to be inserted. For delete operations use an
+ /// empty string.
+ pub new_text: String,
+
+ /// The range of the text document to be manipulated. To insert
+ /// text into a document create a range where start === end.
+ pub range: Range,
+}
+
+/// A generic resource operation.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ResourceOperation {
+ /// An optional annotation identifier describing the operation.
+ ///
+ /// @since 3.16.0
+ pub annotation_id: Option<ChangeAnnotationIdentifier>,
+
+ /// The resource operation kind.
+ pub kind: String,
+}
+
+/// Options to create a file.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CreateFileOptions {
+ /// Ignore if exists.
+ pub ignore_if_exists: Option<bool>,
+
+ /// Overwrite existing file. Overwrite wins over `ignoreIfExists`
+ pub overwrite: Option<bool>,
+}
+
+/// Rename file options
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameFileOptions {
+ /// Ignores if target exists.
+ pub ignore_if_exists: Option<bool>,
+
+ /// Overwrite target if existing. Overwrite wins over `ignoreIfExists`
+ pub overwrite: Option<bool>,
+}
+
+/// Delete file options
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeleteFileOptions {
+ /// Ignore the operation if the file doesn't exist.
+ pub ignore_if_not_exists: Option<bool>,
+
+ /// Delete the content recursively if a folder is denoted.
+ pub recursive: Option<bool>,
+}
+
+/// A pattern to describe in which file operation requests or notifications
+/// the server is interested in receiving.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationPattern {
+ /// The glob pattern to match. Glob patterns can have the following syntax:
+ /// - `*` to match one or more characters in a path segment
+ /// - `?` to match on one character in a path segment
+ /// - `**` to match any number of path segments, including none
+ /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
+ /// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
+ /// - `[!...]` 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`)
+ pub glob: String,
+
+ /// Whether to match files or folders with this pattern.
+ ///
+ /// Matches both if undefined.
+ pub matches: Option<FileOperationPatternKind>,
+
+ /// Additional options used during matching.
+ pub options: Option<FileOperationPatternOptions>,
+}
+
+/// A full document diagnostic report for a workspace diagnostic result.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFullDocumentDiagnosticReport {
+ /// The actual items.
+ pub items: Vec<Diagnostic>,
+
+ /// A full document diagnostic report.
+ pub kind: String,
+
+ /// An optional result id. If provided it will
+ /// be sent on the next diagnostic request for the
+ /// same document.
+ pub result_id: Option<String>,
+
+ /// The URI for which diagnostic information is reported.
+ pub uri: String,
+
+ /// The version number for which the diagnostics are reported.
+ /// If the document is not marked as open `null` can be provided.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub version: Option<i32>,
+}
+
+/// An unchanged document diagnostic report for a workspace diagnostic result.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceUnchangedDocumentDiagnosticReport {
+ /// A document diagnostic report indicating
+ /// no changes to the last result. A server can
+ /// only return `unchanged` if result ids are
+ /// provided.
+ pub kind: String,
+
+ /// A result id which will be sent on the next
+ /// diagnostic request for the same document.
+ pub result_id: String,
+
+ /// The URI for which diagnostic information is reported.
+ pub uri: String,
+
+ /// The version number for which the diagnostics are reported.
+ /// If the document is not marked as open `null` can be provided.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub version: Option<i32>,
+}
+
+/// A notebook cell.
+///
+/// A cell's document URI must be unique across ALL notebook
+/// cells and can therefore be used to uniquely identify a
+/// notebook cell or the cell's text document.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookCell {
+ /// The URI of the cell's text document
+ /// content.
+ pub document: String,
+
+ /// Additional execution summary information
+ /// if supported by the client.
+ pub execution_summary: Option<ExecutionSummary>,
+
+ /// The cell's kind
+ pub kind: NotebookCellKind,
+
+ /// Additional metadata stored with the cell.
+ ///
+ /// Note: should always be an object literal (e.g. LSPObject)
+ pub metadata: Option<LSPObject>,
+}
+
+/// A change describing how to move a `NotebookCell`
+/// array from state S to S'.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookCellArrayChange {
+ /// The new cells, if any
+ pub cells: Option<Vec<NotebookCell>>,
+
+ /// The deleted cells
+ pub delete_count: u32,
+
+ /// The start oftest of the cell that changed.
+ pub start: u32,
+}
+
+/// Describes the currently selected completion item.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SelectedCompletionInfo {
+ /// The range that will be replaced if this completion item is accepted.
+ pub range: Range,
+
+ /// The text the range will be replaced with if this completion is accepted.
+ pub text: String,
+}
+
+/// Defines the capabilities provided by the client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ClientCapabilities {
+ /// Experimental client capabilities.
+ pub experimental: Option<LSPAny>,
+
+ /// General client capabilities.
+ ///
+ /// @since 3.16.0
+ pub general: Option<GeneralClientCapabilities>,
+
+ /// Capabilities specific to the notebook document support.
+ ///
+ /// @since 3.17.0
+ pub notebook_document: Option<NotebookDocumentClientCapabilities>,
+
+ /// Text document specific client capabilities.
+ pub text_document: Option<TextDocumentClientCapabilities>,
+
+ /// Window specific client capabilities.
+ pub window: Option<WindowClientCapabilities>,
+
+ /// Workspace specific client capabilities.
+ pub workspace: Option<WorkspaceClientCapabilities>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSyncOptions {
+ /// Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full
+ /// and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None.
+ pub change: Option<TextDocumentSyncKind>,
+
+ /// Open and close notifications are sent to the server. If omitted open close notification should not
+ /// be sent.
+ pub open_close: Option<bool>,
+
+ /// If present save notifications are sent to the server. If omitted the notification should not be
+ /// sent.
+ pub save: Option<OR2<bool, SaveOptions>>,
+
+ /// If present will save notifications are sent to the server. If omitted the notification should not be
+ /// sent.
+ pub will_save: Option<bool>,
+
+ /// If present will save wait until requests are sent to the server. If omitted the request should not be
+ /// sent.
+ pub will_save_wait_until: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructLanguage {
+ pub language: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructNotebook {
+ /// The notebook to be synced If a string
+ /// value is provided it matches against the
+ /// notebook type. '*' matches every notebook.
+ pub notebook: OR2<String, NotebookDocumentFilter>,
+
+ /// The cells of the matching notebook to be synced.
+ pub cells: Option<Vec<StructLanguage>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructLanguage2 {
+ pub language: String,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCells2 {
+ /// The notebook to be synced If a string
+ /// value is provided it matches against the
+ /// notebook type. '*' matches every notebook.
+ pub notebook: Option<OR2<String, NotebookDocumentFilter>>,
+
+ /// The cells of the matching notebook to be synced.
+ pub cells: Vec<StructLanguage2>,
+}
+
+/// Options specific to a notebook plus its cells
+/// to be synced to the server.
+///
+/// If a selector provides a notebook document
+/// filter but no cell selector all cells of a
+/// matching notebook document will be synced.
+///
+/// If a selector provides no notebook document
+/// filter but only a cell selector all notebook
+/// document that contain at least one matching
+/// cell will be synced.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentSyncOptions {
+ /// The notebooks to be synced
+ pub notebook_selector: Vec<OR2<StructNotebook, StructCells2>>,
+
+ /// Whether save notification should be forwarded to
+ /// the server. Will only be honored if mode === `notebook`.
+ pub save: Option<bool>,
+}
+
+/// Registration options specific to a notebook.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentSyncRegistrationOptions {
+ /// The id used to register the request. The id can be used to deregister
+ /// the request again. See also Registration#id.
+ pub id: Option<String>,
+
+ /// The notebooks to be synced
+ pub notebook_selector: Vec<OR2<StructNotebook, StructCells2>>,
+
+ /// Whether save notification should be forwarded to
+ /// the server. Will only be honored if mode === `notebook`.
+ pub save: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFoldersServerCapabilities {
+ /// Whether the server wants to receive workspace folder
+ /// change notifications.
+ ///
+ /// If a string is provided the string is treated as an ID
+ /// under which the notification is registered on the client
+ /// side. The ID can be used to unregister for these events
+ /// using the `client/unregisterCapability` request.
+ pub change_notifications: Option<OR2<String, bool>>,
+
+ /// The server has support for workspace folders
+ pub supported: Option<bool>,
+}
+
+/// Options for notifications/requests for user operations on files.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationOptions {
+ /// The server is interested in receiving didCreateFiles notifications.
+ pub did_create: Option<FileOperationRegistrationOptions>,
+
+ /// The server is interested in receiving didDeleteFiles file notifications.
+ pub did_delete: Option<FileOperationRegistrationOptions>,
+
+ /// The server is interested in receiving didRenameFiles notifications.
+ pub did_rename: Option<FileOperationRegistrationOptions>,
+
+ /// The server is interested in receiving willCreateFiles requests.
+ pub will_create: Option<FileOperationRegistrationOptions>,
+
+ /// The server is interested in receiving willDeleteFiles file requests.
+ pub will_delete: Option<FileOperationRegistrationOptions>,
+
+ /// The server is interested in receiving willRenameFiles requests.
+ pub will_rename: Option<FileOperationRegistrationOptions>,
+}
+
+/// Structure to capture a description for an error code.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeDescription {
+ /// An URI to open with more information about the diagnostic error.
+ pub href: String,
+}
+
+/// Represents a related message and source code location for a diagnostic. This should be
+/// used to point to code locations that cause or related to a diagnostics, e.g when duplicating
+/// a symbol in a scope.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticRelatedInformation {
+ /// The location of this related diagnostic information.
+ pub location: Location,
+
+ /// The message of this related diagnostic information.
+ pub message: String,
+}
+
+/// Represents a parameter of a callable-signature. A parameter can
+/// have a label and a doc-comment.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ParameterInformation {
+ /// The human-readable doc-comment of this parameter. Will be shown
+ /// in the UI but can be omitted.
+ pub documentation: Option<OR2<String, MarkupContent>>,
+
+ /// The label of this parameter information.
+ ///
+ /// Either a string or an inclusive start and exclusive end offsets within its containing
+ /// signature label. (see SignatureInformation.label). The offsets are based on a UTF-16
+ /// string representation as `Position` and `Range` does.
+ ///
+ /// *Note*: a label of type string should be a substring of its containing signature label.
+ /// Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`.
+ pub label: OR2<String, (u32, u32)>,
+}
+
+/// A notebook cell text document filter denotes a cell text
+/// document by different properties.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookCellTextDocumentFilter {
+ /// A language id like `python`.
+ ///
+ /// Will be matched against the language id of the
+ /// notebook cell document. '*' matches every language.
+ pub language: Option<String>,
+
+ /// A filter that matches against the notebook
+ /// containing the notebook cell. If a string
+ /// value is provided it matches against the
+ /// notebook type. '*' matches every notebook.
+ pub notebook: OR2<String, NotebookDocumentFilter>,
+}
+
+/// Matching options for the file operation pattern.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationPatternOptions {
+ /// The pattern should be matched ignoring casing.
+ pub ignore_case: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExecutionSummary {
+ /// A strict monotonically increasing value
+ /// indicating the execution order of a cell
+ /// inside a notebook.
+ pub execution_order: u32,
+
+ /// Whether the execution was successful or
+ /// not if known by the client.
+ pub success: Option<bool>,
+}
+
+/// Workspace specific client capabilities.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceClientCapabilities {
+ /// The client supports applying batch edits
+ /// to the workspace by supporting the request
+ /// 'workspace/applyEdit'
+ pub apply_edit: Option<bool>,
+
+ /// Capabilities specific to the code lens requests scoped to the
+ /// workspace.
+ ///
+ /// @since 3.16.0.
+ pub code_lens: Option<CodeLensWorkspaceClientCapabilities>,
+
+ /// The client supports `workspace/configuration` requests.
+ ///
+ /// @since 3.6.0
+ pub configuration: Option<bool>,
+
+ /// Capabilities specific to the diagnostic requests scoped to the
+ /// workspace.
+ ///
+ /// @since 3.17.0.
+ pub diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
+
+ /// Capabilities specific to the `workspace/didChangeConfiguration` notification.
+ pub did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
+
+ /// Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
+ pub did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
+
+ /// Capabilities specific to the `workspace/executeCommand` request.
+ pub execute_command: Option<ExecuteCommandClientCapabilities>,
+
+ /// The client has support for file notifications/requests for user operations on files.
+ ///
+ /// Since 3.16.0
+ pub file_operations: Option<FileOperationClientCapabilities>,
+
+ /// Capabilities specific to the folding range requests scoped to the workspace.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
+
+ /// Capabilities specific to the inlay hint requests scoped to the
+ /// workspace.
+ ///
+ /// @since 3.17.0.
+ pub inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
+
+ /// Capabilities specific to the inline values requests scoped to the
+ /// workspace.
+ ///
+ /// @since 3.17.0.
+ pub inline_value: Option<InlineValueWorkspaceClientCapabilities>,
+
+ /// Capabilities specific to the semantic token requests scoped to the
+ /// workspace.
+ ///
+ /// @since 3.16.0.
+ pub semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
+
+ /// Capabilities specific to the `workspace/symbol` request.
+ pub symbol: Option<WorkspaceSymbolClientCapabilities>,
+
+ /// Capabilities specific to `WorkspaceEdit`s.
+ pub workspace_edit: Option<WorkspaceEditClientCapabilities>,
+
+ /// The client has support for workspace folders.
+ ///
+ /// @since 3.6.0
+ pub workspace_folders: Option<bool>,
+}
+
+/// Text document specific client capabilities.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentClientCapabilities {
+ /// Capabilities specific to the various call hierarchy requests.
+ ///
+ /// @since 3.16.0
+ pub call_hierarchy: Option<CallHierarchyClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/codeAction` request.
+ pub code_action: Option<CodeActionClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/codeLens` request.
+ pub code_lens: Option<CodeLensClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/documentColor` and the
+ /// `textDocument/colorPresentation` request.
+ ///
+ /// @since 3.6.0
+ pub color_provider: Option<DocumentColorClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/completion` request.
+ pub completion: Option<CompletionClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/declaration` request.
+ ///
+ /// @since 3.14.0
+ pub declaration: Option<DeclarationClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/definition` request.
+ pub definition: Option<DefinitionClientCapabilities>,
+
+ /// Capabilities specific to the diagnostic pull model.
+ ///
+ /// @since 3.17.0
+ pub diagnostic: Option<DiagnosticClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/documentHighlight` request.
+ pub document_highlight: Option<DocumentHighlightClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/documentLink` request.
+ pub document_link: Option<DocumentLinkClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/documentSymbol` request.
+ pub document_symbol: Option<DocumentSymbolClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/foldingRange` request.
+ ///
+ /// @since 3.10.0
+ pub folding_range: Option<FoldingRangeClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/formatting` request.
+ pub formatting: Option<DocumentFormattingClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/hover` request.
+ pub hover: Option<HoverClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/implementation` request.
+ ///
+ /// @since 3.6.0
+ pub implementation: Option<ImplementationClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/inlayHint` request.
+ ///
+ /// @since 3.17.0
+ pub inlay_hint: Option<InlayHintClientCapabilities>,
+
+ /// Client capabilities specific to inline completions.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub inline_completion: Option<InlineCompletionClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/inlineValue` request.
+ ///
+ /// @since 3.17.0
+ pub inline_value: Option<InlineValueClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/linkedEditingRange` request.
+ ///
+ /// @since 3.16.0
+ pub linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
+
+ /// Client capabilities specific to the `textDocument/moniker` request.
+ ///
+ /// @since 3.16.0
+ pub moniker: Option<MonikerClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/onTypeFormatting` request.
+ pub on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/publishDiagnostics` notification.
+ pub publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/rangeFormatting` request.
+ pub range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/references` request.
+ pub references: Option<ReferenceClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/rename` request.
+ pub rename: Option<RenameClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/selectionRange` request.
+ ///
+ /// @since 3.15.0
+ pub selection_range: Option<SelectionRangeClientCapabilities>,
+
+ /// Capabilities specific to the various semantic token request.
+ ///
+ /// @since 3.16.0
+ pub semantic_tokens: Option<SemanticTokensClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/signatureHelp` request.
+ pub signature_help: Option<SignatureHelpClientCapabilities>,
+
+ /// Defines which synchronization capabilities the client supports.
+ pub synchronization: Option<TextDocumentSyncClientCapabilities>,
+
+ /// Capabilities specific to the `textDocument/typeDefinition` request.
+ ///
+ /// @since 3.6.0
+ pub type_definition: Option<TypeDefinitionClientCapabilities>,
+
+ /// Capabilities specific to the various type hierarchy requests.
+ ///
+ /// @since 3.17.0
+ pub type_hierarchy: Option<TypeHierarchyClientCapabilities>,
+}
+
+/// Capabilities specific to the notebook document support.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentClientCapabilities {
+ /// Capabilities specific to notebook document synchronization
+ ///
+ /// @since 3.17.0
+ pub synchronization: NotebookDocumentSyncClientCapabilities,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowClientCapabilities {
+ /// Capabilities specific to the showDocument request.
+ ///
+ /// @since 3.16.0
+ pub show_document: Option<ShowDocumentClientCapabilities>,
+
+ /// Capabilities specific to the showMessage request.
+ ///
+ /// @since 3.16.0
+ pub show_message: Option<ShowMessageRequestClientCapabilities>,
+
+ /// It indicates whether the client supports server initiated
+ /// progress using the `window/workDoneProgress/create` request.
+ ///
+ /// The capability also controls Whether client supports handling
+ /// of progress notifications. If set servers are allowed to report a
+ /// `workDoneProgress` property in the request specific server
+ /// capabilities.
+ ///
+ /// @since 3.15.0
+ pub work_done_progress: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructStaleRequestSupport {
+ /// The client will actively cancel the request.
+ pub cancel: bool,
+
+ /// The list of requests for which the client
+ /// will retry the request if it receives a
+ /// response with error code `ContentModified`
+ pub retry_on_content_modified: Vec<String>,
+}
+
+/// General client capabilities.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct GeneralClientCapabilities {
+ /// Client capabilities specific to the client's markdown parser.
+ ///
+ /// @since 3.16.0
+ pub markdown: Option<MarkdownClientCapabilities>,
+
+ /// The position encodings supported by the client. Client and server
+ /// have to agree on the same position encoding to ensure that offsets
+ /// (e.g. character position in a line) are interpreted the same on both
+ /// sides.
+ ///
+ /// To keep the protocol backwards compatible the following applies: if
+ /// the value 'utf-16' is missing from the array of position encodings
+ /// servers can assume that the client supports UTF-16. UTF-16 is
+ /// therefore a mandatory encoding.
+ ///
+ /// If omitted it defaults to ['utf-16'].
+ ///
+ /// Implementation considerations: since the conversion from one encoding
+ /// into another requires the content of the file / line the conversion
+ /// is best done where the file is read which is usually on the server
+ /// side.
+ ///
+ /// @since 3.17.0
+ pub position_encodings: Option<Vec<CustomStringEnum<PositionEncodingKind>>>,
+
+ /// Client capabilities specific to regular expressions.
+ ///
+ /// @since 3.16.0
+ pub regular_expressions: Option<RegularExpressionsClientCapabilities>,
+
+ /// Client capability that signals how the client
+ /// handles stale requests (e.g. a request
+ /// for which the client will not process the response
+ /// anymore since the information is outdated).
+ ///
+ /// @since 3.17.0
+ pub stale_request_support: Option<StructStaleRequestSupport>,
+}
+
+/// A relative pattern is a helper to construct glob patterns that are matched
+/// relatively to a base URI. The common value for a `baseUri` is a workspace
+/// folder root, but it can be another absolute URI as well.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RelativePattern {
+ /// A workspace folder or a base URI to which this pattern will be matched
+ /// against relatively.
+ pub base_uri: OR2<WorkspaceFolder, String>,
+
+ /// The actual glob pattern;
+ pub pattern: Pattern,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructChangeAnnotationSupport {
+ /// Whether the client groups edits with equal labels into tree nodes,
+ /// for instance all edits labelled with "Changes in Strings" would
+ /// be a tree node.
+ pub groups_on_label: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceEditClientCapabilities {
+ /// Whether the client in general supports change annotations on text edits,
+ /// create file, rename file and delete file changes.
+ ///
+ /// @since 3.16.0
+ pub change_annotation_support: Option<StructChangeAnnotationSupport>,
+
+ /// The client supports versioned document changes in `WorkspaceEdit`s
+ pub document_changes: Option<bool>,
+
+ /// The failure handling strategy of a client if applying the workspace edit
+ /// fails.
+ ///
+ /// @since 3.13.0
+ pub failure_handling: Option<FailureHandlingKind>,
+
+ /// Whether the client normalizes line endings to the client specific
+ /// setting.
+ /// If set to `true` the client will normalize line ending characters
+ /// in a workspace edit to the client-specified new line
+ /// character.
+ ///
+ /// @since 3.16.0
+ pub normalizes_line_endings: Option<bool>,
+
+ /// The resource operations the client supports. Clients should at least
+ /// support 'create', 'rename' and 'delete' files and folders.
+ ///
+ /// @since 3.13.0
+ pub resource_operations: Option<Vec<ResourceOperationKind>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeConfigurationClientCapabilities {
+ /// Did change configuration notification supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DidChangeWatchedFilesClientCapabilities {
+ /// Did change watched files notification supports dynamic registration. Please note
+ /// that the current protocol doesn't support static configuration for file changes
+ /// from the server side.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the client has support for [relative pattern][RelativePattern]
+ /// or not.
+ ///
+ /// @since 3.17.0
+ pub relative_pattern_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructResolveSupport {
+ /// The properties that a client can resolve lazily. Usually
+ /// `location.range`
+ pub properties: Vec<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructSymbolKind {
+ /// The symbol kind values the client supports. When this
+ /// property exists the client also guarantees that it will
+ /// handle values outside its set gracefully and falls back
+ /// to a default value when unknown.
+ ///
+ /// If this property is not present the client only supports
+ /// the symbol kinds from `File` to `Array` as defined in
+ /// the initial version of the protocol.
+ pub value_set: Option<Vec<SymbolKind>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTagSupport {
+ /// The tags supported by the client.
+ pub value_set: Vec<SymbolTag>,
+}
+
+/// Client capabilities for a [WorkspaceSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolClientCapabilities {
+ /// Symbol request supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client support partial workspace symbols. The client will send the
+ /// request `workspaceSymbol/resolve` to the server to resolve additional
+ /// properties.
+ ///
+ /// @since 3.17.0
+ pub resolve_support: Option<StructResolveSupport>,
+
+ /// Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
+ pub symbol_kind: Option<StructSymbolKind>,
+
+ /// The client supports tags on `SymbolInformation`.
+ /// Clients supporting tags have to handle unknown tags gracefully.
+ ///
+ /// @since 3.16.0
+ pub tag_support: Option<StructTagSupport>,
+}
+
+/// The client capabilities of a [ExecuteCommandRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExecuteCommandClientCapabilities {
+ /// Execute command supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from
+ /// the server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// semantic tokens currently shown. It should be used with absolute care
+ /// and is useful for situation where a server for example detects a project
+ /// wide change that requires such a calculation.
+ pub refresh_support: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from the
+ /// server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// code lenses currently shown. It should be used with absolute care and is
+ /// useful for situation where a server for example detect a project wide
+ /// change that requires such a calculation.
+ pub refresh_support: Option<bool>,
+}
+
+/// Capabilities relating to events from file operations by the user in the client.
+///
+/// These events do not come from the file system, they come from user operations
+/// like renaming a file in the UI.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FileOperationClientCapabilities {
+ /// The client has support for sending didCreateFiles notifications.
+ pub did_create: Option<bool>,
+
+ /// The client has support for sending didDeleteFiles notifications.
+ pub did_delete: Option<bool>,
+
+ /// The client has support for sending didRenameFiles notifications.
+ pub did_rename: Option<bool>,
+
+ /// Whether the client supports dynamic registration for file requests/notifications.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client has support for sending willCreateFiles requests.
+ pub will_create: Option<bool>,
+
+ /// The client has support for sending willDeleteFiles requests.
+ pub will_delete: Option<bool>,
+
+ /// The client has support for sending willRenameFiles requests.
+ pub will_rename: Option<bool>,
+}
+
+/// Client workspace capabilities specific to inline values.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from the
+ /// server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// inline values currently shown. It should be used with absolute care and is
+ /// useful for situation where a server for example detects a project wide
+ /// change that requires such a calculation.
+ pub refresh_support: Option<bool>,
+}
+
+/// Client workspace capabilities specific to inlay hints.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from
+ /// the server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// inlay hints currently shown. It should be used with absolute care and
+ /// is useful for situation where a server for example detects a project wide
+ /// change that requires such a calculation.
+ pub refresh_support: Option<bool>,
+}
+
+/// Workspace client capabilities specific to diagnostic pull requests.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from
+ /// the server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// pulled diagnostics currently shown. It should be used with absolute care and
+ /// is useful for situation where a server for example detects a project wide
+ /// change that requires such a calculation.
+ pub refresh_support: Option<bool>,
+}
+
+/// Client workspace capabilities specific to folding ranges
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRangeWorkspaceClientCapabilities {
+ /// Whether the client implementation supports a refresh request sent from the
+ /// server to the client.
+ ///
+ /// Note that this event is global and will force the client to refresh all
+ /// folding ranges currently shown. It should be used with absolute care and is
+ /// useful for situation where a server for example detects a project wide
+ /// change that requires such a calculation.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub refresh_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSyncClientCapabilities {
+ /// The client supports did save notifications.
+ pub did_save: Option<bool>,
+
+ /// Whether text document synchronization supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports sending will save notifications.
+ pub will_save: Option<bool>,
+
+ /// The client supports sending a will save request and
+ /// waits for a response providing text edits which will
+ /// be applied to the document before it is saved.
+ pub will_save_wait_until: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTagSupportValue {
+ /// The tags supported by the client.
+ pub value_set: Vec<CompletionItemTag>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructResolveSupportProperties {
+ /// The properties that a client can resolve lazily.
+ pub properties: Vec<String>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructInsertTextModeSupport {
+ pub value_set: Vec<InsertTextMode>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCompletionItemOptions {
+ /// Client supports snippets as insert text.
+ ///
+ /// A snippet can define tab stops and placeholders with `$1`, `$2`
+ /// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
+ /// the end of the snippet. Placeholders with equal identifiers are linked,
+ /// that is typing in one will update others too.
+ pub snippet_support: Option<bool>,
+
+ /// Client supports commit characters on a completion item.
+ pub commit_characters_support: Option<bool>,
+
+ /// Client supports the following content formats for the documentation
+ /// property. The order describes the preferred format of the client.
+ pub documentation_format: Option<Vec<MarkupKind>>,
+
+ /// Client supports the deprecated property on a completion item.
+ pub deprecated_support: Option<bool>,
+
+ /// Client supports the preselect property on a completion item.
+ pub preselect_support: Option<bool>,
+
+ /// Client supports the tag property on a completion item. Clients supporting
+ /// tags have to handle unknown tags gracefully. Clients especially need to
+ /// preserve unknown tags when sending a completion item back to the server in
+ /// a resolve call.
+ ///
+ /// @since 3.15.0
+ pub tag_support: Option<StructTagSupportValue>,
+
+ /// Client support insert replace edit to control different behavior if a
+ /// completion item is inserted in the text or should replace text.
+ ///
+ /// @since 3.16.0
+ pub insert_replace_support: Option<bool>,
+
+ /// Indicates which properties a client can resolve lazily on a completion
+ /// item. Before version 3.16.0 only the predefined properties `documentation`
+ /// and `details` could be resolved lazily.
+ ///
+ /// @since 3.16.0
+ pub resolve_support: Option<StructResolveSupportProperties>,
+
+ /// The client supports the `insertTextMode` property on
+ /// a completion item to override the whitespace handling mode
+ /// as defined by the client (see `insertTextMode`).
+ ///
+ /// @since 3.16.0
+ pub insert_text_mode_support: Option<StructInsertTextModeSupport>,
+
+ /// The client has support for completion item label
+ /// details (see also `CompletionItemLabelDetails`).
+ ///
+ /// @since 3.17.0
+ pub label_details_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCompletionItemKind {
+ /// The completion item kind values the client supports. When this
+ /// property exists the client also guarantees that it will
+ /// handle values outside its set gracefully and falls back
+ /// to a default value when unknown.
+ ///
+ /// If this property is not present the client only supports
+ /// the completion items kinds from `Text` to `Reference` as defined in
+ /// the initial version of the protocol.
+ pub value_set: Option<Vec<CompletionItemKind>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCompletionList {
+ /// The client supports the following itemDefaults on
+ /// a completion list.
+ ///
+ /// The value lists the supported property names of the
+ /// `CompletionList.itemDefaults` object. If omitted
+ /// no properties are supported.
+ ///
+ /// @since 3.17.0
+ pub item_defaults: Option<Vec<String>>,
+}
+
+/// Completion client capabilities
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionClientCapabilities {
+ /// The client supports the following `CompletionItem` specific
+ /// capabilities.
+ pub completion_item: Option<StructCompletionItemOptions>,
+
+ pub completion_item_kind: Option<StructCompletionItemKind>,
+
+ /// The client supports the following `CompletionList` specific
+ /// capabilities.
+ ///
+ /// @since 3.17.0
+ pub completion_list: Option<StructCompletionList>,
+
+ /// The client supports to send additional context information for a
+ /// `textDocument/completion` request.
+ pub context_support: Option<bool>,
+
+ /// Whether completion supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Defines how the client handles whitespace and indentation
+ /// when accepting a completion item that uses multi line
+ /// text in either `insertText` or `textEdit`.
+ ///
+ /// @since 3.17.0
+ pub insert_text_mode: Option<InsertTextMode>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct HoverClientCapabilities {
+ /// Client supports the following content formats for the content
+ /// property. The order describes the preferred format of the client.
+ pub content_format: Option<Vec<MarkupKind>>,
+
+ /// Whether hover supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructParameterInformation {
+ /// The client supports processing label offsets instead of a
+ /// simple label string.
+ ///
+ /// @since 3.14.0
+ pub label_offset_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructSignatureInformation {
+ /// Client supports the following content formats for the documentation
+ /// property. The order describes the preferred format of the client.
+ pub documentation_format: Option<Vec<MarkupKind>>,
+
+ /// Client capabilities specific to parameter information.
+ pub parameter_information: Option<StructParameterInformation>,
+
+ /// The client supports the `activeParameter` property on `SignatureInformation`
+ /// literal.
+ ///
+ /// @since 3.16.0
+ pub active_parameter_support: Option<bool>,
+}
+
+/// Client Capabilities for a [SignatureHelpRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SignatureHelpClientCapabilities {
+ /// The client supports to send additional context information for a
+ /// `textDocument/signatureHelp` request. A client that opts into
+ /// contextSupport will also support the `retriggerCharacters` on
+ /// `SignatureHelpOptions`.
+ ///
+ /// @since 3.15.0
+ pub context_support: Option<bool>,
+
+ /// Whether signature help supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports the following `SignatureInformation`
+ /// specific properties.
+ pub signature_information: Option<StructSignatureInformation>,
+}
+
+/// @since 3.14.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DeclarationClientCapabilities {
+ /// Whether declaration supports dynamic registration. If this is set to `true`
+ /// the client supports the new `DeclarationRegistrationOptions` return value
+ /// for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports additional metadata in the form of declaration links.
+ pub link_support: Option<bool>,
+}
+
+/// Client Capabilities for a [DefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DefinitionClientCapabilities {
+ /// Whether definition supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports additional metadata in the form of definition links.
+ ///
+ /// @since 3.14.0
+ pub link_support: Option<bool>,
+}
+
+/// Since 3.6.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeDefinitionClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `TypeDefinitionRegistrationOptions` return value
+ /// for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports additional metadata in the form of definition links.
+ ///
+ /// Since 3.14.0
+ pub link_support: Option<bool>,
+}
+
+/// @since 3.6.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ImplementationClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `ImplementationRegistrationOptions` return value
+ /// for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports additional metadata in the form of definition links.
+ ///
+ /// @since 3.14.0
+ pub link_support: Option<bool>,
+}
+
+/// Client Capabilities for a [ReferencesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ReferenceClientCapabilities {
+ /// Whether references supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Client Capabilities for a [DocumentHighlightRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentHighlightClientCapabilities {
+ /// Whether document highlight supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructSymbolKindOptions {
+ /// The symbol kind values the client supports. When this
+ /// property exists the client also guarantees that it will
+ /// handle values outside its set gracefully and falls back
+ /// to a default value when unknown.
+ ///
+ /// If this property is not present the client only supports
+ /// the symbol kinds from `File` to `Array` as defined in
+ /// the initial version of the protocol.
+ pub value_set: Option<Vec<SymbolKind>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTagSupportValueSet {
+ /// The tags supported by the client.
+ pub value_set: Vec<SymbolTag>,
+}
+
+/// Client Capabilities for a [DocumentSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentSymbolClientCapabilities {
+ /// Whether document symbol supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports hierarchical document symbols.
+ pub hierarchical_document_symbol_support: Option<bool>,
+
+ /// The client supports an additional label presented in the UI when
+ /// registering a document symbol provider.
+ ///
+ /// @since 3.16.0
+ pub label_support: Option<bool>,
+
+ /// Specific capabilities for the `SymbolKind` in the
+ /// `textDocument/documentSymbol` request.
+ pub symbol_kind: Option<StructSymbolKindOptions>,
+
+ /// The client supports tags on `SymbolInformation`. Tags are supported on
+ /// `DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true.
+ /// Clients supporting tags have to handle unknown tags gracefully.
+ ///
+ /// @since 3.16.0
+ pub tag_support: Option<StructTagSupportValueSet>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCodeActionKind {
+ /// The code action kind values the client supports. When this
+ /// property exists the client also guarantees that it will
+ /// handle values outside its set gracefully and falls back
+ /// to a default value when unknown.
+ pub value_set: Vec<CustomStringEnum<CodeActionKind>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructCodeActionLiteralSupport {
+ /// The code action kind is support with the following value
+ /// set.
+ pub code_action_kind: StructCodeActionKind,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructResolveSupportProperties2 {
+ /// The properties that a client can resolve lazily.
+ pub properties: Vec<String>,
+}
+
+/// The Client Capabilities of a [CodeActionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionClientCapabilities {
+ /// The client support code action literals of type `CodeAction` as a valid
+ /// response of the `textDocument/codeAction` request. If the property is not
+ /// set the request can only return `Command` literals.
+ ///
+ /// @since 3.8.0
+ pub code_action_literal_support: Option<StructCodeActionLiteralSupport>,
+
+ /// Whether code action supports the `data` property which is
+ /// preserved between a `textDocument/codeAction` and a
+ /// `codeAction/resolve` request.
+ ///
+ /// @since 3.16.0
+ pub data_support: Option<bool>,
+
+ /// Whether code action supports the `disabled` property.
+ ///
+ /// @since 3.16.0
+ pub disabled_support: Option<bool>,
+
+ /// Whether code action supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the client honors the change annotations in
+ /// text edits and resource operations returned via the
+ /// `CodeAction#edit` property by for example presenting
+ /// the workspace edit in the user interface and asking
+ /// for confirmation.
+ ///
+ /// @since 3.16.0
+ pub honors_change_annotations: Option<bool>,
+
+ /// Whether code action supports the `isPreferred` property.
+ ///
+ /// @since 3.15.0
+ pub is_preferred_support: Option<bool>,
+
+ /// Whether the client supports resolving additional code action
+ /// properties via a separate `codeAction/resolve` request.
+ ///
+ /// @since 3.16.0
+ pub resolve_support: Option<StructResolveSupportProperties2>,
+}
+
+/// The client capabilities of a [CodeLensRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensClientCapabilities {
+ /// Whether code lens supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// The client capabilities of a [DocumentLinkRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkClientCapabilities {
+ /// Whether document link supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the client supports the `tooltip` property on `DocumentLink`.
+ ///
+ /// @since 3.15.0
+ pub tooltip_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentColorClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `DocumentColorRegistrationOptions` return value
+ /// for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Client capabilities of a [DocumentFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentFormattingClientCapabilities {
+ /// Whether formatting supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Client capabilities of a [DocumentRangeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentRangeFormattingClientCapabilities {
+ /// Whether range formatting supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the client supports formatting multiple ranges at once.
+ ///
+ /// @since 3.18.0
+ /// @proposed
+ #[cfg(feature = "proposed", since = "3.18.0")]
+ pub ranges_support: Option<bool>,
+}
+
+/// Client capabilities of a [DocumentOnTypeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentOnTypeFormattingClientCapabilities {
+ /// Whether on type formatting supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RenameClientCapabilities {
+ /// Whether rename supports dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the client honors the change annotations in
+ /// text edits and resource operations returned via the
+ /// rename request's workspace edit by for example presenting
+ /// the workspace edit in the user interface and asking
+ /// for confirmation.
+ ///
+ /// @since 3.16.0
+ pub honors_change_annotations: Option<bool>,
+
+ /// Client supports testing for validity of rename operations
+ /// before execution.
+ ///
+ /// @since 3.12.0
+ pub prepare_support: Option<bool>,
+
+ /// Client supports the default behavior result.
+ ///
+ /// The value indicates the default behavior used by the
+ /// client.
+ ///
+ /// @since 3.16.0
+ pub prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructFoldingRange {
+ /// If set, the client signals that it supports setting collapsedText on
+ /// folding ranges to display custom labels instead of the default text.
+ ///
+ /// @since 3.17.0
+ pub collapsed_text: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructFoldingRangeKind {
+ /// The folding range kind values the client supports. When this
+ /// property exists the client also guarantees that it will
+ /// handle values outside its set gracefully and falls back
+ /// to a default value when unknown.
+ pub value_set: Option<Vec<CustomStringEnum<FoldingRangeKind>>>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct FoldingRangeClientCapabilities {
+ /// Whether implementation supports dynamic registration for folding range
+ /// providers. If this is set to `true` the client supports the new
+ /// `FoldingRangeRegistrationOptions` return value for the corresponding
+ /// server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// Specific options for the folding range.
+ ///
+ /// @since 3.17.0
+ pub folding_range: Option<StructFoldingRange>,
+
+ /// Specific options for the folding range kind.
+ ///
+ /// @since 3.17.0
+ pub folding_range_kind: Option<StructFoldingRangeKind>,
+
+ /// If set, the client signals that it only supports folding complete lines.
+ /// If set, client will ignore specified `startCharacter` and `endCharacter`
+ /// properties in a FoldingRange.
+ pub line_folding_only: Option<bool>,
+
+ /// The maximum number of folding ranges that the client prefers to receive
+ /// per document. The value serves as a hint, servers are free to follow the
+ /// limit.
+ pub range_limit: Option<u32>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SelectionRangeClientCapabilities {
+ /// Whether implementation supports dynamic registration for selection range providers. If this is set to `true`
+ /// the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server
+ /// capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructTagSupportValueSet2 {
+ /// The tags supported by the client.
+ pub value_set: Vec<DiagnosticTag>,
+}
+
+/// The publish diagnostic client capabilities.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct PublishDiagnosticsClientCapabilities {
+ /// Client supports a codeDescription property
+ ///
+ /// @since 3.16.0
+ pub code_description_support: Option<bool>,
+
+ /// Whether code action supports the `data` property which is
+ /// preserved between a `textDocument/publishDiagnostics` and
+ /// `textDocument/codeAction` request.
+ ///
+ /// @since 3.16.0
+ pub data_support: Option<bool>,
+
+ /// Whether the clients accepts diagnostics with related information.
+ pub related_information: Option<bool>,
+
+ /// Client supports the tag property to provide meta data about a diagnostic.
+ /// Clients supporting tags have to handle unknown tags gracefully.
+ ///
+ /// @since 3.15.0
+ pub tag_support: Option<StructTagSupportValueSet2>,
+
+ /// Whether the client interprets the version property of the
+ /// `textDocument/publishDiagnostics` notification's parameter.
+ ///
+ /// @since 3.15.0
+ pub version_support: Option<bool>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructOptions2 {
+ /// The client will send the `textDocument/semanticTokens/full/delta` request if
+ /// the server provides a corresponding handler.
+ pub delta: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructRequests {
+ /// The client will send the `textDocument/semanticTokens/range` request if
+ /// the server provides a corresponding handler.
+ pub range: Option<OR2<bool, LSPObject>>,
+
+ /// The client will send the `textDocument/semanticTokens/full` request if
+ /// the server provides a corresponding handler.
+ pub full: Option<OR2<bool, StructOptions2>>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SemanticTokensClientCapabilities {
+ /// Whether the client uses semantic tokens to augment existing
+ /// syntax tokens. If set to `true` client side created syntax
+ /// tokens and semantic tokens are both used for colorization. If
+ /// set to `false` the client only uses the returned semantic tokens
+ /// for colorization.
+ ///
+ /// If the value is `undefined` then the client behavior is not
+ /// specified.
+ ///
+ /// @since 3.17.0
+ pub augments_syntax_tokens: Option<bool>,
+
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// The token formats the clients supports.
+ pub formats: Vec<TokenFormat>,
+
+ /// Whether the client supports tokens that can span multiple lines.
+ pub multiline_token_support: Option<bool>,
+
+ /// Whether the client supports tokens that can overlap each other.
+ pub overlapping_token_support: Option<bool>,
+
+ /// Which requests the client supports and might send to the server
+ /// depending on the server's capability. Please note that clients might not
+ /// show semantic tokens or degrade some of the user experience if a range
+ /// or full request is advertised by the client but not provided by the
+ /// server. If for example the client capability `requests.full` and
+ /// `request.range` are both set to true but the server only provides a
+ /// range provider the client might not render a minimap correctly or might
+ /// even decide to not show any semantic tokens at all.
+ pub requests: StructRequests,
+
+ /// Whether the client allows the server to actively cancel a
+ /// semantic token request, e.g. supports returning
+ /// LSPErrorCodes.ServerCancelled. If a server does the client
+ /// needs to retrigger the request.
+ ///
+ /// @since 3.17.0
+ pub server_cancel_support: Option<bool>,
+
+ /// The token modifiers that the client supports.
+ pub token_modifiers: Vec<String>,
+
+ /// The token types that the client supports.
+ pub token_types: Vec<String>,
+}
+
+/// Client capabilities for the linked editing range request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LinkedEditingRangeClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Client capabilities specific to the moniker request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MonikerClientCapabilities {
+ /// Whether moniker supports dynamic registration. If this is set to `true`
+ /// the client supports the new `MonikerRegistrationOptions` return value
+ /// for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchyClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Client capabilities specific to inline values.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineValueClientCapabilities {
+ /// Whether implementation supports dynamic registration for inline value providers.
+ pub dynamic_registration: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructResolveSupportProperties3 {
+ /// The properties that a client can resolve lazily.
+ pub properties: Vec<String>,
+}
+
+/// Inlay hint client capabilities.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintClientCapabilities {
+ /// Whether inlay hints support dynamic registration.
+ pub dynamic_registration: Option<bool>,
+
+ /// Indicates which properties a client can resolve lazily on an inlay
+ /// hint.
+ pub resolve_support: Option<StructResolveSupportProperties3>,
+}
+
+/// Client capabilities specific to diagnostic pull requests.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DiagnosticClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is set to `true`
+ /// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// Whether the clients supports related documents for document diagnostic pulls.
+ pub related_document_support: Option<bool>,
+}
+
+/// Client capabilities specific to inline completions.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlineCompletionClientCapabilities {
+ /// Whether implementation supports dynamic registration for inline completion providers.
+ pub dynamic_registration: Option<bool>,
+}
+
+/// Notebook specific client capabilities.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentSyncClientCapabilities {
+ /// Whether implementation supports dynamic registration. If this is
+ /// set to `true` the client supports the new
+ /// `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
+ /// return value for the corresponding server capability as well.
+ pub dynamic_registration: Option<bool>,
+
+ /// The client supports sending execution summary data per cell.
+ pub execution_summary_support: Option<bool>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct StructMessageActionItem {
+ /// Whether the client supports additional attributes which
+ /// are preserved and send back to the server in the
+ /// request's response.
+ pub additional_properties_support: Option<bool>,
+}
+
+/// Show message request client capabilities
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowMessageRequestClientCapabilities {
+ /// Capabilities specific to the `MessageActionItem` type.
+ pub message_action_item: Option<StructMessageActionItem>,
+}
+
+/// Client capabilities for the showDocument request.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShowDocumentClientCapabilities {
+ /// The client has support for the showDocument
+ /// request.
+ pub support: bool,
+}
+
+/// Client capabilities specific to regular expressions.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct RegularExpressionsClientCapabilities {
+ /// The engine's name.
+ pub engine: String,
+
+ /// The engine's version.
+ pub version: Option<String>,
+}
+
+/// Client capabilities specific to the used markdown parser.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct MarkdownClientCapabilities {
+ /// A list of HTML tags that the client allows / supports in
+ /// Markdown.
+ ///
+ /// @since 3.17.0
+ pub allowed_tags: Option<Vec<String>>,
+
+ /// The name of the parser.
+ pub parser: String,
+
+ /// The version of the parser.
+ pub version: Option<String>,
+}
+
+/// The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace
+/// folder configuration changes.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidChangeWorkspaceFoldersNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidChangeWorkspaceFoldersParams,
+}
+
+/// The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress
+/// initiated on the server side.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowWorkDoneProgressCancelNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: WorkDoneProgressCancelParams,
+}
+
+/// The did create files notification is sent from the client to the server when
+/// files were created from within the client.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidCreateFilesNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: CreateFilesParams,
+}
+
+/// The did rename files notification is sent from the client to the server when
+/// files were renamed from within the client.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidRenameFilesNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: RenameFilesParams,
+}
+
+/// The will delete files request is sent from the client to the server before files are actually
+/// deleted as long as the deletion is triggered from within the client.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidDeleteFilesNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DeleteFilesParams,
+}
+
+/// A notification sent when a notebook opens.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentDidOpenNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidOpenNotebookDocumentParams,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentDidChangeNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidChangeNotebookDocumentParams,
+}
+
+/// A notification sent when a notebook document is saved.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentDidSaveNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidSaveNotebookDocumentParams,
+}
+
+/// A notification sent when a notebook closes.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct NotebookDocumentDidCloseNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidCloseNotebookDocumentParams,
+}
+
+/// The initialized notification is sent from the client to the
+/// server after the client is fully initialized and the server
+/// is allowed to send requests from the server to the client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializedNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: InitializedParams,
+}
+
+/// The exit event is sent from the client to the server to
+/// ask the server to exit its process.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ExitNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+}
+
+/// The configuration change notification is sent from the client to the server
+/// when the client's configuration has changed. The notification contains
+/// the changed configuration as defined by the language client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidChangeConfigurationNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidChangeConfigurationParams,
+}
+
+/// The show message notification is sent from a server to a client to ask
+/// the client to display a particular message in the user interface.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowShowMessageNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: ShowMessageParams,
+}
+
+/// The log message notification is sent from the server to the client to ask
+/// the client to log a particular message.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowLogMessageNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: LogMessageParams,
+}
+
+/// The telemetry event notification is sent from the server to the client to ask
+/// the client to log telemetry data.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TelemetryEventNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: LSPAny,
+}
+
+/// The document open notification is sent from the client to the server to signal
+/// newly opened text documents. The document's truth is now managed by the client
+/// and the server must not try to read the document's truth using the document's
+/// uri. Open in this sense means it is managed by the client. It doesn't necessarily
+/// mean that its content is presented in an editor. An open notification must not
+/// be sent more than once without a corresponding close notification send before.
+/// This means open and close notification must be balanced and the max open count
+/// is one.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDidOpenNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidOpenTextDocumentParams,
+}
+
+/// The document change notification is sent from the client to the server to signal
+/// changes to a text document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDidChangeNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidChangeTextDocumentParams,
+}
+
+/// The document close notification is sent from the client to the server when
+/// the document got closed in the client. The document's truth now exists where
+/// the document's uri points to (e.g. if the document's uri is a file uri the
+/// truth now exists on disk). As with the open notification the close notification
+/// is about managing the document's content. Receiving a close notification
+/// doesn't mean that the document was open in an editor before. A close
+/// notification requires a previous open notification to be sent.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDidCloseNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidCloseTextDocumentParams,
+}
+
+/// The document save notification is sent from the client to the server when
+/// the document got saved in the client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDidSaveNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidSaveTextDocumentParams,
+}
+
+/// A document will save notification is sent from the client to the server before
+/// the document is actually saved.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentWillSaveNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: WillSaveTextDocumentParams,
+}
+
+/// The watched files notification is sent from the client to the server when
+/// the client detects changes to file watched by the language client.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDidChangeWatchedFilesNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: DidChangeWatchedFilesParams,
+}
+
+/// Diagnostics notification are sent from the server to the client to signal
+/// results of validation runs.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPublishDiagnosticsNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: PublishDiagnosticsParams,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct SetTraceNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: SetTraceParams,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct LogTraceNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: LogTraceParams,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CancelRequestNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: CancelParams,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ProgressNotification {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPNotificationMethods,
+
+ pub params: ProgressParams,
+}
+
+/// An identifier to denote a specific request.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum LSPId {
+ Int(i32),
+ String(String),
+}
+
+/// An identifier to denote a specific response.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(untagged)]
+pub enum LSPIdOptional {
+ Int(i32),
+ String(String),
+ None,
+}
+
+/// A request to resolve the implementation locations of a symbol at a given text
+/// document position. The request's parameter is of type [TextDocumentPositionParams]
+/// the response is of type [Definition] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentImplementationRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ImplementationParams,
+}
+
+/// Response to the [TextDocumentImplementationRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentImplementationResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Definition, Vec<DefinitionLink>>>,
+}
+
+/// A request to resolve the type definition locations of a symbol at a given text
+/// document position. The request's parameter is of type [TextDocumentPositionParams]
+/// the response is of type [Definition] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentTypeDefinitionRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: TypeDefinitionParams,
+}
+
+/// Response to the [TextDocumentTypeDefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentTypeDefinitionResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Definition, Vec<DefinitionLink>>>,
+}
+
+/// The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWorkspaceFoldersRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceWorkspaceFoldersRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWorkspaceFoldersResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<WorkspaceFolder>>,
+}
+
+/// The 'workspace/configuration' request is sent from the server to the client to fetch a certain
+/// configuration setting.
+///
+/// This pull model replaces the old push model were the client signaled configuration change via an
+/// event. If the server still needs to react to configuration changes (since the server caches the
+/// result of `workspace/configuration` requests) the server should register for an empty configuration
+/// change event and empty the cache if such an event is received.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceConfigurationRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ConfigurationParams,
+}
+
+/// Response to the [WorkspaceConfigurationRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceConfigurationResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: Vec<LSPAny>,
+}
+
+/// A request to list all color symbols found in a given text document. The request's
+/// parameter is of type [DocumentColorParams] the
+/// response is of type {@link ColorInformation ColorInformation[]} or a Thenable
+/// that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentColorRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentColorParams,
+}
+
+/// Response to the [TextDocumentDocumentColorRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentColorResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: Vec<ColorInformation>,
+}
+
+/// A request to list all presentation for a color. The request's
+/// parameter is of type [ColorPresentationParams] the
+/// response is of type {@link ColorInformation ColorInformation[]} or a Thenable
+/// that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentColorPresentationRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ColorPresentationParams,
+}
+
+/// Response to the [TextDocumentColorPresentationRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentColorPresentationResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: Vec<ColorPresentation>,
+}
+
+/// A request to provide folding ranges in a document. The request's
+/// parameter is of type [FoldingRangeParams], the
+/// response is of type [FoldingRangeList] or a Thenable
+/// that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentFoldingRangeRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: FoldingRangeParams,
+}
+
+/// Response to the [TextDocumentFoldingRangeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentFoldingRangeResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<FoldingRange>>,
+}
+
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFoldingRangeRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceFoldingRangeRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceFoldingRangeRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to resolve the type definition locations of a symbol at a given text
+/// document position. The request's parameter is of type [TextDocumentPositionParams]
+/// the response is of type [Declaration] or a typed array of [DeclarationLink]
+/// or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDeclarationRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DeclarationParams,
+}
+
+/// Response to the [TextDocumentDeclarationRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDeclarationResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Declaration, Vec<DeclarationLink>>>,
+}
+
+/// A request to provide selection ranges in a document. The request's
+/// parameter is of type [SelectionRangeParams], the
+/// response is of type {@link SelectionRange SelectionRange[]} or a Thenable
+/// that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSelectionRangeRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: SelectionRangeParams,
+}
+
+/// Response to the [TextDocumentSelectionRangeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSelectionRangeResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<SelectionRange>>,
+}
+
+/// The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress
+/// reporting from the server.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowWorkDoneProgressCreateRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: WorkDoneProgressCreateParams,
+}
+
+/// Response to the [WindowWorkDoneProgressCreateRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowWorkDoneProgressCreateResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to result a `CallHierarchyItem` in a document at a given position.
+/// Can be used as an input to an incoming or outgoing call hierarchy.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareCallHierarchyRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CallHierarchyPrepareParams,
+}
+
+/// Response to the [TextDocumentPrepareCallHierarchyRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareCallHierarchyResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<CallHierarchyItem>>,
+}
+
+/// A request to resolve the incoming calls for a given `CallHierarchyItem`.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyIncomingCallsRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CallHierarchyIncomingCallsParams,
+}
+
+/// Response to the [CallHierarchyIncomingCallsRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyIncomingCallsResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<CallHierarchyIncomingCall>>,
+}
+
+/// A request to resolve the outgoing calls for a given `CallHierarchyItem`.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyOutgoingCallsRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CallHierarchyOutgoingCallsParams,
+}
+
+/// Response to the [CallHierarchyOutgoingCallsRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CallHierarchyOutgoingCallsResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<CallHierarchyOutgoingCall>>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensFullRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: SemanticTokensParams,
+}
+
+/// Response to the [TextDocumentSemanticTokensFullRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensFullResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<SemanticTokens>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensFullDeltaRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: SemanticTokensDeltaParams,
+}
+
+/// Response to the [TextDocumentSemanticTokensFullDeltaRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensFullDeltaResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<SemanticTokens, SemanticTokensDelta>>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensRangeRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: SemanticTokensRangeParams,
+}
+
+/// Response to the [TextDocumentSemanticTokensRangeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSemanticTokensRangeResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<SemanticTokens>,
+}
+
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSemanticTokensRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceSemanticTokensRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSemanticTokensRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to show a document. This request might open an
+/// external program depending on the value of the URI to open.
+/// For example a request to open `https://code.visualstudio.com/`
+/// will very likely open the URI in a WEB browser.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowShowDocumentRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ShowDocumentParams,
+}
+
+/// Response to the [WindowShowDocumentRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowShowDocumentResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: ShowDocumentResult,
+}
+
+/// A request to provide ranges that can be edited together.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentLinkedEditingRangeRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: LinkedEditingRangeParams,
+}
+
+/// Response to the [TextDocumentLinkedEditingRangeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentLinkedEditingRangeResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<LinkedEditingRanges>,
+}
+
+/// The will create files request is sent from the client to the server before files are actually
+/// created as long as the creation is triggered from within the client.
+///
+/// The request can return a `WorkspaceEdit` which will be applied to workspace before the
+/// files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file
+/// to be created.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillCreateFilesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CreateFilesParams,
+}
+
+/// Response to the [WorkspaceWillCreateFilesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillCreateFilesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<WorkspaceEdit>,
+}
+
+/// The will rename files request is sent from the client to the server before files are actually
+/// renamed as long as the rename is triggered from within the client.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillRenameFilesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: RenameFilesParams,
+}
+
+/// Response to the [WorkspaceWillRenameFilesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillRenameFilesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<WorkspaceEdit>,
+}
+
+/// The did delete files notification is sent from the client to the server when
+/// files were deleted from within the client.
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillDeleteFilesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DeleteFilesParams,
+}
+
+/// Response to the [WorkspaceWillDeleteFilesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceWillDeleteFilesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<WorkspaceEdit>,
+}
+
+/// A request to get the moniker of a symbol at a given text document position.
+/// The request parameter is of type [TextDocumentPositionParams].
+/// The response is of type {@link Moniker Moniker[]} or `null`.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentMonikerRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: MonikerParams,
+}
+
+/// Response to the [TextDocumentMonikerRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentMonikerResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<Moniker>>,
+}
+
+/// A request to result a `TypeHierarchyItem` in a document at a given position.
+/// Can be used as an input to a subtypes or supertypes type hierarchy.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareTypeHierarchyRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: TypeHierarchyPrepareParams,
+}
+
+/// Response to the [TextDocumentPrepareTypeHierarchyRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareTypeHierarchyResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TypeHierarchyItem>>,
+}
+
+/// A request to resolve the supertypes for a given `TypeHierarchyItem`.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySupertypesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: TypeHierarchySupertypesParams,
+}
+
+/// Response to the [TypeHierarchySupertypesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySupertypesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TypeHierarchyItem>>,
+}
+
+/// A request to resolve the subtypes for a given `TypeHierarchyItem`.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySubtypesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: TypeHierarchySubtypesParams,
+}
+
+/// Response to the [TypeHierarchySubtypesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TypeHierarchySubtypesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TypeHierarchyItem>>,
+}
+
+/// A request to provide inline values in a document. The request's parameter is of
+/// type [InlineValueParams], the response is of type
+/// {@link InlineValue InlineValue[]} or a Thenable that resolves to such.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlineValueRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: InlineValueParams,
+}
+
+/// Response to the [TextDocumentInlineValueRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlineValueResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<InlineValue>>,
+}
+
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceInlineValueRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceInlineValueRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceInlineValueRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to provide inlay hints in a document. The request's parameter is of
+/// type [InlayHintsParams], the response is of type
+/// {@link InlayHint InlayHint[]} or a Thenable that resolves to such.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlayHintRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: InlayHintParams,
+}
+
+/// Response to the [TextDocumentInlayHintRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlayHintResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<InlayHint>>,
+}
+
+/// A request to resolve additional properties for an inlay hint.
+/// The request's parameter is of type [InlayHint], the response is
+/// of type [InlayHint] or a Thenable that resolves to such.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: InlayHint,
+}
+
+/// Response to the [InlayHintResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: InlayHint,
+}
+
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceInlayHintRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceInlayHintRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceInlayHintRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// The document diagnostic request definition.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDiagnosticRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentDiagnosticParams,
+}
+
+/// Response to the [TextDocumentDiagnosticRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDiagnosticResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: DocumentDiagnosticReport,
+}
+
+/// The workspace diagnostic request definition.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: WorkspaceDiagnosticParams,
+}
+
+/// Response to the [WorkspaceDiagnosticRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: WorkspaceDiagnosticReport,
+}
+
+/// The diagnostic refresh request definition.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceDiagnosticRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceDiagnosticRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to provide inline completions in a document. The request's parameter is of
+/// type [InlineCompletionParams], the response is of type
+/// {@link InlineCompletion InlineCompletion[]} or a Thenable that resolves to such.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlineCompletionRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: InlineCompletionParams,
+}
+
+/// Response to the [TextDocumentInlineCompletionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentInlineCompletionResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<InlineCompletionList, Vec<InlineCompletionItem>>>,
+}
+
+/// The `client/registerCapability` request is sent from the server to the client to register a new capability
+/// handler on the client side.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ClientRegisterCapabilityRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: RegistrationParams,
+}
+
+/// Response to the [ClientRegisterCapabilityRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ClientRegisterCapabilityResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability
+/// handler on the client side.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ClientUnregisterCapabilityRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: UnregistrationParams,
+}
+
+/// Response to the [ClientUnregisterCapabilityRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ClientUnregisterCapabilityResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// The initialize request is sent from the client to the server.
+/// It is sent once as the request after starting up the server.
+/// The requests parameter is of type [InitializeParams]
+/// the response if of type [InitializeResult] of a Thenable that
+/// resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializeRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: InitializeParams,
+}
+
+/// Response to the [InitializeRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct InitializeResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: InitializeResult,
+}
+
+/// A shutdown request is sent from the client to the server.
+/// It is sent once when the client decides to shutdown the
+/// server. The only notification that is sent after a shutdown request
+/// is the exit event.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShutdownRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [ShutdownRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct ShutdownResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// The show message request is sent from the server to the client to show a message
+/// and a set of options actions to the user.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowShowMessageRequestRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ShowMessageRequestParams,
+}
+
+/// Response to the [WindowShowMessageRequestRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WindowShowMessageRequestResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<MessageActionItem>,
+}
+
+/// A document will save request is sent from the client to the server before
+/// the document is actually saved. The request can return an array of TextEdits
+/// which will be applied to the text document before it is saved. Please note that
+/// clients might drop results if computing the text edits took too long or if a
+/// server constantly fails on this request. This is done to keep the save fast and
+/// reliable.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentWillSaveWaitUntilRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: WillSaveTextDocumentParams,
+}
+
+/// Response to the [TextDocumentWillSaveWaitUntilRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentWillSaveWaitUntilResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TextEdit>>,
+}
+
+/// Request to request completion at a given text document position. The request's
+/// parameter is of type [TextDocumentPosition] the response
+/// is of type {@link CompletionItem CompletionItem[]} or [CompletionList]
+/// or a Thenable that resolves to such.
+///
+/// The request can delay the computation of the [`detail`][`CompletionItem::detail`]
+/// and [`documentation`][`CompletionItem::documentation`] properties to the `completionItem/resolve`
+/// request. However, properties that are needed for the initial sorting and filtering, like `sortText`,
+/// `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCompletionRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CompletionParams,
+}
+
+/// Response to the [TextDocumentCompletionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCompletionResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Vec<CompletionItem>, CompletionList>>,
+}
+
+/// Request to resolve additional information for a given completion item.The request's
+/// parameter is of type [CompletionItem] the response
+/// is of type [CompletionItem] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionItemResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CompletionItem,
+}
+
+/// Response to the [CompletionItemResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CompletionItemResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: CompletionItem,
+}
+
+/// Request to request hover information at a given text document position. The request's
+/// parameter is of type [TextDocumentPosition] the response is of
+/// type [Hover] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentHoverRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: HoverParams,
+}
+
+/// Response to the [TextDocumentHoverRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentHoverResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Hover>,
+}
+
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSignatureHelpRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: SignatureHelpParams,
+}
+
+/// Response to the [TextDocumentSignatureHelpRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentSignatureHelpResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<SignatureHelp>,
+}
+
+/// A request to resolve the definition location of a symbol at a given text
+/// document position. The request's parameter is of type [TextDocumentPosition]
+/// the response is of either type [Definition] or a typed array of
+/// [DefinitionLink] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDefinitionRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DefinitionParams,
+}
+
+/// Response to the [TextDocumentDefinitionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDefinitionResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Definition, Vec<DefinitionLink>>>,
+}
+
+/// A request to resolve project-wide references for the symbol denoted
+/// by the given text document position. The request's parameter is of
+/// type [ReferenceParams] the response is of type
+/// {@link Location Location[]} or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentReferencesRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ReferenceParams,
+}
+
+/// Response to the [TextDocumentReferencesRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentReferencesResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<Location>>,
+}
+
+/// Request to resolve a [DocumentHighlight] for a given
+/// text document position. The request's parameter is of type [TextDocumentPosition]
+/// the request response is an array of type [DocumentHighlight]
+/// or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentHighlightRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentHighlightParams,
+}
+
+/// Response to the [TextDocumentDocumentHighlightRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentHighlightResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<DocumentHighlight>>,
+}
+
+/// A request to list all symbols found in a given text document. The request's
+/// parameter is of type [TextDocumentIdentifier] the
+/// response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable
+/// that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentSymbolRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentSymbolParams,
+}
+
+/// Response to the [TextDocumentDocumentSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentSymbolResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Vec<SymbolInformation>, Vec<DocumentSymbol>>>,
+}
+
+/// A request to provide commands for the given text document and range.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCodeActionRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CodeActionParams,
+}
+
+/// Response to the [TextDocumentCodeActionRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCodeActionResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<OR2<Command, CodeAction>>>,
+}
+
+/// Request to resolve additional information for a given code action.The request's
+/// parameter is of type [CodeAction] the response
+/// is of type [CodeAction] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CodeAction,
+}
+
+/// Response to the [CodeActionResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeActionResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: CodeAction,
+}
+
+/// A request to list project-wide symbols matching the query string given
+/// by the [WorkspaceSymbolParams]. The response is
+/// of type {@link SymbolInformation SymbolInformation[]} or a Thenable that
+/// resolves to such.
+///
+/// @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients
+/// need to advertise support for WorkspaceSymbols via the client capability
+/// `workspace.symbol.resolveSupport`.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: WorkspaceSymbolParams,
+}
+
+/// Response to the [WorkspaceSymbolRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<OR2<Vec<SymbolInformation>, Vec<WorkspaceSymbol>>>,
+}
+
+/// A request to resolve the range inside the workspace
+/// symbol's location.
+///
+/// @since 3.17.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: WorkspaceSymbol,
+}
+
+/// Response to the [WorkspaceSymbolResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceSymbolResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: WorkspaceSymbol,
+}
+
+/// A request to provide code lens for the given text document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCodeLensRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CodeLensParams,
+}
+
+/// Response to the [TextDocumentCodeLensRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentCodeLensResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<CodeLens>>,
+}
+
+/// A request to resolve a command for a given code lens.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: CodeLens,
+}
+
+/// Response to the [CodeLensResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct CodeLensResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: CodeLens,
+}
+
+/// A request to refresh all code actions
+///
+/// @since 3.16.0
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceCodeLensRefreshRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+}
+
+/// Response to the [WorkspaceCodeLensRefreshRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceCodeLensRefreshResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: LSPNull,
+}
+
+/// A request to provide document links
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentLinkRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentLinkParams,
+}
+
+/// Response to the [TextDocumentDocumentLinkRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentDocumentLinkResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<DocumentLink>>,
+}
+
+/// Request to resolve additional information for a given document link. The request's
+/// parameter is of type [DocumentLink] the response
+/// is of type [DocumentLink] or a Thenable that resolves to such.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkResolveRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentLink,
+}
+
+/// Response to the [DocumentLinkResolveRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct DocumentLinkResolveResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: DocumentLink,
+}
+
+/// A request to format a whole document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentFormattingRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentFormattingParams,
+}
+
+/// Response to the [TextDocumentFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentFormattingResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TextEdit>>,
+}
+
+/// A request to format a range in a document.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRangeFormattingRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentRangeFormattingParams,
+}
+
+/// Response to the [TextDocumentRangeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRangeFormattingResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TextEdit>>,
+}
+
+/// A request to format ranges in a document.
+///
+/// @since 3.18.0
+/// @proposed
+#[cfg(feature = "proposed", since = "3.18.0")]
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRangesFormattingRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentRangesFormattingParams,
+}
+
+/// Response to the [TextDocumentRangesFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRangesFormattingResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TextEdit>>,
+}
+
+/// A request to format a document on type.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentOnTypeFormattingRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: DocumentOnTypeFormattingParams,
+}
+
+/// Response to the [TextDocumentOnTypeFormattingRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentOnTypeFormattingResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<Vec<TextEdit>>,
+}
+
+/// A request to rename a symbol.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRenameRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: RenameParams,
+}
+
+/// Response to the [TextDocumentRenameRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentRenameResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<WorkspaceEdit>,
+}
+
+/// A request to test and perform the setup necessary for a rename.
+///
+/// @since 3.16 - support for default behavior
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareRenameRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: PrepareRenameParams,
+}
+
+/// Response to the [TextDocumentPrepareRenameRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct TextDocumentPrepareRenameResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<PrepareRenameResult>,
+}
+
+/// A request send from the client to the server to execute a command. The request might return
+/// a workspace edit which the client will apply to the workspace.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceExecuteCommandRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ExecuteCommandParams,
+}
+
+/// Response to the [WorkspaceExecuteCommandRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceExecuteCommandResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option<LSPAny>,
+}
+
+/// A request sent from the server to the client to modified certain resources.
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceApplyEditRequest {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPId,
+
+ pub params: ApplyWorkspaceEditParams,
+}
+
+/// Response to the [WorkspaceApplyEditRequest].
+#[derive(Serialize, Deserialize, PartialEq, Debug, Eq, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct WorkspaceApplyEditResponse {
+ /// The version of the JSON RPC protocol.
+ pub jsonrpc: String,
+
+ /// The method to be invoked.
+ pub method: LSPRequestMethods,
+
+ /// The request id.
+ pub id: LSPIdOptional,
+
+ pub result: ApplyWorkspaceEditResult,
+}