use serde::{Deserialize, Serialize, de, ser};
use std::{collections::HashMap, fmt};
use crate::*;
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ImplementationParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Location {
pub uri: Uri,
pub range: Range,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ImplementationRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub implementation_options: ImplementationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeDefinitionParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeDefinitionRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub type_definition_options: TypeDefinitionOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceFolder {
pub uri: Uri,
pub name: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeWorkspaceFoldersParams {
pub event: WorkspaceFoldersChangeEvent,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ConfigurationParams {
pub items: Vec<ConfigurationItem>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentColorParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ColorInformation {
pub range: Range,
pub color: Color,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentColorRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_color_options: DocumentColorOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ColorPresentationParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub color: Color,
pub range: Range,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ColorPresentation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textEdit")]
pub text_edit: Option<TextEdit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "additionalTextEdits")]
pub additional_text_edits: Option<Vec<TextEdit>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workDoneProgress")]
pub work_done_progress: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentRegistrationOptions {
#[serde(rename = "documentSelector")]
pub document_selector: Option<DocumentSelector>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRange {
#[serde(rename = "startLine")]
pub start_line: u32,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "startCharacter")]
pub start_character: Option<u32>,
#[serde(rename = "endLine")]
pub end_line: u32,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "endCharacter")]
pub end_character: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<FoldingRangeKind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "collapsedText")]
pub collapsed_text: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub folding_range_options: FoldingRangeOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeclarationParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeclarationRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub declaration_options: DeclarationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectionRangeParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub positions: Vec<Position>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectionRange {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent: Option<Box<SelectionRange>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectionRangeRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub selection_range_options: SelectionRangeOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressCreateParams {
pub token: ProgressToken,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressCancelParams {
pub token: ProgressToken,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyPrepareParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyItem {
pub name: String,
pub kind: SymbolKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<SymbolTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
pub uri: Uri,
pub range: Range,
#[serde(rename = "selectionRange")]
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub call_hierarchy_options: CallHierarchyOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyIncomingCallsParams {
pub item: CallHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyIncomingCall {
pub from: CallHierarchyItem,
#[serde(rename = "fromRanges")]
pub from_ranges: Vec<Range>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyOutgoingCallsParams {
pub item: CallHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyOutgoingCall {
pub to: CallHierarchyItem,
#[serde(rename = "fromRanges")]
pub from_ranges: Vec<Range>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokens {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resultId")]
pub result_id: Option<String>,
pub data: Vec<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensPartialResult {
pub data: Vec<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub semantic_tokens_options: SemanticTokensOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensDeltaParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(rename = "previousResultId")]
pub previous_result_id: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensDelta {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resultId")]
pub result_id: Option<String>,
pub edits: Vec<SemanticTokensEdit>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensDeltaPartialResult {
pub edits: Vec<SemanticTokensEdit>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensRangeParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub range: Range,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowDocumentParams {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub external: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "takeFocus")]
pub take_focus: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selection: Option<Range>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowDocumentResult {
pub success: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LinkedEditingRangeParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LinkedEditingRanges {
pub ranges: Vec<Range>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "wordPattern")]
pub word_pattern: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LinkedEditingRangeRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub linked_editing_range_options: LinkedEditingRangeOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CreateFilesParams {
pub files: Vec<FileCreate>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceEdit {
#[serde(skip_serializing_if = "Option::is_none")]
pub changes: Option<HashMap<Uri, Vec<TextEdit>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentChanges")]
pub document_changes: Option<Vec<Or2<TextDocumentEdit, FileChangeContents>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "changeAnnotations")]
pub change_annotations: Option<HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationRegistrationOptions {
pub filters: Vec<FileOperationFilter>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameFilesParams {
pub files: Vec<FileRename>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeleteFilesParams {
pub files: Vec<FileDelete>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MonikerParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Moniker {
pub scheme: String,
pub identifier: String,
pub unique: UniquenessLevel,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<MonikerKind>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MonikerRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub moniker_options: MonikerOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchyPrepareParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchyItem {
pub name: String,
pub kind: SymbolKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<SymbolTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
pub uri: Uri,
pub range: Range,
#[serde(rename = "selectionRange")]
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchyRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub type_hierarchy_options: TypeHierarchyOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchySupertypesParams {
pub item: TypeHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchySubtypesParams {
pub item: TypeHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub range: Range,
pub context: InlineValueContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub inline_value_options: InlineValueOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub range: Range,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHint {
pub position: Position,
pub label: Or2<String, Vec<InlayHintLabelPart>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<InlayHintKind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textEdits")]
pub text_edits: Option<Vec<TextEdit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<Or2<String, MarkupContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "paddingLeft")]
pub padding_left: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "paddingRight")]
pub padding_right: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub inlay_hint_options: InlayHintOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentDiagnosticParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "previousResultId")]
pub previous_result_id: Option<String>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentDiagnosticReportPartialResult {
#[serde(rename = "relatedDocuments")]
pub related_documents: HashMap<Uri, DocumentDiagnosticReportContents>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticServerCancellationData {
#[serde(rename = "retriggerRequest")]
pub retrigger_request: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub diagnostic_options: DiagnosticOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceDiagnosticParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
#[serde(rename = "previousResultIds")]
pub previous_result_ids: Vec<PreviousResultId>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceDiagnosticReport {
pub items: Vec<WorkspaceDocumentDiagnosticReport>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceDiagnosticReportPartialResult {
pub items: Vec<WorkspaceDocumentDiagnosticReport>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidOpenNotebookDocumentParams {
#[serde(rename = "notebookDocument")]
pub notebook_document: NotebookDocument,
#[serde(rename = "cellTextDocuments")]
pub cell_text_documents: Vec<TextDocumentItem>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeNotebookDocumentParams {
#[serde(rename = "notebookDocument")]
pub notebook_document: VersionedNotebookDocumentIdentifier,
pub change: NotebookDocumentChangeEvent,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidSaveNotebookDocumentParams {
#[serde(rename = "notebookDocument")]
pub notebook_document: NotebookDocumentIdentifier,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidCloseNotebookDocumentParams {
#[serde(rename = "notebookDocument")]
pub notebook_document: NotebookDocumentIdentifier,
#[serde(rename = "cellTextDocuments")]
pub cell_text_documents: Vec<TextDocumentIdentifier>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionParams {
pub context: InlineCompletionContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionList {
pub items: Vec<InlineCompletionItem>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionItem {
#[serde(rename = "insertText")]
pub insert_text: Or2<String, StringValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "filterText")]
pub filter_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<Range>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub inline_completion_options: InlineCompletionOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RegistrationParams {
pub registrations: Vec<Registration>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct UnregistrationParams {
pub unregisterations: Vec<Unregistration>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializeParams {
#[serde(rename = "processId")]
pub process_id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "clientInfo")]
pub client_info: Option<InitializeParamsClientInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[deprecated = "in favour of rootUri."]
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rootPath")]
pub root_path: Option<String>,
#[deprecated = "in favour of workspaceFolders."]
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rootUri")]
pub root_uri: Option<Uri>,
pub capabilities: ClientCapabilities,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "initializationOptions")]
pub initialization_options: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trace: Option<TraceValues>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub workspace_folders_initialize_params: WorkspaceFoldersInitializeParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializeResult {
pub capabilities: ServerCapabilities,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "serverInfo")]
pub server_info: Option<InitializeResultServerInfo>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializeError {
pub retry: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializedParams {}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeConfigurationParams {
pub settings: Value,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeConfigurationRegistrationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<Or2<String, Vec<String>>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowMessageParams {
#[serde(rename = "type")]
pub ty: MessageType,
pub message: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowMessageRequestParams {
#[serde(rename = "type")]
pub ty: MessageType,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub actions: Option<Vec<MessageActionItem>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MessageActionItem {
pub title: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LogMessageParams {
#[serde(rename = "type")]
pub ty: MessageType,
pub message: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidOpenTextDocumentParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentItem,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeTextDocumentParams {
#[serde(rename = "textDocument")]
pub text_document: VersionedTextDocumentIdentifier,
#[serde(rename = "contentChanges")]
pub content_changes: Vec<TextDocumentContentChangeEvent>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentChangeRegistrationOptions {
#[serde(rename = "syncKind")]
pub sync_kind: TextDocumentSyncKind,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidCloseTextDocumentParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidSaveTextDocumentParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentSaveRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub save_options: SaveOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WillSaveTextDocumentParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub reason: TextDocumentSaveReason,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextEdit {
pub range: Range,
#[serde(rename = "newText")]
pub new_text: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeWatchedFilesParams {
pub changes: Vec<FileEvent>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeWatchedFilesRegistrationOptions {
pub watchers: Vec<FileSystemWatcher>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PublishDiagnosticsParams {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i32>,
pub diagnostics: Vec<Diagnostic>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<CompletionContext>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionItem {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "labelDetails")]
pub label_details: Option<CompletionItemLabelDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<CompletionItemKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<CompletionItemTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Or2<String, MarkupContent>>,
#[deprecated = "Use `tags` instead."]
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preselect: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "sortText")]
pub sort_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "filterText")]
pub filter_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertText")]
pub insert_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextFormat")]
pub insert_text_format: Option<InsertTextFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextMode")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textEdit")]
pub text_edit: Option<Or2<TextEdit, InsertReplaceEdit>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textEditText")]
pub text_edit_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "additionalTextEdits")]
pub additional_text_edits: Option<Vec<TextEdit>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "commitCharacters")]
pub commit_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionList {
#[serde(rename = "isIncomplete")]
pub is_incomplete: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "itemDefaults")]
pub item_defaults: Option<CompletionListItemDefaults>,
pub items: Vec<CompletionItem>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub completion_options: CompletionOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct HoverParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Hover {
pub contents: Or3<MarkupContent, MarkedString, Vec<MarkedString>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<Range>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct HoverRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub hover_options: HoverOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelpParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<SignatureHelpContext>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelp {
pub signatures: Vec<SignatureInformation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "activeSignature")]
pub active_signature: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "activeParameter")]
pub active_parameter: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelpRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub signature_help_options: SignatureHelpOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DefinitionParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DefinitionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub definition_options: DefinitionOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ReferenceParams {
pub context: ReferenceContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ReferenceRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub reference_options: ReferenceOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentHighlightParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentHighlight {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<DocumentHighlightKind>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentHighlightRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_highlight_options: DocumentHighlightOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbolParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SymbolInformation {
#[deprecated = "Use tags instead"]
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
pub location: Location,
#[serde(flatten)]
pub base_symbol_information: BaseSymbolInformation,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbol {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
pub kind: SymbolKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<SymbolTag>>,
#[deprecated = "Use tags instead"]
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
pub range: Range,
#[serde(rename = "selectionRange")]
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<DocumentSymbol>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbolRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_symbol_options: DocumentSymbolOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub range: Range,
pub context: CodeActionContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Command {
pub title: String,
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<Vec<Value>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeAction {
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<CodeActionKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostics: Option<Vec<Diagnostic>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "isPreferred")]
pub is_preferred: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disabled: Option<CodeActionDisabled>,
#[serde(skip_serializing_if = "Option::is_none")]
pub edit: Option<WorkspaceEdit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub code_action_options: CodeActionOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolParams {
pub query: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbol {
pub location: Or2<Location, WorkspaceSymbolLocation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
#[serde(flatten)]
pub base_symbol_information: BaseSymbolInformation,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolRegistrationOptions {
#[serde(flatten)]
pub workspace_symbol_options: WorkspaceSymbolOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLensParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLens {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLensRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub code_lens_options: CodeLensOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentLinkParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentLink {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<Uri>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentLinkRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_link_options: DocumentLinkOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentFormattingParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_formatting_options: DocumentFormattingOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentRangeFormattingParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub range: Range,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentRangeFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_range_formatting_options: DocumentRangeFormattingOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentRangesFormattingParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub ranges: Vec<Range>,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentOnTypeFormattingParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub position: Position,
pub ch: String,
pub options: FormattingOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentOnTypeFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_on_type_formatting_options: DocumentOnTypeFormattingOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub position: Position,
#[serde(rename = "newName")]
pub new_name: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub rename_options: RenameOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PrepareRenameParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ExecuteCommandParams {
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<Vec<Value>>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ExecuteCommandRegistrationOptions {
#[serde(flatten)]
pub execute_command_options: ExecuteCommandOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ApplyWorkspaceEditParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
pub edit: WorkspaceEdit,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ApplyWorkspaceEditResult {
pub applied: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "failureReason")]
pub failure_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "failedChange")]
pub failed_change: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressBegin {
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancellable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub percentage: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub cancellable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub percentage: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressEnd {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SetTraceParams {
pub value: TraceValues,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LogTraceParams {
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub verbose: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CancelParams {
pub id: Or2<i32, String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ProgressParams {
pub token: ProgressToken,
pub value: Value,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentPositionParams {
#[serde(rename = "textDocument")]
pub text_document: TextDocumentIdentifier,
pub position: Position,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkDoneProgressParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workDoneToken")]
pub work_done_token: Option<ProgressToken>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PartialResultParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "partialResultToken")]
pub partial_result_token: Option<ProgressToken>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LocationLink {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "originSelectionRange")]
pub origin_selection_range: Option<Range>,
#[serde(rename = "targetUri")]
pub target_uri: Uri,
#[serde(rename = "targetRange")]
pub target_range: Range,
#[serde(rename = "targetSelectionRange")]
pub target_selection_range: Range,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Range {
pub start: Position,
pub end: Position,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ImplementationOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct StaticRegistrationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeDefinitionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceFoldersChangeEvent {
pub added: Vec<WorkspaceFolder>,
pub removed: Vec<WorkspaceFolder>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ConfigurationItem {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "scopeUri")]
pub scope_uri: Option<Uri>,
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentIdentifier {
pub uri: Uri,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Color {
pub red: f64,
pub green: f64,
pub blue: f64,
pub alpha: f64,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentColorOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeclarationOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Position {
pub line: u32,
pub character: u32,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectionRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensOptions {
pub legend: SemanticTokensLegend,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full: Option<Or2<bool, SemanticTokensOptionsFull>>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensEdit {
pub start: u32,
#[serde(rename = "deleteCount")]
pub delete_count: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<u32>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LinkedEditingRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileCreate {
pub uri: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentEdit {
#[serde(rename = "textDocument")]
pub text_document: OptionalVersionedTextDocumentIdentifier,
pub edits: Vec<Or2<TextEdit, AnnotatedTextEdit>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CreateFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<CreateFileOptions>,
#[serde(flatten)]
pub resource_operation: ResourceOperation,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameFile {
#[serde(rename = "oldUri")]
pub old_uri: Uri,
#[serde(rename = "newUri")]
pub new_uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<RenameFileOptions>,
#[serde(flatten)]
pub resource_operation: ResourceOperation,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeleteFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<DeleteFileOptions>,
#[serde(flatten)]
pub resource_operation: ResourceOperation,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ChangeAnnotation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "needsConfirmation")]
pub needs_confirmation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationFilter {
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
pub pattern: FileOperationPattern,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileRename {
#[serde(rename = "oldUri")]
pub old_uri: String,
#[serde(rename = "newUri")]
pub new_uri: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileDelete {
pub uri: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MonikerOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchyOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueContext {
#[serde(rename = "frameId")]
pub frame_id: i32,
#[serde(rename = "stoppedLocation")]
pub stopped_location: Range,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueText {
pub range: Range,
pub text: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueVariableLookup {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "variableName")]
pub variable_name: Option<String>,
#[serde(rename = "caseSensitiveLookup")]
pub case_sensitive_lookup: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueEvaluatableExpression {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub expression: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintLabelPart {
pub value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<Or2<String, MarkupContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<Location>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MarkupContent {
pub kind: MarkupKind,
pub value: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RelatedFullDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relatedDocuments")]
pub related_documents: Option<HashMap<Uri, DocumentDiagnosticReportContents>>,
#[serde(flatten)]
pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RelatedUnchangedDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relatedDocuments")]
pub related_documents: Option<HashMap<Uri, DocumentDiagnosticReportContents>>,
#[serde(flatten)]
pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FullDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resultId")]
pub result_id: Option<String>,
pub items: Vec<Diagnostic>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct UnchangedDocumentDiagnosticReport {
#[serde(rename = "resultId")]
pub result_id: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
#[serde(rename = "interFileDependencies")]
pub inter_file_dependencies: bool,
#[serde(rename = "workspaceDiagnostics")]
pub workspace_diagnostics: bool,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PreviousResultId {
pub uri: Uri,
pub value: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocument {
pub uri: Uri,
#[serde(rename = "notebookType")]
pub notebook_type: String,
pub version: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<LSPObject>,
pub cells: Vec<NotebookCell>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentItem {
pub uri: Uri,
#[serde(rename = "languageId")]
pub language_id: String,
pub version: i32,
pub text: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct VersionedNotebookDocumentIdentifier {
pub version: i32,
pub uri: Uri,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentChangeEvent {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<LSPObject>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<NotebookDocumentChangeEventCells>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentIdentifier {
pub uri: Uri,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionContext {
#[serde(rename = "triggerKind")]
pub trigger_kind: InlineCompletionTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "selectedCompletionInfo")]
pub selected_completion_info: Option<SelectedCompletionInfo>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct StringValue {
pub value: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Registration {
pub id: String,
pub method: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "registerOptions")]
pub register_options: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Unregistration {
pub id: String,
pub method: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceFoldersInitializeParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workspaceFolders")]
pub workspace_folders: Option<Vec<WorkspaceFolder>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ServerCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "positionEncoding")]
pub position_encoding: Option<PositionEncodingKind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textDocumentSync")]
pub text_document_sync: Option<Or2<TextDocumentSyncOptions, TextDocumentSyncKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "notebookDocumentSync")]
pub notebook_document_sync:
Option<Or2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "completionProvider")]
pub completion_provider: Option<CompletionOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "hoverProvider")]
pub hover_provider: Option<Or2<bool, HoverOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "signatureHelpProvider")]
pub signature_help_provider: Option<SignatureHelpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "declarationProvider")]
pub declaration_provider: Option<Or3<bool, DeclarationOptions, DeclarationRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "definitionProvider")]
pub definition_provider: Option<Or2<bool, DefinitionOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "typeDefinitionProvider")]
pub type_definition_provider:
Option<Or3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "implementationProvider")]
pub implementation_provider:
Option<Or3<bool, ImplementationOptions, ImplementationRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "referencesProvider")]
pub references_provider: Option<Or2<bool, ReferenceOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentHighlightProvider")]
pub document_highlight_provider: Option<Or2<bool, DocumentHighlightOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentSymbolProvider")]
pub document_symbol_provider: Option<Or2<bool, DocumentSymbolOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeActionProvider")]
pub code_action_provider: Option<Or2<bool, CodeActionOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeLensProvider")]
pub code_lens_provider: Option<CodeLensOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentLinkProvider")]
pub document_link_provider: Option<DocumentLinkOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "colorProvider")]
pub color_provider: Option<Or3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workspaceSymbolProvider")]
pub workspace_symbol_provider: Option<Or2<bool, WorkspaceSymbolOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentFormattingProvider")]
pub document_formatting_provider: Option<Or2<bool, DocumentFormattingOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentRangeFormattingProvider")]
pub document_range_formatting_provider: Option<Or2<bool, DocumentRangeFormattingOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentOnTypeFormattingProvider")]
pub document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "renameProvider")]
pub rename_provider: Option<Or2<bool, RenameOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "foldingRangeProvider")]
pub folding_range_provider:
Option<Or3<bool, FoldingRangeOptions, FoldingRangeRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "selectionRangeProvider")]
pub selection_range_provider:
Option<Or3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "executeCommandProvider")]
pub execute_command_provider: Option<ExecuteCommandOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "callHierarchyProvider")]
pub call_hierarchy_provider:
Option<Or3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkedEditingRangeProvider")]
pub linked_editing_range_provider:
Option<Or3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "semanticTokensProvider")]
pub semantic_tokens_provider:
Option<Or2<SemanticTokensOptions, SemanticTokensRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "monikerProvider")]
pub moniker_provider: Option<Or3<bool, MonikerOptions, MonikerRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "typeHierarchyProvider")]
pub type_hierarchy_provider:
Option<Or3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlineValueProvider")]
pub inline_value_provider: Option<Or3<bool, InlineValueOptions, InlineValueRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlayHintProvider")]
pub inlay_hint_provider: Option<Or3<bool, InlayHintOptions, InlayHintRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "diagnosticProvider")]
pub diagnostic_provider: Option<Or2<DiagnosticOptions, DiagnosticRegistrationOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlineCompletionProvider")]
pub inline_completion_provider: Option<Or2<bool, InlineCompletionOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace: Option<WorkspaceCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub experimental: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct VersionedTextDocumentIdentifier {
pub version: i32,
#[serde(flatten)]
pub text_document_identifier: TextDocumentIdentifier,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SaveOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "includeText")]
pub include_text: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileEvent {
pub uri: Uri,
#[serde(rename = "type")]
pub ty: FileChangeType,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileSystemWatcher {
#[serde(rename = "globPattern")]
pub glob_pattern: GlobPattern,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<WatchKind>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Diagnostic {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub severity: Option<DiagnosticSeverity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<Or2<i32, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeDescription")]
pub code_description: Option<CodeDescription>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<DiagnosticTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relatedInformation")]
pub related_information: Option<Vec<DiagnosticRelatedInformation>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionContext {
#[serde(rename = "triggerKind")]
pub trigger_kind: CompletionTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "triggerCharacter")]
pub trigger_character: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionItemLabelDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InsertReplaceEdit {
#[serde(rename = "newText")]
pub new_text: String,
pub insert: Range,
pub replace: Range,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "triggerCharacters")]
pub trigger_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "allCommitCharacters")]
pub all_commit_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "completionItem")]
pub completion_item: Option<CompletionOptionsCompletionItem>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct HoverOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelpContext {
#[serde(rename = "triggerKind")]
pub trigger_kind: SignatureHelpTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "triggerCharacter")]
pub trigger_character: Option<String>,
#[serde(rename = "isRetrigger")]
pub is_retrigger: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "activeSignatureHelp")]
pub active_signature_help: Option<SignatureHelp>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureInformation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Or2<String, MarkupContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<Vec<ParameterInformation>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "activeParameter")]
pub active_parameter: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelpOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "triggerCharacters")]
pub trigger_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "retriggerCharacters")]
pub retrigger_characters: Option<Vec<String>>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DefinitionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ReferenceContext {
#[serde(rename = "includeDeclaration")]
pub include_declaration: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ReferenceOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentHighlightOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct BaseSymbolInformation {
pub name: String,
pub kind: SymbolKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<SymbolTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "containerName")]
pub container_name: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbolOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionContext {
pub diagnostics: Vec<Diagnostic>,
#[serde(skip_serializing_if = "Option::is_none")]
pub only: Option<Vec<CodeActionKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "triggerKind")]
pub trigger_kind: Option<CodeActionTriggerKind>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeActionKinds")]
pub code_action_kinds: Option<Vec<CodeActionKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLensOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentLinkOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveProvider")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FormattingOptions {
#[serde(rename = "tabSize")]
pub tab_size: u32,
#[serde(rename = "insertSpaces")]
pub insert_spaces: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "trimTrailingWhitespace")]
pub trim_trailing_whitespace: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertFinalNewline")]
pub insert_final_newline: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "trimFinalNewlines")]
pub trim_final_newlines: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentFormattingOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentRangeFormattingOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rangesSupport")]
pub ranges_support: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentOnTypeFormattingOptions {
#[serde(rename = "firstTriggerCharacter")]
pub first_trigger_character: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "moreTriggerCharacter")]
pub more_trigger_character: Option<Vec<String>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "prepareProvider")]
pub prepare_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ExecuteCommandOptions {
pub commands: Vec<String>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensLegend {
#[serde(rename = "tokenTypes")]
pub token_types: Vec<String>,
#[serde(rename = "tokenModifiers")]
pub token_modifiers: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct OptionalVersionedTextDocumentIdentifier {
pub version: Option<i32>,
#[serde(flatten)]
pub text_document_identifier: TextDocumentIdentifier,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct AnnotatedTextEdit {
#[serde(rename = "annotationId")]
pub annotation_id: ChangeAnnotationIdentifier,
#[serde(flatten)]
pub text_edit: TextEdit,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ResourceOperation {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "annotationId")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CreateFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub overwrite: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "ignoreIfExists")]
pub ignore_if_exists: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub overwrite: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "ignoreIfExists")]
pub ignore_if_exists: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeleteFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub recursive: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "ignoreIfNotExists")]
pub ignore_if_not_exists: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationPattern {
pub glob: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub matches: Option<FileOperationPatternKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<FileOperationPatternOptions>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceFullDocumentDiagnosticReport {
pub uri: Uri,
pub version: Option<i32>,
#[serde(flatten)]
pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceUnchangedDocumentDiagnosticReport {
pub uri: Uri,
pub version: Option<i32>,
#[serde(flatten)]
pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookCell {
pub kind: NotebookCellKind,
pub document: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<LSPObject>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "executionSummary")]
pub execution_summary: Option<ExecutionSummary>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookCellArrayChange {
pub start: u32,
#[serde(rename = "deleteCount")]
pub delete_count: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<Vec<NotebookCell>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectedCompletionInfo {
pub range: Range,
pub text: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace: Option<WorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textDocument")]
pub text_document: Option<TextDocumentClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "notebookDocument")]
pub notebook_document: Option<NotebookDocumentClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub window: Option<WindowClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub general: Option<GeneralClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub experimental: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentSyncOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "openClose")]
pub open_close: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub change: Option<TextDocumentSyncKind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willSave")]
pub will_save: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willSaveWaitUntil")]
pub will_save_wait_until: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub save: Option<Or2<bool, SaveOptions>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentSyncOptions {
#[serde(rename = "notebookSelector")]
pub notebook_selector: Vec<NotebookDocumentSyncOptionsNotebookSelector>,
#[serde(skip_serializing_if = "Option::is_none")]
pub save: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentSyncRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub notebook_document_sync_options: NotebookDocumentSyncOptions,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceFoldersServerCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub supported: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "changeNotifications")]
pub change_notifications: Option<Or2<String, bool>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didCreate")]
pub did_create: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willCreate")]
pub will_create: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didRename")]
pub did_rename: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willRename")]
pub will_rename: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didDelete")]
pub did_delete: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willDelete")]
pub will_delete: Option<FileOperationRegistrationOptions>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeDescription {
pub href: Uri,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticRelatedInformation {
pub location: Location,
pub message: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ParameterInformation {
pub label: Or2<String, (u32, u32)>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Or2<String, MarkupContent>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookCellTextDocumentFilter {
pub notebook: Or2<String, NotebookDocumentFilter>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationPatternOptions {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "ignoreCase")]
pub ignore_case: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ExecutionSummary {
#[serde(rename = "executionOrder")]
pub execution_order: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub success: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "applyEdit")]
pub apply_edit: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workspaceEdit")]
pub workspace_edit: Option<WorkspaceEditClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didChangeConfiguration")]
pub did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didChangeWatchedFiles")]
pub did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<WorkspaceSymbolClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "executeCommand")]
pub execute_command: Option<ExecuteCommandClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workspaceFolders")]
pub workspace_folders: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "semanticTokens")]
pub semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeLens")]
pub code_lens: Option<CodeLensWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "fileOperations")]
pub file_operations: Option<FileOperationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlineValue")]
pub inline_value: Option<InlineValueWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlayHint")]
pub inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "foldingRange")]
pub folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub synchronization: Option<TextDocumentSyncClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion: Option<CompletionClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hover: Option<HoverClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "signatureHelp")]
pub signature_help: Option<SignatureHelpClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub declaration: Option<DeclarationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub definition: Option<DefinitionClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "typeDefinition")]
pub type_definition: Option<TypeDefinitionClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub implementation: Option<ImplementationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub references: Option<ReferenceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentHighlight")]
pub document_highlight: Option<DocumentHighlightClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentSymbol")]
pub document_symbol: Option<DocumentSymbolClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeAction")]
pub code_action: Option<CodeActionClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeLens")]
pub code_lens: Option<CodeLensClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentLink")]
pub document_link: Option<DocumentLinkClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "colorProvider")]
pub color_provider: Option<DocumentColorClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub formatting: Option<DocumentFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rangeFormatting")]
pub range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "onTypeFormatting")]
pub on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rename: Option<RenameClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "foldingRange")]
pub folding_range: Option<FoldingRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "selectionRange")]
pub selection_range: Option<SelectionRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "publishDiagnostics")]
pub publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "callHierarchy")]
pub call_hierarchy: Option<CallHierarchyClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "semanticTokens")]
pub semantic_tokens: Option<SemanticTokensClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkedEditingRange")]
pub linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub moniker: Option<MonikerClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "typeHierarchy")]
pub type_hierarchy: Option<TypeHierarchyClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlineValue")]
pub inline_value: Option<InlineValueClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlayHint")]
pub inlay_hint: Option<InlayHintClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostic: Option<DiagnosticClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "inlineCompletion")]
pub inline_completion: Option<InlineCompletionClientCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentClientCapabilities {
pub synchronization: NotebookDocumentSyncClientCapabilities,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WindowClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workDoneProgress")]
pub work_done_progress: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "showMessage")]
pub show_message: Option<ShowMessageRequestClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "showDocument")]
pub show_document: Option<ShowDocumentClientCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct GeneralClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "staleRequestSupport")]
pub stale_request_support: Option<StaleRequestSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "regularExpressions")]
pub regular_expressions: Option<RegularExpressionsClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub markdown: Option<MarkdownClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "positionEncodings")]
pub position_encodings: Option<Vec<PositionEncodingKind>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RelativePattern {
#[serde(rename = "baseUri")]
pub base_uri: Or2<WorkspaceFolder, Uri>,
pub pattern: Pattern,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceEditClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentChanges")]
pub document_changes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resourceOperations")]
pub resource_operations: Option<Vec<ResourceOperationKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "failureHandling")]
pub failure_handling: Option<FailureHandlingKind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "normalizesLineEndings")]
pub normalizes_line_endings: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "changeAnnotationSupport")]
pub change_annotation_support: Option<ChangeAnnotationSupportCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeConfigurationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DidChangeWatchedFilesClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relativePatternSupport")]
pub relative_pattern_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "symbolKind")]
pub symbol_kind: Option<SymbolKindCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "tagSupport")]
pub tag_support: Option<WorkspaceSymbolTagSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveSupport")]
pub resolve_support: Option<WorkspaceSymbolResolveSupportCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ExecuteCommandClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLensWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FileOperationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didCreate")]
pub did_create: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willCreate")]
pub will_create: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didRename")]
pub did_rename: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willRename")]
pub will_rename: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didDelete")]
pub did_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willDelete")]
pub will_delete: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "refreshSupport")]
pub refresh_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentSyncClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willSave")]
pub will_save: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "willSaveWaitUntil")]
pub will_save_wait_until: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didSave")]
pub did_save: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "completionItem")]
pub completion_item: Option<CompletionItemCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "completionItemKind")]
pub completion_item_kind: Option<CompletionItemKindCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextMode")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "contextSupport")]
pub context_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "completionList")]
pub completion_list: Option<CompletionListCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct HoverClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "contentFormat")]
pub content_format: Option<Vec<MarkupKind>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureHelpClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "signatureInformation")]
pub signature_information: Option<SignatureInformationCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "contextSupport")]
pub context_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DeclarationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkSupport")]
pub link_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DefinitionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkSupport")]
pub link_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeDefinitionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkSupport")]
pub link_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ImplementationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "linkSupport")]
pub link_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ReferenceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentHighlightClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbolClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "symbolKind")]
pub symbol_kind: Option<SymbolKindCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "hierarchicalDocumentSymbolSupport")]
pub hierarchical_document_symbol_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "tagSupport")]
pub tag_support: Option<DocumentSymbolTagSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "labelSupport")]
pub label_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeActionLiteralSupport")]
pub code_action_literal_support: Option<CodeActionLiteralSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "isPreferredSupport")]
pub is_preferred_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "disabledSupport")]
pub disabled_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dataSupport")]
pub data_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveSupport")]
pub resolve_support: Option<CodeActionResolveSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "honorsChangeAnnotations")]
pub honors_change_annotations: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeLensClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentLinkClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "tooltipSupport")]
pub tooltip_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentColorClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentRangeFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rangesSupport")]
pub ranges_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentOnTypeFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RenameClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "prepareSupport")]
pub prepare_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "prepareSupportDefaultBehavior")]
pub prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "honorsChangeAnnotations")]
pub honors_change_annotations: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rangeLimit")]
pub range_limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "lineFoldingOnly")]
pub line_folding_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "foldingRangeKind")]
pub folding_range_kind: Option<FoldingRangeKindCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "foldingRange")]
pub folding_range: Option<FoldingRangeCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SelectionRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PublishDiagnosticsClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relatedInformation")]
pub related_information: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "tagSupport")]
pub tag_support: Option<PublishDiagnosticsTagSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "versionSupport")]
pub version_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "codeDescriptionSupport")]
pub code_description_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dataSupport")]
pub data_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallHierarchyClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
pub requests: RequestsCapabilities,
#[serde(rename = "tokenTypes")]
pub token_types: Vec<String>,
#[serde(rename = "tokenModifiers")]
pub token_modifiers: Vec<String>,
pub formats: Vec<TokenFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "overlappingTokenSupport")]
pub overlapping_token_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "multilineTokenSupport")]
pub multiline_token_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "serverCancelSupport")]
pub server_cancel_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "augmentsSyntaxTokens")]
pub augments_syntax_tokens: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct LinkedEditingRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MonikerClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TypeHierarchyClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineValueClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveSupport")]
pub resolve_support: Option<InlayHintResolveSupportCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DiagnosticClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "relatedDocumentSupport")]
pub related_document_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlineCompletionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentSyncClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "dynamicRegistration")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "executionSummarySupport")]
pub execution_summary_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowMessageRequestClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "messageActionItem")]
pub message_action_item: Option<MessageActionItemCapabilities>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ShowDocumentClientCapabilities {
pub support: bool,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RegularExpressionsClientCapabilities {
pub engine: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MarkdownClientCapabilities {
pub parser: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "allowedTags")]
pub allowed_tags: Option<Vec<String>>,
}
#[derive(Debug, Default, Clone)]
pub enum SemanticTokenTypes {
#[default]
Namespace,
Type,
Class,
Enum,
Interface,
Struct,
TypeParameter,
Parameter,
Variable,
Property,
EnumMember,
Event,
Function,
Method,
Macro,
Keyword,
Modifier,
Comment,
String,
Number,
Regexp,
Operator,
Decorator,
Custom(String),
}
impl SemanticTokenTypes {
pub fn as_str(&self) -> &str {
match self {
Self::Namespace => "namespace",
Self::Type => "type",
Self::Class => "class",
Self::Enum => "enum",
Self::Interface => "interface",
Self::Struct => "struct",
Self::TypeParameter => "typeParameter",
Self::Parameter => "parameter",
Self::Variable => "variable",
Self::Property => "property",
Self::EnumMember => "enumMember",
Self::Event => "event",
Self::Function => "function",
Self::Method => "method",
Self::Macro => "macro",
Self::Keyword => "keyword",
Self::Modifier => "modifier",
Self::Comment => "comment",
Self::String => "string",
Self::Number => "number",
Self::Regexp => "regexp",
Self::Operator => "operator",
Self::Decorator => "decorator",
Self::Custom(value) => value,
}
}
}
impl From<String> for SemanticTokenTypes {
fn from(value: String) -> Self {
match value.as_str() {
"namespace" => Self::Namespace,
"type" => Self::Type,
"class" => Self::Class,
"enum" => Self::Enum,
"interface" => Self::Interface,
"struct" => Self::Struct,
"typeParameter" => Self::TypeParameter,
"parameter" => Self::Parameter,
"variable" => Self::Variable,
"property" => Self::Property,
"enumMember" => Self::EnumMember,
"event" => Self::Event,
"function" => Self::Function,
"method" => Self::Method,
"macro" => Self::Macro,
"keyword" => Self::Keyword,
"modifier" => Self::Modifier,
"comment" => Self::Comment,
"string" => Self::String,
"number" => Self::Number,
"regexp" => Self::Regexp,
"operator" => Self::Operator,
"decorator" => Self::Decorator,
_ => Self::Custom(value),
}
}
}
impl Serialize for SemanticTokenTypes {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for SemanticTokenTypes {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = SemanticTokenTypes;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_string<E>(self, value: String) -> Result<SemanticTokenTypes, E>
where
E: de::Error,
{
Ok(SemanticTokenTypes::from(value))
}
fn visit_str<E>(self, value: &str) -> Result<SemanticTokenTypes, E>
where
E: de::Error,
{
Ok(SemanticTokenTypes::from(String::from(value)))
}
}
deserializer.deserialize_string(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum SemanticTokenModifiers {
#[default]
Declaration,
Definition,
Readonly,
Static,
Deprecated,
Abstract,
Async,
Modification,
Documentation,
DefaultLibrary,
Custom(String),
}
impl SemanticTokenModifiers {
pub fn as_str(&self) -> &str {
match self {
Self::Declaration => "declaration",
Self::Definition => "definition",
Self::Readonly => "readonly",
Self::Static => "static",
Self::Deprecated => "deprecated",
Self::Abstract => "abstract",
Self::Async => "async",
Self::Modification => "modification",
Self::Documentation => "documentation",
Self::DefaultLibrary => "defaultLibrary",
Self::Custom(value) => value,
}
}
}
impl From<String> for SemanticTokenModifiers {
fn from(value: String) -> Self {
match value.as_str() {
"declaration" => Self::Declaration,
"definition" => Self::Definition,
"readonly" => Self::Readonly,
"static" => Self::Static,
"deprecated" => Self::Deprecated,
"abstract" => Self::Abstract,
"async" => Self::Async,
"modification" => Self::Modification,
"documentation" => Self::Documentation,
"defaultLibrary" => Self::DefaultLibrary,
_ => Self::Custom(value),
}
}
}
impl Serialize for SemanticTokenModifiers {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for SemanticTokenModifiers {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = SemanticTokenModifiers;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_string<E>(self, value: String) -> Result<SemanticTokenModifiers, E>
where
E: de::Error,
{
Ok(SemanticTokenModifiers::from(value))
}
fn visit_str<E>(self, value: &str) -> Result<SemanticTokenModifiers, E>
where
E: de::Error,
{
Ok(SemanticTokenModifiers::from(String::from(value)))
}
}
deserializer.deserialize_string(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum DocumentDiagnosticReportKind {
#[default]
Full,
Unchanged,
}
impl DocumentDiagnosticReportKind {
pub fn as_str(&self) -> &str {
match self {
Self::Full => "full",
Self::Unchanged => "unchanged",
}
}
}
impl TryFrom<&str> for DocumentDiagnosticReportKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"full" => Ok(Self::Full),
"unchanged" => Ok(Self::Unchanged),
_ => Err(()),
}
}
}
impl Serialize for DocumentDiagnosticReportKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for DocumentDiagnosticReportKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = DocumentDiagnosticReportKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<DocumentDiagnosticReportKind, E>
where
E: de::Error,
{
if let Ok(v) = DocumentDiagnosticReportKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum ErrorCodes {
#[default]
ParseError,
InvalidRequest,
MethodNotFound,
InvalidParams,
InternalError,
ServerNotInitialized,
UnknownErrorCode,
Custom(i32),
}
impl ErrorCodes {
pub fn as_i32(self) -> i32 {
match self {
Self::ParseError => -32700,
Self::InvalidRequest => -32600,
Self::MethodNotFound => -32601,
Self::InvalidParams => -32602,
Self::InternalError => -32603,
Self::ServerNotInitialized => -32002,
Self::UnknownErrorCode => -32001,
Self::Custom(value) => value,
}
}
}
impl From<i32> for ErrorCodes {
fn from(value: i32) -> Self {
match value {
-32700 => Self::ParseError,
-32600 => Self::InvalidRequest,
-32601 => Self::MethodNotFound,
-32602 => Self::InvalidParams,
-32603 => Self::InternalError,
-32002 => Self::ServerNotInitialized,
-32001 => Self::UnknownErrorCode,
_ => Self::Custom(value),
}
}
}
impl Serialize for ErrorCodes {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_i32(self.as_i32())
}
}
impl<'de> Deserialize<'de> for ErrorCodes {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = ErrorCodes;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("integer")
}
fn visit_u64<E>(self, value: u64) -> Result<ErrorCodes, E>
where
E: de::Error,
{
if let Ok(n) = i32::try_from(value) {
Ok(ErrorCodes::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<ErrorCodes, E>
where
E: de::Error,
{
if let Ok(n) = i32::try_from(value) {
Ok(ErrorCodes::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_i32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum LSPErrorCodes {
#[default]
RequestFailed,
ServerCancelled,
ContentModified,
RequestCancelled,
Custom(i32),
}
impl LSPErrorCodes {
pub fn as_i32(self) -> i32 {
match self {
Self::RequestFailed => -32803,
Self::ServerCancelled => -32802,
Self::ContentModified => -32801,
Self::RequestCancelled => -32800,
Self::Custom(value) => value,
}
}
}
impl From<i32> for LSPErrorCodes {
fn from(value: i32) -> Self {
match value {
-32803 => Self::RequestFailed,
-32802 => Self::ServerCancelled,
-32801 => Self::ContentModified,
-32800 => Self::RequestCancelled,
_ => Self::Custom(value),
}
}
}
impl Serialize for LSPErrorCodes {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_i32(self.as_i32())
}
}
impl<'de> Deserialize<'de> for LSPErrorCodes {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = LSPErrorCodes;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("integer")
}
fn visit_u64<E>(self, value: u64) -> Result<LSPErrorCodes, E>
where
E: de::Error,
{
if let Ok(n) = i32::try_from(value) {
Ok(LSPErrorCodes::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<LSPErrorCodes, E>
where
E: de::Error,
{
if let Ok(n) = i32::try_from(value) {
Ok(LSPErrorCodes::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_i32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum FoldingRangeKind {
#[default]
Comment,
Imports,
Region,
Custom(String),
}
impl FoldingRangeKind {
pub fn as_str(&self) -> &str {
match self {
Self::Comment => "comment",
Self::Imports => "imports",
Self::Region => "region",
Self::Custom(value) => value,
}
}
}
impl From<String> for FoldingRangeKind {
fn from(value: String) -> Self {
match value.as_str() {
"comment" => Self::Comment,
"imports" => Self::Imports,
"region" => Self::Region,
_ => Self::Custom(value),
}
}
}
impl Serialize for FoldingRangeKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for FoldingRangeKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = FoldingRangeKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_string<E>(self, value: String) -> Result<FoldingRangeKind, E>
where
E: de::Error,
{
Ok(FoldingRangeKind::from(value))
}
fn visit_str<E>(self, value: &str) -> Result<FoldingRangeKind, E>
where
E: de::Error,
{
Ok(FoldingRangeKind::from(String::from(value)))
}
}
deserializer.deserialize_string(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum SymbolKind {
#[default]
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,
}
impl SymbolKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for SymbolKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::File),
2 => Ok(Self::Module),
3 => Ok(Self::Namespace),
4 => Ok(Self::Package),
5 => Ok(Self::Class),
6 => Ok(Self::Method),
7 => Ok(Self::Property),
8 => Ok(Self::Field),
9 => Ok(Self::Constructor),
10 => Ok(Self::Enum),
11 => Ok(Self::Interface),
12 => Ok(Self::Function),
13 => Ok(Self::Variable),
14 => Ok(Self::Constant),
15 => Ok(Self::String),
16 => Ok(Self::Number),
17 => Ok(Self::Boolean),
18 => Ok(Self::Array),
19 => Ok(Self::Object),
20 => Ok(Self::Key),
21 => Ok(Self::Null),
22 => Ok(Self::EnumMember),
23 => Ok(Self::Struct),
24 => Ok(Self::Event),
25 => Ok(Self::Operator),
26 => Ok(Self::TypeParameter),
_ => Err(()),
}
}
}
impl Serialize for SymbolKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for SymbolKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = SymbolKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<SymbolKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SymbolKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<SymbolKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SymbolKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum SymbolTag {
#[default]
Deprecated = 1,
}
impl SymbolTag {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for SymbolTag {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Deprecated),
_ => Err(()),
}
}
}
impl Serialize for SymbolTag {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for SymbolTag {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = SymbolTag;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<SymbolTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SymbolTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<SymbolTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SymbolTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum UniquenessLevel {
#[default]
Document,
Project,
Group,
Scheme,
Global,
}
impl UniquenessLevel {
pub fn as_str(&self) -> &str {
match self {
Self::Document => "document",
Self::Project => "project",
Self::Group => "group",
Self::Scheme => "scheme",
Self::Global => "global",
}
}
}
impl TryFrom<&str> for UniquenessLevel {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"document" => Ok(Self::Document),
"project" => Ok(Self::Project),
"group" => Ok(Self::Group),
"scheme" => Ok(Self::Scheme),
"global" => Ok(Self::Global),
_ => Err(()),
}
}
}
impl Serialize for UniquenessLevel {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for UniquenessLevel {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = UniquenessLevel;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<UniquenessLevel, E>
where
E: de::Error,
{
if let Ok(v) = UniquenessLevel::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum MonikerKind {
#[default]
Import,
Export,
Local,
}
impl MonikerKind {
pub fn as_str(&self) -> &str {
match self {
Self::Import => "import",
Self::Export => "export",
Self::Local => "local",
}
}
}
impl TryFrom<&str> for MonikerKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"import" => Ok(Self::Import),
"export" => Ok(Self::Export),
"local" => Ok(Self::Local),
_ => Err(()),
}
}
}
impl Serialize for MonikerKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for MonikerKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = MonikerKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<MonikerKind, E>
where
E: de::Error,
{
if let Ok(v) = MonikerKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum InlayHintKind {
#[default]
Type = 1,
Parameter = 2,
}
impl InlayHintKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for InlayHintKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Type),
2 => Ok(Self::Parameter),
_ => Err(()),
}
}
}
impl Serialize for InlayHintKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for InlayHintKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = InlayHintKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<InlayHintKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InlayHintKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<InlayHintKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InlayHintKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum MessageType {
#[default]
Error = 1,
Warning = 2,
Info = 3,
Log = 4,
Debug = 5,
}
impl MessageType {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for MessageType {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Error),
2 => Ok(Self::Warning),
3 => Ok(Self::Info),
4 => Ok(Self::Log),
5 => Ok(Self::Debug),
_ => Err(()),
}
}
}
impl Serialize for MessageType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for MessageType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = MessageType;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<MessageType, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = MessageType::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<MessageType, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = MessageType::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum TextDocumentSyncKind {
#[default]
None = 0,
Full = 1,
Incremental = 2,
}
impl TextDocumentSyncKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for TextDocumentSyncKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
0 => Ok(Self::None),
1 => Ok(Self::Full),
2 => Ok(Self::Incremental),
_ => Err(()),
}
}
}
impl Serialize for TextDocumentSyncKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for TextDocumentSyncKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = TextDocumentSyncKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<TextDocumentSyncKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = TextDocumentSyncKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<TextDocumentSyncKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = TextDocumentSyncKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum TextDocumentSaveReason {
#[default]
Manual = 1,
AfterDelay = 2,
FocusOut = 3,
}
impl TextDocumentSaveReason {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for TextDocumentSaveReason {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Manual),
2 => Ok(Self::AfterDelay),
3 => Ok(Self::FocusOut),
_ => Err(()),
}
}
}
impl Serialize for TextDocumentSaveReason {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for TextDocumentSaveReason {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = TextDocumentSaveReason;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<TextDocumentSaveReason, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = TextDocumentSaveReason::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<TextDocumentSaveReason, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = TextDocumentSaveReason::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum CompletionItemKind {
#[default]
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,
}
impl CompletionItemKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for CompletionItemKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Text),
2 => Ok(Self::Method),
3 => Ok(Self::Function),
4 => Ok(Self::Constructor),
5 => Ok(Self::Field),
6 => Ok(Self::Variable),
7 => Ok(Self::Class),
8 => Ok(Self::Interface),
9 => Ok(Self::Module),
10 => Ok(Self::Property),
11 => Ok(Self::Unit),
12 => Ok(Self::Value),
13 => Ok(Self::Enum),
14 => Ok(Self::Keyword),
15 => Ok(Self::Snippet),
16 => Ok(Self::Color),
17 => Ok(Self::File),
18 => Ok(Self::Reference),
19 => Ok(Self::Folder),
20 => Ok(Self::EnumMember),
21 => Ok(Self::Constant),
22 => Ok(Self::Struct),
23 => Ok(Self::Event),
24 => Ok(Self::Operator),
25 => Ok(Self::TypeParameter),
_ => Err(()),
}
}
}
impl Serialize for CompletionItemKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for CompletionItemKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = CompletionItemKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<CompletionItemKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionItemKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<CompletionItemKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionItemKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum CompletionItemTag {
#[default]
Deprecated = 1,
}
impl CompletionItemTag {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for CompletionItemTag {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Deprecated),
_ => Err(()),
}
}
}
impl Serialize for CompletionItemTag {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for CompletionItemTag {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = CompletionItemTag;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<CompletionItemTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionItemTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<CompletionItemTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionItemTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum InsertTextFormat {
#[default]
PlainText = 1,
Snippet = 2,
}
impl InsertTextFormat {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for InsertTextFormat {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::PlainText),
2 => Ok(Self::Snippet),
_ => Err(()),
}
}
}
impl Serialize for InsertTextFormat {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for InsertTextFormat {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = InsertTextFormat;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<InsertTextFormat, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InsertTextFormat::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<InsertTextFormat, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InsertTextFormat::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum InsertTextMode {
#[default]
AsIs = 1,
AdjustIndentation = 2,
}
impl InsertTextMode {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for InsertTextMode {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::AsIs),
2 => Ok(Self::AdjustIndentation),
_ => Err(()),
}
}
}
impl Serialize for InsertTextMode {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for InsertTextMode {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = InsertTextMode;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<InsertTextMode, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InsertTextMode::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<InsertTextMode, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InsertTextMode::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum DocumentHighlightKind {
#[default]
Text = 1,
Read = 2,
Write = 3,
}
impl DocumentHighlightKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for DocumentHighlightKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Text),
2 => Ok(Self::Read),
3 => Ok(Self::Write),
_ => Err(()),
}
}
}
impl Serialize for DocumentHighlightKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for DocumentHighlightKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = DocumentHighlightKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<DocumentHighlightKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DocumentHighlightKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<DocumentHighlightKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DocumentHighlightKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum CodeActionKind {
#[default]
Empty,
QuickFix,
Refactor,
RefactorExtract,
RefactorInline,
RefactorRewrite,
Source,
SourceOrganizeImports,
SourceFixAll,
Custom(String),
}
impl CodeActionKind {
pub fn as_str(&self) -> &str {
match self {
Self::Empty => "",
Self::QuickFix => "quickfix",
Self::Refactor => "refactor",
Self::RefactorExtract => "refactor.extract",
Self::RefactorInline => "refactor.inline",
Self::RefactorRewrite => "refactor.rewrite",
Self::Source => "source",
Self::SourceOrganizeImports => "source.organizeImports",
Self::SourceFixAll => "source.fixAll",
Self::Custom(value) => value,
}
}
}
impl From<String> for CodeActionKind {
fn from(value: String) -> Self {
match value.as_str() {
"" => Self::Empty,
"quickfix" => Self::QuickFix,
"refactor" => Self::Refactor,
"refactor.extract" => Self::RefactorExtract,
"refactor.inline" => Self::RefactorInline,
"refactor.rewrite" => Self::RefactorRewrite,
"source" => Self::Source,
"source.organizeImports" => Self::SourceOrganizeImports,
"source.fixAll" => Self::SourceFixAll,
_ => Self::Custom(value),
}
}
}
impl Serialize for CodeActionKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for CodeActionKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = CodeActionKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_string<E>(self, value: String) -> Result<CodeActionKind, E>
where
E: de::Error,
{
Ok(CodeActionKind::from(value))
}
fn visit_str<E>(self, value: &str) -> Result<CodeActionKind, E>
where
E: de::Error,
{
Ok(CodeActionKind::from(String::from(value)))
}
}
deserializer.deserialize_string(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum TraceValues {
#[default]
Off,
Messages,
Verbose,
}
impl TraceValues {
pub fn as_str(&self) -> &str {
match self {
Self::Off => "off",
Self::Messages => "messages",
Self::Verbose => "verbose",
}
}
}
impl TryFrom<&str> for TraceValues {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"off" => Ok(Self::Off),
"messages" => Ok(Self::Messages),
"verbose" => Ok(Self::Verbose),
_ => Err(()),
}
}
}
impl Serialize for TraceValues {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for TraceValues {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = TraceValues;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<TraceValues, E>
where
E: de::Error,
{
if let Ok(v) = TraceValues::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum MarkupKind {
#[default]
PlainText,
Markdown,
}
impl MarkupKind {
pub fn as_str(&self) -> &str {
match self {
Self::PlainText => "plaintext",
Self::Markdown => "markdown",
}
}
}
impl TryFrom<&str> for MarkupKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"plaintext" => Ok(Self::PlainText),
"markdown" => Ok(Self::Markdown),
_ => Err(()),
}
}
}
impl Serialize for MarkupKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for MarkupKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = MarkupKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<MarkupKind, E>
where
E: de::Error,
{
if let Ok(v) = MarkupKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum InlineCompletionTriggerKind {
#[default]
Invoked = 0,
Automatic = 1,
}
impl InlineCompletionTriggerKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for InlineCompletionTriggerKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
0 => Ok(Self::Invoked),
1 => Ok(Self::Automatic),
_ => Err(()),
}
}
}
impl Serialize for InlineCompletionTriggerKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for InlineCompletionTriggerKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = InlineCompletionTriggerKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<InlineCompletionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InlineCompletionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<InlineCompletionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = InlineCompletionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum PositionEncodingKind {
#[default]
Utf8,
Utf16,
Utf32,
Custom(String),
}
impl PositionEncodingKind {
pub fn as_str(&self) -> &str {
match self {
Self::Utf8 => "utf-8",
Self::Utf16 => "utf-16",
Self::Utf32 => "utf-32",
Self::Custom(value) => value,
}
}
}
impl From<String> for PositionEncodingKind {
fn from(value: String) -> Self {
match value.as_str() {
"utf-8" => Self::Utf8,
"utf-16" => Self::Utf16,
"utf-32" => Self::Utf32,
_ => Self::Custom(value),
}
}
}
impl Serialize for PositionEncodingKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for PositionEncodingKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = PositionEncodingKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_string<E>(self, value: String) -> Result<PositionEncodingKind, E>
where
E: de::Error,
{
Ok(PositionEncodingKind::from(value))
}
fn visit_str<E>(self, value: &str) -> Result<PositionEncodingKind, E>
where
E: de::Error,
{
Ok(PositionEncodingKind::from(String::from(value)))
}
}
deserializer.deserialize_string(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum FileChangeType {
#[default]
Created = 1,
Changed = 2,
Deleted = 3,
}
impl FileChangeType {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for FileChangeType {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Created),
2 => Ok(Self::Changed),
3 => Ok(Self::Deleted),
_ => Err(()),
}
}
}
impl Serialize for FileChangeType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for FileChangeType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = FileChangeType;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<FileChangeType, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = FileChangeType::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<FileChangeType, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = FileChangeType::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum WatchKind {
#[default]
Create,
Change,
Delete,
Custom(u32),
}
impl WatchKind {
pub fn as_u32(self) -> u32 {
match self {
Self::Create => 1,
Self::Change => 2,
Self::Delete => 4,
Self::Custom(value) => value,
}
}
}
impl From<u32> for WatchKind {
fn from(value: u32) -> Self {
match value {
1 => Self::Create,
2 => Self::Change,
4 => Self::Delete,
_ => Self::Custom(value),
}
}
}
impl Serialize for WatchKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for WatchKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = WatchKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<WatchKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value) {
Ok(WatchKind::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<WatchKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value) {
Ok(WatchKind::from(n))
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum DiagnosticSeverity {
#[default]
Error = 1,
Warning = 2,
Information = 3,
Hint = 4,
}
impl DiagnosticSeverity {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for DiagnosticSeverity {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Error),
2 => Ok(Self::Warning),
3 => Ok(Self::Information),
4 => Ok(Self::Hint),
_ => Err(()),
}
}
}
impl Serialize for DiagnosticSeverity {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for DiagnosticSeverity {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = DiagnosticSeverity;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<DiagnosticSeverity, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DiagnosticSeverity::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<DiagnosticSeverity, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DiagnosticSeverity::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum DiagnosticTag {
#[default]
Unnecessary = 1,
Deprecated = 2,
}
impl DiagnosticTag {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for DiagnosticTag {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Unnecessary),
2 => Ok(Self::Deprecated),
_ => Err(()),
}
}
}
impl Serialize for DiagnosticTag {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for DiagnosticTag {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = DiagnosticTag;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<DiagnosticTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DiagnosticTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<DiagnosticTag, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = DiagnosticTag::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum CompletionTriggerKind {
#[default]
Invoked = 1,
TriggerCharacter = 2,
TriggerForIncompleteCompletions = 3,
}
impl CompletionTriggerKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for CompletionTriggerKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Invoked),
2 => Ok(Self::TriggerCharacter),
3 => Ok(Self::TriggerForIncompleteCompletions),
_ => Err(()),
}
}
}
impl Serialize for CompletionTriggerKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for CompletionTriggerKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = CompletionTriggerKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<CompletionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<CompletionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CompletionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum SignatureHelpTriggerKind {
#[default]
Invoked = 1,
TriggerCharacter = 2,
ContentChange = 3,
}
impl SignatureHelpTriggerKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for SignatureHelpTriggerKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Invoked),
2 => Ok(Self::TriggerCharacter),
3 => Ok(Self::ContentChange),
_ => Err(()),
}
}
}
impl Serialize for SignatureHelpTriggerKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for SignatureHelpTriggerKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = SignatureHelpTriggerKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<SignatureHelpTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SignatureHelpTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<SignatureHelpTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = SignatureHelpTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum CodeActionTriggerKind {
#[default]
Invoked = 1,
Automatic = 2,
}
impl CodeActionTriggerKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for CodeActionTriggerKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Invoked),
2 => Ok(Self::Automatic),
_ => Err(()),
}
}
}
impl Serialize for CodeActionTriggerKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for CodeActionTriggerKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = CodeActionTriggerKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<CodeActionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CodeActionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<CodeActionTriggerKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = CodeActionTriggerKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum FileOperationPatternKind {
#[default]
File,
Folder,
}
impl FileOperationPatternKind {
pub fn as_str(&self) -> &str {
match self {
Self::File => "file",
Self::Folder => "folder",
}
}
}
impl TryFrom<&str> for FileOperationPatternKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"file" => Ok(Self::File),
"folder" => Ok(Self::Folder),
_ => Err(()),
}
}
}
impl Serialize for FileOperationPatternKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for FileOperationPatternKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = FileOperationPatternKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<FileOperationPatternKind, E>
where
E: de::Error,
{
if let Ok(v) = FileOperationPatternKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum NotebookCellKind {
#[default]
Markup = 1,
Code = 2,
}
impl NotebookCellKind {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for NotebookCellKind {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Markup),
2 => Ok(Self::Code),
_ => Err(()),
}
}
}
impl Serialize for NotebookCellKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for NotebookCellKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = NotebookCellKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<NotebookCellKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = NotebookCellKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<NotebookCellKind, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = NotebookCellKind::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum ResourceOperationKind {
#[default]
Create,
Rename,
Delete,
}
impl ResourceOperationKind {
pub fn as_str(&self) -> &str {
match self {
Self::Create => "create",
Self::Rename => "rename",
Self::Delete => "delete",
}
}
}
impl TryFrom<&str> for ResourceOperationKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"create" => Ok(Self::Create),
"rename" => Ok(Self::Rename),
"delete" => Ok(Self::Delete),
_ => Err(()),
}
}
}
impl Serialize for ResourceOperationKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for ResourceOperationKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = ResourceOperationKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<ResourceOperationKind, E>
where
E: de::Error,
{
if let Ok(v) = ResourceOperationKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum FailureHandlingKind {
#[default]
Abort,
Transactional,
TextOnlyTransactional,
Undo,
}
impl FailureHandlingKind {
pub fn as_str(&self) -> &str {
match self {
Self::Abort => "abort",
Self::Transactional => "transactional",
Self::TextOnlyTransactional => "textOnlyTransactional",
Self::Undo => "undo",
}
}
}
impl TryFrom<&str> for FailureHandlingKind {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"abort" => Ok(Self::Abort),
"transactional" => Ok(Self::Transactional),
"textOnlyTransactional" => Ok(Self::TextOnlyTransactional),
"undo" => Ok(Self::Undo),
_ => Err(()),
}
}
}
impl Serialize for FailureHandlingKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for FailureHandlingKind {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = FailureHandlingKind;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<FailureHandlingKind, E>
where
E: de::Error,
{
if let Ok(v) = FailureHandlingKind::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Default, Clone, Copy)]
pub enum PrepareSupportDefaultBehavior {
#[default]
Identifier = 1,
}
impl PrepareSupportDefaultBehavior {
pub fn as_u32(self) -> u32 { self as u32 }
}
impl TryFrom<u32> for PrepareSupportDefaultBehavior {
type Error = ();
fn try_from(value: u32) -> Result<Self, ()> {
match value {
1 => Ok(Self::Identifier),
_ => Err(()),
}
}
}
impl Serialize for PrepareSupportDefaultBehavior {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_u32(self.as_u32())
}
}
impl<'de> Deserialize<'de> for PrepareSupportDefaultBehavior {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = PrepareSupportDefaultBehavior;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("unsigned integer")
}
fn visit_u64<E>(self, value: u64) -> Result<PrepareSupportDefaultBehavior, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = PrepareSupportDefaultBehavior::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Unsigned(value), &self))
}
}
fn visit_i64<E>(self, value: i64) -> Result<PrepareSupportDefaultBehavior, E>
where
E: de::Error,
{
if let Ok(n) = u32::try_from(value)
&& let Ok(v) = PrepareSupportDefaultBehavior::try_from(n)
{
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Signed(value), &self))
}
}
}
deserializer.deserialize_u32(Visitor)
}
}
#[derive(Debug, Default, Clone)]
pub enum TokenFormat {
#[default]
Relative,
}
impl TokenFormat {
pub fn as_str(&self) -> &str {
match self {
Self::Relative => "relative",
}
}
}
impl TryFrom<&str> for TokenFormat {
type Error = ();
fn try_from(value: &str) -> Result<Self, ()> {
match value {
"relative" => Ok(Self::Relative),
_ => Err(()),
}
}
}
impl Serialize for TokenFormat {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for TokenFormat {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
struct Visitor;
impl<'de> de::Visitor<'de> for Visitor {
type Value = TokenFormat;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
}
fn visit_str<E>(self, value: &str) -> Result<TokenFormat, E>
where
E: de::Error,
{
if let Ok(v) = TokenFormat::try_from(value) {
Ok(v)
} else {
Err(de::Error::invalid_value(de::Unexpected::Str(value), &self))
}
}
}
deserializer.deserialize_str(Visitor)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Definition {
Location(Location),
Many(Vec<Location>),
}
impl Default for Definition {
fn default() -> Self { Definition::Location(Default::default()) }
}
pub type DefinitionLink = LocationLink;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Declaration {
Location(Location),
Many(Vec<Location>),
}
impl Default for Declaration {
fn default() -> Self { Declaration::Location(Default::default()) }
}
pub type DeclarationLink = LocationLink;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum InlineValue {
InlineValueText(InlineValueText),
InlineValueVariableLookup(InlineValueVariableLookup),
InlineValueEvaluatableExpression(InlineValueEvaluatableExpression),
}
impl Default for InlineValue {
fn default() -> Self { InlineValue::InlineValueText(Default::default()) }
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum DocumentDiagnosticReport {
RelatedFullDocumentDiagnosticReport(RelatedFullDocumentDiagnosticReport),
RelatedUnchangedDocumentDiagnosticReport(RelatedUnchangedDocumentDiagnosticReport),
}
impl Default for DocumentDiagnosticReport {
fn default() -> Self {
DocumentDiagnosticReport::RelatedFullDocumentDiagnosticReport(Default::default())
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PrepareRenameResult {
Range(Range),
RangeRangePlaceholderString {
range: Range,
placeholder: String,
},
DefaultBehaviorBoolean {
#[serde(rename = "defaultBehavior")]
default_behavior: bool,
},
}
impl Default for PrepareRenameResult {
fn default() -> Self { PrepareRenameResult::Range(Default::default()) }
}
pub type DocumentSelector = Vec<DocumentFilter>;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ProgressToken {
Integer(i32),
String(String),
}
impl Default for ProgressToken {
fn default() -> Self { ProgressToken::Integer(Default::default()) }
}
pub type ChangeAnnotationIdentifier = String;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum WorkspaceDocumentDiagnosticReport {
WorkspaceFullDocumentDiagnosticReport(WorkspaceFullDocumentDiagnosticReport),
WorkspaceUnchangedDocumentDiagnosticReport(WorkspaceUnchangedDocumentDiagnosticReport),
}
impl Default for WorkspaceDocumentDiagnosticReport {
fn default() -> Self {
WorkspaceDocumentDiagnosticReport::WorkspaceFullDocumentDiagnosticReport(Default::default())
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum TextDocumentContentChangeEvent {
RangeRangeRangeLengthUintegerTextString {
range: Range,
#[deprecated = "use range instead."]
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "rangeLength")]
range_length: Option<u32>,
text: String,
},
TextString {
text: String,
},
}
#[deprecated = "use MarkupContent instead."]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum MarkedString {
String(String),
LanguageStringValueString { language: String, value: String },
}
impl Default for MarkedString {
fn default() -> Self { MarkedString::String(Default::default()) }
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum DocumentFilter {
TextDocumentFilter(TextDocumentFilter),
NotebookCellTextDocumentFilter(NotebookCellTextDocumentFilter),
}
impl Default for DocumentFilter {
fn default() -> Self { DocumentFilter::TextDocumentFilter(Default::default()) }
}
pub type LSPObject = HashMap<String, Value>;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GlobPattern {
Pattern(Pattern),
RelativePattern(RelativePattern),
}
impl Default for GlobPattern {
fn default() -> Self { GlobPattern::Pattern(Default::default()) }
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TextDocumentFilter {
language: String,
#[serde(skip_serializing_if = "Option::is_none")]
scheme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pattern: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentFilter {
#[serde(rename = "notebookType")]
notebook_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
scheme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pattern: Option<String>,
}
pub type Pattern = String;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum FileChangeContents {
#[serde(rename = "create")]
Create(CreateFile),
#[serde(rename = "rename")]
Rename(RenameFile),
#[serde(rename = "delete")]
Delete(DeleteFile),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum DocumentDiagnosticReportContents {
#[serde(rename = "full")]
Full(FullDocumentDiagnosticReport),
#[serde(rename = "unchanged")]
Unchanged(UnchangedDocumentDiagnosticReport),
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializeParamsClientInfo {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InitializeResultServerInfo {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionListItemDefaults {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "commitCharacters")]
pub commit_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "editRange")]
pub edit_range: Option<Or2<Range, CompletionListItemDefaultsEditRange>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextFormat")]
pub insert_text_format: Option<InsertTextFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextMode")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionDisabled {
pub reason: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolLocation {
pub uri: Uri,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SemanticTokensOptionsFull {
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentChangeEventCells {
#[serde(skip_serializing_if = "Option::is_none")]
pub structure: Option<NotebookDocumentChangeEventCellsStructure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<NotebookCell>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "textContent")]
pub text_content: Option<Vec<NotebookDocumentChangeEventCellsTextContent>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "workspaceFolders")]
pub workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "fileOperations")]
pub file_operations: Option<FileOperationOptions>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionOptionsCompletionItem {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "labelDetailsSupport")]
pub label_details_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentSyncOptionsNotebookSelector {
pub notebook: Or2<String, NotebookDocumentFilter>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<Vec<NotebookDocumentSyncOptionsNotebookSelectorCells>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct StaleRequestSupportCapabilities {
pub cancel: bool,
#[serde(rename = "retryOnContentModified")]
pub retry_on_content_modified: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ChangeAnnotationSupportCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "groupsOnLabel")]
pub groups_on_label: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SymbolKindCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "valueSet")]
pub value_set: Option<Vec<SymbolKind>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolTagSupportCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<SymbolTag>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct WorkspaceSymbolResolveSupportCapabilities {
pub properties: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionItemCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "snippetSupport")]
pub snippet_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "commitCharactersSupport")]
pub commit_characters_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentationFormat")]
pub documentation_format: Option<Vec<MarkupKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "deprecatedSupport")]
pub deprecated_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "preselectSupport")]
pub preselect_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "tagSupport")]
pub tag_support: Option<CompletionItemTagSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertReplaceSupport")]
pub insert_replace_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "resolveSupport")]
pub resolve_support: Option<ResolveSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "insertTextModeSupport")]
pub insert_text_mode_support: Option<InsertTextModeSupportCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "labelDetailsSupport")]
pub label_details_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionItemKindCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "valueSet")]
pub value_set: Option<Vec<CompletionItemKind>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionListCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "itemDefaults")]
pub item_defaults: Option<Vec<String>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SignatureInformationCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "documentationFormat")]
pub documentation_format: Option<Vec<MarkupKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "parameterInformation")]
pub parameter_information: Option<ParameterInformationCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "activeParameterSupport")]
pub active_parameter_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct DocumentSymbolTagSupportCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<SymbolTag>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionLiteralSupportCapabilities {
#[serde(rename = "codeActionKind")]
pub code_action_kind: CodeActionKindCapabilities,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionResolveSupportCapabilities {
pub properties: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeKindCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "valueSet")]
pub value_set: Option<Vec<FoldingRangeKind>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FoldingRangeCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "collapsedText")]
pub collapsed_text: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PublishDiagnosticsTagSupportCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<DiagnosticTag>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RequestsCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full: Option<Or2<bool, FullCapabilities>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InlayHintResolveSupportCapabilities {
pub properties: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct MessageActionItemCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "additionalPropertiesSupport")]
pub additional_properties_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionListItemDefaultsEditRange {
pub insert: Range,
pub replace: Range,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentChangeEventCellsStructure {
pub array: NotebookCellArrayChange,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didOpen")]
pub did_open: Option<Vec<TextDocumentItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "didClose")]
pub did_close: Option<Vec<TextDocumentIdentifier>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentChangeEventCellsTextContent {
pub document: VersionedTextDocumentIdentifier,
pub changes: Vec<TextDocumentContentChangeEvent>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct NotebookDocumentSyncOptionsNotebookSelectorCells {
pub language: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CompletionItemTagSupportCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<CompletionItemTag>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ResolveSupportCapabilities {
pub properties: Vec<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct InsertTextModeSupportCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<InsertTextMode>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct ParameterInformationCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "labelOffsetSupport")]
pub label_offset_support: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CodeActionKindCapabilities {
#[serde(rename = "valueSet")]
pub value_set: Vec<CodeActionKind>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct FullCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}