use serde::{Deserialize, ser::SerializeSeq as _, Serialize};
use std::collections::HashMap;
use crate::json_rpc::deserialize_some;
#[allow(clippy::wildcard_imports)]
use super::*;
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl ImplementationParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct Location {
pub uri: Uri,
pub range: Range,
}
impl Location {
#[must_use]
pub const fn new(uri: Uri, range: Range) -> Self {
Self { uri, range }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ImplementationRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub implementation_options: ImplementationOptions,
}
impl ImplementationRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
implementation_options: ImplementationOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
implementation_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl TypeDefinitionParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl TypeDefinitionRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
type_definition_options: TypeDefinitionOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
type_definition_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceFolder {
pub uri: Uri,
pub name: String,
}
impl WorkspaceFolder {
#[must_use]
pub const fn new(uri: Uri, name: String) -> Self {
Self { uri, name }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeWorkspaceFoldersParams {
pub event: WorkspaceFoldersChangeEvent,
}
impl DidChangeWorkspaceFoldersParams {
#[must_use]
pub const fn new(event: WorkspaceFoldersChangeEvent) -> Self {
Self { event }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ConfigurationParams {
pub items: Vec<ConfigurationItem>,
}
impl ConfigurationParams {
#[must_use]
pub const fn new(items: Vec<ConfigurationItem>) -> Self {
Self { items }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentColorParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl DocumentColorParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ColorInformation {
pub range: Range,
pub color: Color,
}
impl ColorInformation {
#[must_use]
pub const fn new(range: Range, color: Color) -> Self {
Self { range, color }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl DocumentColorRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
document_color_options: DocumentColorOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
document_color_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ColorPresentationParams {
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,
}
impl ColorPresentationParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
color: Color,
range: Range,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
color,
range,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ColorPresentation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_edit: Option<TextEdit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_text_edits: Option<Vec<TextEdit>>,
}
impl ColorPresentation {
#[must_use]
pub const fn new(
label: String,
text_edit: Option<TextEdit>,
additional_text_edits: Option<Vec<TextEdit>>,
) -> Self {
Self {
label,
text_edit,
additional_text_edits,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct WorkDoneProgressOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub work_done_progress: Option<bool>,
}
impl WorkDoneProgressOptions {
#[must_use]
pub const fn new(work_done_progress: Option<bool>) -> Self {
Self { work_done_progress }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentRegistrationOptions {
pub document_selector: Option<DocumentSelector>,
}
impl TextDocumentRegistrationOptions {
#[must_use]
pub const fn new(document_selector: Option<DocumentSelector>) -> Self {
Self { document_selector }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct FoldingRangeParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl FoldingRangeParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FoldingRange {
pub start_line: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_character: Option<u32>,
pub end_line: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_character: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<FoldingRangeKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collapsed_text: Option<String>,
}
impl FoldingRange {
#[must_use]
pub const fn new(
start_line: u32,
start_character: Option<u32>,
end_line: u32,
end_character: Option<u32>,
kind: Option<FoldingRangeKind>,
collapsed_text: Option<String>,
) -> Self {
Self {
start_line,
start_character,
end_line,
end_character,
kind,
collapsed_text,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl FoldingRangeRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
folding_range_options: FoldingRangeOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
folding_range_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl DeclarationParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeclarationRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub declaration_options: DeclarationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
impl DeclarationRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
declaration_options: DeclarationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
static_registration_options,
declaration_options,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SelectionRangeParams {
pub text_document: TextDocumentIdentifier,
pub positions: Vec<Position>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl SelectionRangeParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
positions: Vec<Position>,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
positions,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SelectionRange {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent: Option<Box<SelectionRange>>,
}
impl SelectionRange {
#[must_use]
pub const fn new(range: Range, parent: Option<Box<SelectionRange>>) -> Self {
Self { range, parent }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl SelectionRangeRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
selection_range_options: SelectionRangeOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
static_registration_options,
selection_range_options,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct WorkDoneProgressCreateParams {
pub token: ProgressToken,
}
impl WorkDoneProgressCreateParams {
#[must_use]
pub const fn new(token: ProgressToken) -> Self {
Self { token }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct WorkDoneProgressCancelParams {
pub token: ProgressToken,
}
impl WorkDoneProgressCancelParams {
#[must_use]
pub const fn new(token: ProgressToken) -> Self {
Self { token }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyPrepareParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl CallHierarchyPrepareParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
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,
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
}
impl CallHierarchyItem {
#[must_use]
pub const fn new(
name: String,
kind: SymbolKind,
tags: Option<Vec<SymbolTag>>,
detail: Option<String>,
uri: Uri,
range: Range,
selection_range: Range,
data: Option<LspAny>,
) -> Self {
Self {
name,
kind,
tags,
detail,
uri,
range,
selection_range,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl CallHierarchyRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
call_hierarchy_options: CallHierarchyOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
call_hierarchy_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyIncomingCallsParams {
pub item: CallHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl CallHierarchyIncomingCallsParams {
#[must_use]
pub const fn new(
item: CallHierarchyItem,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
item,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyIncomingCall {
pub from: CallHierarchyItem,
pub from_ranges: Vec<Range>,
}
impl CallHierarchyIncomingCall {
#[must_use]
pub const fn new(from: CallHierarchyItem, from_ranges: Vec<Range>) -> Self {
Self { from, from_ranges }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyOutgoingCallsParams {
pub item: CallHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl CallHierarchyOutgoingCallsParams {
#[must_use]
pub const fn new(
item: CallHierarchyItem,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
item,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyOutgoingCall {
pub to: CallHierarchyItem,
pub from_ranges: Vec<Range>,
}
impl CallHierarchyOutgoingCall {
#[must_use]
pub const fn new(to: CallHierarchyItem, from_ranges: Vec<Range>) -> Self {
Self { to, from_ranges }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl SemanticTokensParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokens {
#[serde(skip_serializing_if = "Option::is_none")]
pub result_id: Option<String>,
#[serde(
deserialize_with = "SemanticToken::deserialize_tokens",
serialize_with = "SemanticToken::serialize_tokens"
)]
pub data: Vec<SemanticToken>,
}
impl SemanticTokens {
#[must_use]
pub const fn new(result_id: Option<String>, data: Vec<SemanticToken>) -> Self {
Self { result_id, data }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensPartialResult {
#[serde(
deserialize_with = "SemanticToken::deserialize_tokens",
serialize_with = "SemanticToken::serialize_tokens"
)]
pub data: Vec<SemanticToken>,
}
impl SemanticTokensPartialResult {
#[must_use]
pub const fn new(data: Vec<SemanticToken>) -> Self {
Self { data }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl SemanticTokensRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
semantic_tokens_options: SemanticTokensOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
semantic_tokens_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensDeltaParams {
pub text_document: TextDocumentIdentifier,
pub previous_result_id: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl SemanticTokensDeltaParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
previous_result_id: String,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
previous_result_id,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensDelta {
#[serde(skip_serializing_if = "Option::is_none")]
pub result_id: Option<String>,
pub edits: Vec<SemanticTokensEdit>,
}
impl SemanticTokensDelta {
#[must_use]
pub const fn new(result_id: Option<String>, edits: Vec<SemanticTokensEdit>) -> Self {
Self { result_id, edits }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensDeltaPartialResult {
pub edits: Vec<SemanticTokensEdit>,
}
impl SemanticTokensDeltaPartialResult {
#[must_use]
pub const fn new(edits: Vec<SemanticTokensEdit>) -> Self {
Self { edits }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensRangeParams {
pub text_document: TextDocumentIdentifier,
pub range: Range,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl SemanticTokensRangeParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
range: Range,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
range,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ShowDocumentParams {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub external: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub take_focus: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selection: Option<Range>,
}
impl ShowDocumentParams {
#[must_use]
pub const fn new(
uri: Uri,
external: Option<bool>,
take_focus: Option<bool>,
selection: Option<Range>,
) -> Self {
Self {
uri,
external,
take_focus,
selection,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ShowDocumentResult {
pub success: bool,
}
impl ShowDocumentResult {
#[must_use]
pub const fn new(success: bool) -> Self {
Self { success }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct LinkedEditingRangeParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl LinkedEditingRangeParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct LinkedEditingRanges {
pub ranges: Vec<Range>,
#[serde(skip_serializing_if = "Option::is_none")]
pub word_pattern: Option<String>,
}
impl LinkedEditingRanges {
#[must_use]
pub const fn new(ranges: Vec<Range>, word_pattern: Option<String>) -> Self {
Self { ranges, word_pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl LinkedEditingRangeRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
linked_editing_range_options: LinkedEditingRangeOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
linked_editing_range_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CreateFilesParams {
pub files: Vec<FileCreate>,
}
impl CreateFilesParams {
#[must_use]
pub const fn new(files: Vec<FileCreate>) -> Self {
Self { files }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceEdit {
#[serde(skip_serializing_if = "Option::is_none")]
pub changes: Option<HashMap<Uri, Vec<TextEdit>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_changes: Option<Vec<DocumentChange>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub change_annotations: Option<
HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>,
>,
}
impl WorkspaceEdit {
#[must_use]
pub const fn new(
changes: Option<HashMap<Uri, Vec<TextEdit>>>,
document_changes: Option<Vec<DocumentChange>>,
change_annotations: Option<HashMap<ChangeAnnotationIdentifier, ChangeAnnotation>>,
) -> Self {
Self {
changes,
document_changes,
change_annotations,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileOperationRegistrationOptions {
pub filters: Vec<FileOperationFilter>,
}
impl FileOperationRegistrationOptions {
#[must_use]
pub const fn new(filters: Vec<FileOperationFilter>) -> Self {
Self { filters }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct RenameFilesParams {
pub files: Vec<FileRename>,
}
impl RenameFilesParams {
#[must_use]
pub const fn new(files: Vec<FileRename>) -> Self {
Self { files }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeleteFilesParams {
pub files: Vec<FileDelete>,
}
impl DeleteFilesParams {
#[must_use]
pub const fn new(files: Vec<FileDelete>) -> Self {
Self { files }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl MonikerParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct Moniker {
pub scheme: String,
pub identifier: String,
pub unique: UniquenessLevel,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<MonikerKind>,
}
impl Moniker {
#[must_use]
pub const fn new(
scheme: String,
identifier: String,
unique: UniquenessLevel,
kind: Option<MonikerKind>,
) -> Self {
Self {
scheme,
identifier,
unique,
kind,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct MonikerRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub moniker_options: MonikerOptions,
}
impl MonikerRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
moniker_options: MonikerOptions,
) -> Self {
Self {
text_document_registration_options,
moniker_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TypeHierarchyPrepareParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl TypeHierarchyPrepareParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
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,
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
}
impl TypeHierarchyItem {
#[must_use]
pub const fn new(
name: String,
kind: SymbolKind,
tags: Option<Vec<SymbolTag>>,
detail: Option<String>,
uri: Uri,
range: Range,
selection_range: Range,
data: Option<LspAny>,
) -> Self {
Self {
name,
kind,
tags,
detail,
uri,
range,
selection_range,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl TypeHierarchyRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
type_hierarchy_options: TypeHierarchyOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
type_hierarchy_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct TypeHierarchySupertypesParams {
pub item: TypeHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl TypeHierarchySupertypesParams {
#[must_use]
pub const fn new(
item: TypeHierarchyItem,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
item,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct TypeHierarchySubtypesParams {
pub item: TypeHierarchyItem,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl TypeHierarchySubtypesParams {
#[must_use]
pub const fn new(
item: TypeHierarchyItem,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
item,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueParams {
pub text_document: TextDocumentIdentifier,
pub range: Range,
pub context: InlineValueContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl InlineValueParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
range: Range,
context: InlineValueContext,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
text_document,
range,
context,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl InlineValueRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
inline_value_options: InlineValueOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
static_registration_options,
inline_value_options,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintParams {
pub text_document: TextDocumentIdentifier,
pub range: Range,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl InlayHintParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
range: Range,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
text_document,
range,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct InlayHint {
pub position: Position,
pub label: Label,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<InlayHintKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_edits: Option<Vec<TextEdit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<Tooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
pub padding_left: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub padding_right: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
}
impl InlayHint {
#[must_use]
pub const fn new(
position: Position,
label: Label,
kind: Option<InlayHintKind>,
text_edits: Option<Vec<TextEdit>>,
tooltip: Option<Tooltip>,
padding_left: Option<bool>,
padding_right: Option<bool>,
data: Option<LspAny>,
) -> Self {
Self {
position,
label,
kind,
text_edits,
tooltip,
padding_left,
padding_right,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl InlayHintRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
inlay_hint_options: InlayHintOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
static_registration_options,
inlay_hint_options,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentDiagnosticParams {
pub text_document: TextDocumentIdentifier,
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub previous_result_id: Option<String>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl DocumentDiagnosticParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
identifier: Option<String>,
previous_result_id: Option<String>,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
identifier,
previous_result_id,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentDiagnosticReportPartialResult {
pub related_documents: HashMap<Uri, RelatedDocument>,
}
impl DocumentDiagnosticReportPartialResult {
#[must_use]
pub const fn new(related_documents: HashMap<Uri, RelatedDocument>) -> Self {
Self { related_documents }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticServerCancellationData {
pub retrigger_request: bool,
}
impl DiagnosticServerCancellationData {
#[must_use]
pub const fn new(retrigger_request: bool) -> Self {
Self { retrigger_request }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub diagnostic_options: DiagnosticOptions,
}
impl DiagnosticRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
diagnostic_options: DiagnosticOptions,
) -> Self {
Self {
static_registration_options,
text_document_registration_options,
diagnostic_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceDiagnosticParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
pub previous_result_ids: Vec<PreviousResultId>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl WorkspaceDiagnosticParams {
#[must_use]
pub const fn new(
identifier: Option<String>,
previous_result_ids: Vec<PreviousResultId>,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
identifier,
previous_result_ids,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceDiagnosticReport {
pub items: Vec<WorkspaceDocumentDiagnosticReport>,
}
impl WorkspaceDiagnosticReport {
#[must_use]
pub const fn new(items: Vec<WorkspaceDocumentDiagnosticReport>) -> Self {
Self { items }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceDiagnosticReportPartialResult {
pub items: Vec<WorkspaceDocumentDiagnosticReport>,
}
impl WorkspaceDiagnosticReportPartialResult {
#[must_use]
pub const fn new(items: Vec<WorkspaceDocumentDiagnosticReport>) -> Self {
Self { items }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DidOpenNotebookDocumentParams {
pub notebook_document: NotebookDocument,
pub cell_text_documents: Vec<TextDocumentItem>,
}
impl DidOpenNotebookDocumentParams {
#[must_use]
pub const fn new(
notebook_document: NotebookDocument,
cell_text_documents: Vec<TextDocumentItem>,
) -> Self {
Self {
notebook_document,
cell_text_documents,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentSyncRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub notebook_document_sync_options: NotebookDocumentSyncOptions,
}
impl NotebookDocumentSyncRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
notebook_document_sync_options: NotebookDocumentSyncOptions,
) -> Self {
Self {
static_registration_options,
notebook_document_sync_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeNotebookDocumentParams {
pub notebook_document: VersionedNotebookDocumentIdentifier,
pub change: NotebookDocumentChangeEvent,
}
impl DidChangeNotebookDocumentParams {
#[must_use]
pub const fn new(
notebook_document: VersionedNotebookDocumentIdentifier,
change: NotebookDocumentChangeEvent,
) -> Self {
Self { notebook_document, change }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidSaveNotebookDocumentParams {
pub notebook_document: NotebookDocumentIdentifier,
}
impl DidSaveNotebookDocumentParams {
#[must_use]
pub const fn new(notebook_document: NotebookDocumentIdentifier) -> Self {
Self { notebook_document }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidCloseNotebookDocumentParams {
pub notebook_document: NotebookDocumentIdentifier,
pub cell_text_documents: Vec<TextDocumentIdentifier>,
}
impl DidCloseNotebookDocumentParams {
#[must_use]
pub const fn new(
notebook_document: NotebookDocumentIdentifier,
cell_text_documents: Vec<TextDocumentIdentifier>,
) -> Self {
Self {
notebook_document,
cell_text_documents,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionParams {
pub context: InlineCompletionContext,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl InlineCompletionParams {
#[must_use]
pub const fn new(
context: InlineCompletionContext,
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
context,
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionList {
pub items: Vec<InlineCompletionItem>,
}
impl InlineCompletionList {
#[must_use]
pub const fn new(items: Vec<InlineCompletionItem>) -> Self {
Self { items }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionItem {
pub insert_text: InsertText,
#[serde(skip_serializing_if = "Option::is_none")]
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>,
}
impl InlineCompletionItem {
#[must_use]
pub const fn new(
insert_text: InsertText,
filter_text: Option<String>,
range: Option<Range>,
command: Option<Command>,
) -> Self {
Self {
insert_text,
filter_text,
range,
command,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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,
}
impl InlineCompletionRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
inline_completion_options: InlineCompletionOptions,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
static_registration_options,
inline_completion_options,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentParams {
pub uri: Uri,
}
impl TextDocumentContentParams {
#[must_use]
pub const fn new(uri: Uri) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentResult {
pub text: String,
}
impl TextDocumentContentResult {
#[must_use]
pub const fn new(text: String) -> Self {
Self { text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentRegistrationOptions {
#[serde(flatten)]
pub static_registration_options: StaticRegistrationOptions,
#[serde(flatten)]
pub text_document_content_options: TextDocumentContentOptions,
}
impl TextDocumentContentRegistrationOptions {
#[must_use]
pub const fn new(
static_registration_options: StaticRegistrationOptions,
text_document_content_options: TextDocumentContentOptions,
) -> Self {
Self {
static_registration_options,
text_document_content_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentRefreshParams {
pub uri: Uri,
}
impl TextDocumentContentRefreshParams {
#[must_use]
pub const fn new(uri: Uri) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct RegistrationParams {
pub registrations: Vec<Registration>,
}
impl RegistrationParams {
#[must_use]
pub const fn new(registrations: Vec<Registration>) -> Self {
Self { registrations }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct UnregistrationParams {
pub unregisterations: Vec<Unregistration>,
}
impl UnregistrationParams {
#[must_use]
pub const fn new(unregisterations: Vec<Unregistration>) -> Self {
Self { unregisterations }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct InitializeParams {
pub process_id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_info: Option<ClientInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[deprecated(note = "in favour of rootUri.")]
#[serde(default, deserialize_with = "deserialize_some")]
#[serde(skip_serializing_if = "Option::is_none")]
pub root_path: Option<RootPath>,
#[deprecated(note = "in favour of workspaceFolders.")]
pub root_uri: Option<Uri>,
pub capabilities: ClientCapabilities,
#[serde(skip_serializing_if = "Option::is_none")]
pub initialization_options: Option<LspAny>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trace: Option<TraceValue>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub workspace_folders_initialize_params: WorkspaceFoldersInitializeParams,
}
impl InitializeParams {
#[must_use]
pub const fn new(
process_id: Option<i32>,
client_info: Option<ClientInfo>,
locale: Option<String>,
root_path: Option<RootPath>,
root_uri: Option<Uri>,
capabilities: ClientCapabilities,
initialization_options: Option<LspAny>,
trace: Option<TraceValue>,
work_done_progress_params: WorkDoneProgressParams,
workspace_folders_initialize_params: WorkspaceFoldersInitializeParams,
) -> Self {
Self {
process_id,
client_info,
locale,
root_path,
root_uri,
capabilities,
initialization_options,
trace,
work_done_progress_params,
workspace_folders_initialize_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct InitializeResult {
pub capabilities: ServerCapabilities,
#[serde(skip_serializing_if = "Option::is_none")]
pub server_info: Option<ServerInfo>,
}
impl InitializeResult {
#[must_use]
pub const fn new(
capabilities: ServerCapabilities,
server_info: Option<ServerInfo>,
) -> Self {
Self { capabilities, server_info }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InitializeError {
pub retry: bool,
}
impl InitializeError {
#[must_use]
pub const fn new(retry: bool) -> Self {
Self { retry }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InitializedParams {}
impl InitializedParams {
#[must_use]
pub const fn new() -> Self {
Self {}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeConfigurationParams {
pub settings: LspAny,
}
impl DidChangeConfigurationParams {
#[must_use]
pub const fn new(settings: LspAny) -> Self {
Self { settings }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeConfigurationRegistrationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<Section>,
}
impl DidChangeConfigurationRegistrationOptions {
#[must_use]
pub const fn new(section: Option<Section>) -> Self {
Self { section }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ShowMessageParams {
#[serde(rename = "type")]
pub kind: MessageType,
pub message: String,
}
impl ShowMessageParams {
#[must_use]
pub const fn new(kind: MessageType, message: String) -> Self {
Self { kind, message }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ShowMessageRequestParams {
#[serde(rename = "type")]
pub kind: MessageType,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub actions: Option<Vec<MessageActionItem>>,
}
impl ShowMessageRequestParams {
#[must_use]
pub const fn new(
kind: MessageType,
message: String,
actions: Option<Vec<MessageActionItem>>,
) -> Self {
Self { kind, message, actions }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct MessageActionItem {
pub title: String,
}
impl MessageActionItem {
#[must_use]
pub const fn new(title: String) -> Self {
Self { title }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct LogMessageParams {
#[serde(rename = "type")]
pub kind: MessageType,
pub message: String,
}
impl LogMessageParams {
#[must_use]
pub const fn new(kind: MessageType, message: String) -> Self {
Self { kind, message }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidOpenTextDocumentParams {
pub text_document: TextDocumentItem,
}
impl DidOpenTextDocumentParams {
#[must_use]
pub const fn new(text_document: TextDocumentItem) -> Self {
Self { text_document }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeTextDocumentParams {
pub text_document: VersionedTextDocumentIdentifier,
pub content_changes: Vec<TextDocumentContentChangeEvent>,
}
impl DidChangeTextDocumentParams {
#[must_use]
pub const fn new(
text_document: VersionedTextDocumentIdentifier,
content_changes: Vec<TextDocumentContentChangeEvent>,
) -> Self {
Self {
text_document,
content_changes,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentChangeRegistrationOptions {
pub sync_kind: TextDocumentSyncKind,
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
}
impl TextDocumentChangeRegistrationOptions {
#[must_use]
pub const fn new(
sync_kind: TextDocumentSyncKind,
text_document_registration_options: TextDocumentRegistrationOptions,
) -> Self {
Self {
sync_kind,
text_document_registration_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidCloseTextDocumentParams {
pub text_document: TextDocumentIdentifier,
}
impl DidCloseTextDocumentParams {
#[must_use]
pub const fn new(text_document: TextDocumentIdentifier) -> Self {
Self { text_document }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DidSaveTextDocumentParams {
pub text_document: TextDocumentIdentifier,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}
impl DidSaveTextDocumentParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
text: Option<String>,
) -> Self {
Self { text_document, text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentSaveRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub save_options: SaveOptions,
}
impl TextDocumentSaveRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
save_options: SaveOptions,
) -> Self {
Self {
text_document_registration_options,
save_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct WillSaveTextDocumentParams {
pub text_document: TextDocumentIdentifier,
pub reason: TextDocumentSaveReason,
}
impl WillSaveTextDocumentParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
reason: TextDocumentSaveReason,
) -> Self {
Self { text_document, reason }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextEdit {
pub range: Range,
pub new_text: String,
}
impl TextEdit {
#[must_use]
pub const fn new(range: Range, new_text: String) -> Self {
Self { range, new_text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeWatchedFilesParams {
pub changes: Vec<FileEvent>,
}
impl DidChangeWatchedFilesParams {
#[must_use]
pub const fn new(changes: Vec<FileEvent>) -> Self {
Self { changes }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeWatchedFilesRegistrationOptions {
pub watchers: Vec<FileSystemWatcher>,
}
impl DidChangeWatchedFilesRegistrationOptions {
#[must_use]
pub const fn new(watchers: Vec<FileSystemWatcher>) -> Self {
Self { watchers }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct PublishDiagnosticsParams {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i32>,
pub diagnostics: Vec<Diagnostic>,
}
impl PublishDiagnosticsParams {
#[must_use]
pub const fn new(
uri: Uri,
version: Option<i32>,
diagnostics: Vec<Diagnostic>,
) -> Self {
Self { uri, version, diagnostics }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl CompletionParams {
#[must_use]
pub const fn new(
context: Option<CompletionContext>,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
context,
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItem {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
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<Documentation>,
#[deprecated(note = "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")]
pub sort_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_format: Option<InsertTextFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_edit: Option<CompletionItemTextEdit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_edit_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_text_edits: Option<Vec<TextEdit>>,
#[serde(skip_serializing_if = "Option::is_none")]
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<LspAny>,
}
impl CompletionItem {
#[must_use]
pub const fn new(
label: String,
label_details: Option<CompletionItemLabelDetails>,
kind: Option<CompletionItemKind>,
tags: Option<Vec<CompletionItemTag>>,
detail: Option<String>,
documentation: Option<Documentation>,
deprecated: Option<bool>,
preselect: Option<bool>,
sort_text: Option<String>,
filter_text: Option<String>,
insert_text: Option<String>,
insert_text_format: Option<InsertTextFormat>,
insert_text_mode: Option<InsertTextMode>,
text_edit: Option<CompletionItemTextEdit>,
text_edit_text: Option<String>,
additional_text_edits: Option<Vec<TextEdit>>,
commit_characters: Option<Vec<String>>,
command: Option<Command>,
data: Option<LspAny>,
) -> Self {
Self {
label,
label_details,
kind,
tags,
detail,
documentation,
deprecated,
preselect,
sort_text,
filter_text,
insert_text,
insert_text_format,
insert_text_mode,
text_edit,
text_edit_text,
additional_text_edits,
commit_characters,
command,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionList {
pub is_incomplete: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_defaults: Option<CompletionItemDefaults>,
#[serde(skip_serializing_if = "Option::is_none")]
pub apply_kind: Option<CompletionItemApplyKinds>,
pub items: Vec<CompletionItem>,
}
impl CompletionList {
#[must_use]
pub const fn new(
is_incomplete: bool,
item_defaults: Option<CompletionItemDefaults>,
apply_kind: Option<CompletionItemApplyKinds>,
items: Vec<CompletionItem>,
) -> Self {
Self {
is_incomplete,
item_defaults,
apply_kind,
items,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub completion_options: CompletionOptions,
}
impl CompletionRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
completion_options: CompletionOptions,
) -> Self {
Self {
text_document_registration_options,
completion_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct HoverParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl HoverParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct Hover {
pub contents: Contents,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<Range>,
}
impl Hover {
#[must_use]
pub const fn new(contents: Contents, range: Option<Range>) -> Self {
Self { contents, range }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct HoverRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub hover_options: HoverOptions,
}
impl HoverRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
hover_options: HoverOptions,
) -> Self {
Self {
text_document_registration_options,
hover_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl SignatureHelpParams {
#[must_use]
pub const fn new(
context: Option<SignatureHelpContext>,
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
context,
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SignatureHelp {
pub signatures: Vec<SignatureInformation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_signature: Option<u32>,
#[serde(default, deserialize_with = "deserialize_some")]
#[serde(skip_serializing_if = "Option::is_none")]
pub active_parameter: Option<ActiveParameter>,
}
impl SignatureHelp {
#[must_use]
pub const fn new(
signatures: Vec<SignatureInformation>,
active_signature: Option<u32>,
active_parameter: Option<ActiveParameter>,
) -> Self {
Self {
signatures,
active_signature,
active_parameter,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SignatureHelpRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub signature_help_options: SignatureHelpOptions,
}
impl SignatureHelpRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
signature_help_options: SignatureHelpOptions,
) -> Self {
Self {
text_document_registration_options,
signature_help_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl DefinitionParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DefinitionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub definition_options: DefinitionOptions,
}
impl DefinitionRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
definition_options: DefinitionOptions,
) -> Self {
Self {
text_document_registration_options,
definition_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl ReferenceParams {
#[must_use]
pub const fn new(
context: ReferenceContext,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
context,
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub reference_options: ReferenceOptions,
}
impl ReferenceRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
reference_options: ReferenceOptions,
) -> Self {
Self {
text_document_registration_options,
reference_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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,
}
impl DocumentHighlightParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
partial_result_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentHighlight {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<DocumentHighlightKind>,
}
impl DocumentHighlight {
#[must_use]
pub const fn new(range: Range, kind: Option<DocumentHighlightKind>) -> Self {
Self { range, kind }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentHighlightRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_highlight_options: DocumentHighlightOptions,
}
impl DocumentHighlightRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_highlight_options: DocumentHighlightOptions,
) -> Self {
Self {
text_document_registration_options,
document_highlight_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSymbolParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl DocumentSymbolParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SymbolInformation {
#[deprecated(note = "Use tags instead")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
pub location: Location,
#[serde(flatten)]
pub base_symbol_information: BaseSymbolInformation,
}
impl SymbolInformation {
#[must_use]
pub const fn new(
deprecated: Option<bool>,
location: Location,
base_symbol_information: BaseSymbolInformation,
) -> Self {
Self {
deprecated,
location,
base_symbol_information,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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(note = "Use tags instead")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
pub range: Range,
pub selection_range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<DocumentSymbol>>,
}
impl DocumentSymbol {
#[must_use]
pub const fn new(
name: String,
detail: Option<String>,
kind: SymbolKind,
tags: Option<Vec<SymbolTag>>,
deprecated: Option<bool>,
range: Range,
selection_range: Range,
children: Option<Vec<DocumentSymbol>>,
) -> Self {
Self {
name,
detail,
kind,
tags,
deprecated,
range,
selection_range,
children,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSymbolRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_symbol_options: DocumentSymbolOptions,
}
impl DocumentSymbolRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_symbol_options: DocumentSymbolOptions,
) -> Self {
Self {
text_document_registration_options,
document_symbol_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionParams {
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,
}
impl CodeActionParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
range: Range,
context: CodeActionContext,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
range,
context,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct Command {
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<String>,
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<Vec<LspAny>>,
}
impl Command {
#[must_use]
pub const fn new(
title: String,
tooltip: Option<String>,
command: String,
arguments: Option<Vec<LspAny>>,
) -> Self {
Self {
title,
tooltip,
command,
arguments,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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")]
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<LspAny>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<CodeActionTag>>,
}
impl CodeAction {
#[must_use]
pub const fn new(
title: String,
kind: Option<CodeActionKind>,
diagnostics: Option<Vec<Diagnostic>>,
is_preferred: Option<bool>,
disabled: Option<CodeActionDisabled>,
edit: Option<WorkspaceEdit>,
command: Option<Command>,
data: Option<LspAny>,
tags: Option<Vec<CodeActionTag>>,
) -> Self {
Self {
title,
kind,
diagnostics,
is_preferred,
disabled,
edit,
command,
data,
tags,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub code_action_options: CodeActionOptions,
}
impl CodeActionRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
code_action_options: CodeActionOptions,
) -> Self {
Self {
text_document_registration_options,
code_action_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceSymbolParams {
pub query: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl WorkspaceSymbolParams {
#[must_use]
pub const fn new(
query: String,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
query,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceSymbol {
pub location: WorkspaceSymbolLocation,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
#[serde(flatten)]
pub base_symbol_information: BaseSymbolInformation,
}
impl WorkspaceSymbol {
#[must_use]
pub const fn new(
location: WorkspaceSymbolLocation,
data: Option<LspAny>,
base_symbol_information: BaseSymbolInformation,
) -> Self {
Self {
location,
data,
base_symbol_information,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceSymbolRegistrationOptions {
#[serde(flatten)]
pub workspace_symbol_options: WorkspaceSymbolOptions,
}
impl WorkspaceSymbolRegistrationOptions {
#[must_use]
pub const fn new(workspace_symbol_options: WorkspaceSymbolOptions) -> Self {
Self { workspace_symbol_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct CodeLensParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl CodeLensParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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<LspAny>,
}
impl CodeLens {
#[must_use]
pub const fn new(
range: Range,
command: Option<Command>,
data: Option<LspAny>,
) -> Self {
Self { range, command, data }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeLensRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub code_lens_options: CodeLensOptions,
}
impl CodeLensRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
code_lens_options: CodeLensOptions,
) -> Self {
Self {
text_document_registration_options,
code_lens_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentLinkParams {
pub text_document: TextDocumentIdentifier,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub partial_result_params: PartialResultParams,
}
impl DocumentLinkParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
work_done_progress_params: WorkDoneProgressParams,
partial_result_params: PartialResultParams,
) -> Self {
Self {
text_document,
work_done_progress_params,
partial_result_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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<LspAny>,
}
impl DocumentLink {
#[must_use]
pub const fn new(
range: Range,
target: Option<Uri>,
tooltip: Option<String>,
data: Option<LspAny>,
) -> Self {
Self {
range,
target,
tooltip,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentLinkRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_link_options: DocumentLinkOptions,
}
impl DocumentLinkRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_link_options: DocumentLinkOptions,
) -> Self {
Self {
text_document_registration_options,
document_link_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentFormattingParams {
pub text_document: TextDocumentIdentifier,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl DocumentFormattingParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
options: FormattingOptions,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
text_document,
options,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_formatting_options: DocumentFormattingOptions,
}
impl DocumentFormattingRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_formatting_options: DocumentFormattingOptions,
) -> Self {
Self {
text_document_registration_options,
document_formatting_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentRangeFormattingParams {
pub text_document: TextDocumentIdentifier,
pub range: Range,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl DocumentRangeFormattingParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
range: Range,
options: FormattingOptions,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
text_document,
range,
options,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentRangeFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_range_formatting_options: DocumentRangeFormattingOptions,
}
impl DocumentRangeFormattingRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_range_formatting_options: DocumentRangeFormattingOptions,
) -> Self {
Self {
text_document_registration_options,
document_range_formatting_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentRangesFormattingParams {
pub text_document: TextDocumentIdentifier,
pub ranges: Vec<Range>,
pub options: FormattingOptions,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl DocumentRangesFormattingParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
ranges: Vec<Range>,
options: FormattingOptions,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
text_document,
ranges,
options,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DocumentOnTypeFormattingParams {
pub text_document: TextDocumentIdentifier,
pub position: Position,
pub ch: String,
pub options: FormattingOptions,
}
impl DocumentOnTypeFormattingParams {
#[must_use]
pub const fn new(
text_document: TextDocumentIdentifier,
position: Position,
ch: String,
options: FormattingOptions,
) -> Self {
Self {
text_document,
position,
ch,
options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentOnTypeFormattingRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub document_on_type_formatting_options: DocumentOnTypeFormattingOptions,
}
impl DocumentOnTypeFormattingRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
document_on_type_formatting_options: DocumentOnTypeFormattingOptions,
) -> Self {
Self {
text_document_registration_options,
document_on_type_formatting_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct RenameParams {
pub new_name: String,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl RenameParams {
#[must_use]
pub const fn new(
new_name: String,
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
new_name,
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct RenameRegistrationOptions {
#[serde(flatten)]
pub text_document_registration_options: TextDocumentRegistrationOptions,
#[serde(flatten)]
pub rename_options: RenameOptions,
}
impl RenameRegistrationOptions {
#[must_use]
pub const fn new(
text_document_registration_options: TextDocumentRegistrationOptions,
rename_options: RenameOptions,
) -> Self {
Self {
text_document_registration_options,
rename_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct PrepareRenameParams {
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
#[serde(flatten)]
pub text_document_position_params: TextDocumentPositionParams,
}
impl PrepareRenameParams {
#[must_use]
pub const fn new(
work_done_progress_params: WorkDoneProgressParams,
text_document_position_params: TextDocumentPositionParams,
) -> Self {
Self {
work_done_progress_params,
text_document_position_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteCommandParams {
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<Vec<LspAny>>,
#[serde(flatten)]
pub work_done_progress_params: WorkDoneProgressParams,
}
impl ExecuteCommandParams {
#[must_use]
pub const fn new(
command: String,
arguments: Option<Vec<LspAny>>,
work_done_progress_params: WorkDoneProgressParams,
) -> Self {
Self {
command,
arguments,
work_done_progress_params,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteCommandRegistrationOptions {
#[serde(flatten)]
pub execute_command_options: ExecuteCommandOptions,
}
impl ExecuteCommandRegistrationOptions {
#[must_use]
pub const fn new(execute_command_options: ExecuteCommandOptions) -> Self {
Self { execute_command_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct ApplyWorkspaceEditParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
pub edit: WorkspaceEdit,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<WorkspaceEditMetadata>,
}
impl ApplyWorkspaceEditParams {
#[must_use]
pub const fn new(
label: Option<String>,
edit: WorkspaceEdit,
metadata: Option<WorkspaceEditMetadata>,
) -> Self {
Self { label, edit, metadata }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ApplyWorkspaceEditResult {
pub applied: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failed_change: Option<u32>,
}
impl ApplyWorkspaceEditResult {
#[must_use]
pub const fn new(
applied: bool,
failure_reason: Option<String>,
failed_change: Option<u32>,
) -> Self {
Self {
applied,
failure_reason,
failed_change,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowWorkDoneProgressBegin", into = "ShadowWorkDoneProgressBegin")]
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(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowWorkDoneProgressBegin {
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>,
pub kind: String,
}
impl TryFrom<ShadowWorkDoneProgressBegin> for WorkDoneProgressBegin {
type Error = String;
fn try_from(shadow: ShadowWorkDoneProgressBegin) -> Result<Self, Self::Error> {
if shadow.kind != "begin" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
title: shadow.title,
cancellable: shadow.cancellable,
message: shadow.message,
percentage: shadow.percentage,
})
}
}
impl From<WorkDoneProgressBegin> for ShadowWorkDoneProgressBegin {
fn from(original: WorkDoneProgressBegin) -> Self {
Self {
title: original.title,
cancellable: original.cancellable,
message: original.message,
percentage: original.percentage,
kind: "begin".to_string(),
}
}
}
impl WorkDoneProgressBegin {
#[must_use]
pub const fn new(
title: String,
cancellable: Option<bool>,
message: Option<String>,
percentage: Option<u32>,
) -> Self {
Self {
title,
cancellable,
message,
percentage,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[serde(
try_from = "ShadowWorkDoneProgressReport",
into = "ShadowWorkDoneProgressReport"
)]
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(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowWorkDoneProgressReport {
#[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>,
pub kind: String,
}
impl TryFrom<ShadowWorkDoneProgressReport> for WorkDoneProgressReport {
type Error = String;
fn try_from(shadow: ShadowWorkDoneProgressReport) -> Result<Self, Self::Error> {
if shadow.kind != "report" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
cancellable: shadow.cancellable,
message: shadow.message,
percentage: shadow.percentage,
})
}
}
impl From<WorkDoneProgressReport> for ShadowWorkDoneProgressReport {
fn from(original: WorkDoneProgressReport) -> Self {
Self {
cancellable: original.cancellable,
message: original.message,
percentage: original.percentage,
kind: "report".to_string(),
}
}
}
impl WorkDoneProgressReport {
#[must_use]
pub const fn new(
cancellable: Option<bool>,
message: Option<String>,
percentage: Option<u32>,
) -> Self {
Self {
cancellable,
message,
percentage,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowWorkDoneProgressEnd", into = "ShadowWorkDoneProgressEnd")]
pub struct WorkDoneProgressEnd {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowWorkDoneProgressEnd {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
pub kind: String,
}
impl TryFrom<ShadowWorkDoneProgressEnd> for WorkDoneProgressEnd {
type Error = String;
fn try_from(shadow: ShadowWorkDoneProgressEnd) -> Result<Self, Self::Error> {
if shadow.kind != "end" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self { message: shadow.message })
}
}
impl From<WorkDoneProgressEnd> for ShadowWorkDoneProgressEnd {
fn from(original: WorkDoneProgressEnd) -> Self {
Self {
message: original.message,
kind: "end".to_string(),
}
}
}
impl WorkDoneProgressEnd {
#[must_use]
pub const fn new(message: Option<String>) -> Self {
Self { message }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SetTraceParams {
pub value: TraceValue,
}
impl SetTraceParams {
#[must_use]
pub const fn new(value: TraceValue) -> Self {
Self { value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct LogTraceParams {
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub verbose: Option<String>,
}
impl LogTraceParams {
#[must_use]
pub const fn new(message: String, verbose: Option<String>) -> Self {
Self { message, verbose }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct CancelParams {
pub id: Id,
}
impl CancelParams {
#[must_use]
pub const fn new(id: Id) -> Self {
Self { id }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ProgressParams {
pub token: ProgressToken,
pub value: LspAny,
}
impl ProgressParams {
#[must_use]
pub const fn new(token: ProgressToken, value: LspAny) -> Self {
Self { token, value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentPositionParams {
pub text_document: TextDocumentIdentifier,
pub position: Position,
}
impl TextDocumentPositionParams {
#[must_use]
pub const fn new(text_document: TextDocumentIdentifier, position: Position) -> Self {
Self { text_document, position }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkDoneProgressParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub work_done_token: Option<ProgressToken>,
}
impl WorkDoneProgressParams {
#[must_use]
pub const fn new(work_done_token: Option<ProgressToken>) -> Self {
Self { work_done_token }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct PartialResultParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub partial_result_token: Option<ProgressToken>,
}
impl PartialResultParams {
#[must_use]
pub const fn new(partial_result_token: Option<ProgressToken>) -> Self {
Self { partial_result_token }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct LocationLink {
#[serde(skip_serializing_if = "Option::is_none")]
pub origin_selection_range: Option<Range>,
pub target_uri: Uri,
pub target_range: Range,
pub target_selection_range: Range,
}
impl LocationLink {
#[must_use]
pub const fn new(
origin_selection_range: Option<Range>,
target_uri: Uri,
target_range: Range,
target_selection_range: Range,
) -> Self {
Self {
origin_selection_range,
target_uri,
target_range,
target_selection_range,
}
}
}
#[derive(
Serialize,
Deserialize,
PartialEq,
Debug,
Clone,
Eq,
Hash,
Default,
Copy,
PartialOrd,
Ord
)]
#[serde(rename_all = "camelCase")]
pub struct Range {
pub start: Position,
pub end: Position,
}
impl Range {
#[must_use]
pub const fn new(start: Position, end: Position) -> Self {
Self { start, end }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ImplementationOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl ImplementationOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct StaticRegistrationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
impl StaticRegistrationOptions {
#[must_use]
pub const fn new(id: Option<String>) -> Self {
Self { id }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TypeDefinitionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl TypeDefinitionOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceFoldersChangeEvent {
pub added: Vec<WorkspaceFolder>,
pub removed: Vec<WorkspaceFolder>,
}
impl WorkspaceFoldersChangeEvent {
#[must_use]
pub const fn new(
added: Vec<WorkspaceFolder>,
removed: Vec<WorkspaceFolder>,
) -> Self {
Self { added, removed }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ConfigurationItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub scope_uri: Option<Uri>,
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<String>,
}
impl ConfigurationItem {
#[must_use]
pub const fn new(scope_uri: Option<Uri>, section: Option<String>) -> Self {
Self { scope_uri, section }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentIdentifier {
pub uri: Uri,
}
impl TextDocumentIdentifier {
#[must_use]
pub const fn new(uri: Uri) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct Color {
pub red: f32,
pub green: f32,
pub blue: f32,
pub alpha: f32,
}
impl Color {
#[must_use]
pub const fn new(red: f32, green: f32, blue: f32, alpha: f32) -> Self {
Self { red, green, blue, alpha }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentColorOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentColorOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct FoldingRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl FoldingRangeOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DeclarationOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DeclarationOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(
Serialize,
Deserialize,
PartialEq,
Debug,
Clone,
Eq,
Hash,
Default,
Copy,
PartialOrd,
Ord
)]
#[serde(rename_all = "camelCase")]
pub struct Position {
pub line: u32,
pub character: u32,
}
impl Position {
#[must_use]
pub const fn new(line: u32, character: u32) -> Self {
Self { line, character }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SelectionRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl SelectionRangeOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl CallHierarchyOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensOptions {
pub legend: SemanticTokensLegend,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<SemanticTokensOptionsRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full: Option<Full>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl SemanticTokensOptions {
#[must_use]
pub const fn new(
legend: SemanticTokensLegend,
range: Option<SemanticTokensOptionsRange>,
full: Option<Full>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
legend,
range,
full,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensEdit {
pub start: u32,
pub delete_count: u32,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "SemanticToken::deserialize_optional_tokens",
serialize_with = "SemanticToken::serialize_optional_tokens"
)]
pub data: Option<Vec<SemanticToken>>,
}
impl SemanticTokensEdit {
#[must_use]
pub const fn new(
start: u32,
delete_count: u32,
data: Option<Vec<SemanticToken>>,
) -> Self {
Self { start, delete_count, data }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct LinkedEditingRangeOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl LinkedEditingRangeOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileCreate {
pub uri: String,
}
impl FileCreate {
#[must_use]
pub const fn new(uri: String) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentEdit {
pub text_document: OptionalVersionedTextDocumentIdentifier,
pub edits: Vec<Edit>,
}
impl TextDocumentEdit {
#[must_use]
pub const fn new(
text_document: OptionalVersionedTextDocumentIdentifier,
edits: Vec<Edit>,
) -> Self {
Self { text_document, edits }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowCreateFile", into = "ShadowCreateFile")]
pub struct CreateFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<CreateFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
struct ShadowCreateFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<CreateFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
pub kind: String,
}
impl TryFrom<ShadowCreateFile> for CreateFile {
type Error = String;
fn try_from(shadow: ShadowCreateFile) -> Result<Self, Self::Error> {
if shadow.kind != "create" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
uri: shadow.uri,
options: shadow.options,
annotation_id: shadow.annotation_id,
})
}
}
impl From<CreateFile> for ShadowCreateFile {
fn from(original: CreateFile) -> Self {
Self {
uri: original.uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "create".to_string(),
}
}
}
impl CreateFile {
#[must_use]
pub const fn new(
uri: Uri,
options: Option<CreateFileOptions>,
annotation_id: Option<ChangeAnnotationIdentifier>,
) -> Self {
Self {
uri,
options,
annotation_id,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowRenameFile", into = "ShadowRenameFile")]
pub struct RenameFile {
pub old_uri: Uri,
pub new_uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<RenameFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
struct ShadowRenameFile {
pub old_uri: Uri,
pub new_uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<RenameFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
pub kind: String,
}
impl TryFrom<ShadowRenameFile> for RenameFile {
type Error = String;
fn try_from(shadow: ShadowRenameFile) -> Result<Self, Self::Error> {
if shadow.kind != "rename" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
old_uri: shadow.old_uri,
new_uri: shadow.new_uri,
options: shadow.options,
annotation_id: shadow.annotation_id,
})
}
}
impl From<RenameFile> for ShadowRenameFile {
fn from(original: RenameFile) -> Self {
Self {
old_uri: original.old_uri,
new_uri: original.new_uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "rename".to_string(),
}
}
}
impl RenameFile {
#[must_use]
pub const fn new(
old_uri: Uri,
new_uri: Uri,
options: Option<RenameFileOptions>,
annotation_id: Option<ChangeAnnotationIdentifier>,
) -> Self {
Self {
old_uri,
new_uri,
options,
annotation_id,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowDeleteFile", into = "ShadowDeleteFile")]
pub struct DeleteFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<DeleteFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
struct ShadowDeleteFile {
pub uri: Uri,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<DeleteFileOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
pub kind: String,
}
impl TryFrom<ShadowDeleteFile> for DeleteFile {
type Error = String;
fn try_from(shadow: ShadowDeleteFile) -> Result<Self, Self::Error> {
if shadow.kind != "delete" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
uri: shadow.uri,
options: shadow.options,
annotation_id: shadow.annotation_id,
})
}
}
impl From<DeleteFile> for ShadowDeleteFile {
fn from(original: DeleteFile) -> Self {
Self {
uri: original.uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "delete".to_string(),
}
}
}
impl DeleteFile {
#[must_use]
pub const fn new(
uri: Uri,
options: Option<DeleteFileOptions>,
annotation_id: Option<ChangeAnnotationIdentifier>,
) -> Self {
Self {
uri,
options,
annotation_id,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ChangeAnnotation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub needs_confirmation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl ChangeAnnotation {
#[must_use]
pub const fn new(
label: String,
needs_confirmation: Option<bool>,
description: Option<String>,
) -> Self {
Self {
label,
needs_confirmation,
description,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileOperationFilter {
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
pub pattern: FileOperationPattern,
}
impl FileOperationFilter {
#[must_use]
pub const fn new(scheme: Option<String>, pattern: FileOperationPattern) -> Self {
Self { scheme, pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileRename {
pub old_uri: String,
pub new_uri: String,
}
impl FileRename {
#[must_use]
pub const fn new(old_uri: String, new_uri: String) -> Self {
Self { old_uri, new_uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileDelete {
pub uri: String,
}
impl FileDelete {
#[must_use]
pub const fn new(uri: String) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct MonikerOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl MonikerOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TypeHierarchyOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl TypeHierarchyOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueContext {
pub frame_id: i32,
pub stopped_location: Range,
}
impl InlineValueContext {
#[must_use]
pub const fn new(frame_id: i32, stopped_location: Range) -> Self {
Self { frame_id, stopped_location }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueText {
pub range: Range,
pub text: String,
}
impl InlineValueText {
#[must_use]
pub const fn new(range: Range, text: String) -> Self {
Self { range, text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueVariableLookup {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub variable_name: Option<String>,
pub case_sensitive_lookup: bool,
}
impl InlineValueVariableLookup {
#[must_use]
pub const fn new(
range: Range,
variable_name: Option<String>,
case_sensitive_lookup: bool,
) -> Self {
Self {
range,
variable_name,
case_sensitive_lookup,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueEvaluatableExpression {
pub range: Range,
#[serde(skip_serializing_if = "Option::is_none")]
pub expression: Option<String>,
}
impl InlineValueEvaluatableExpression {
#[must_use]
pub const fn new(range: Range, expression: Option<String>) -> Self {
Self { range, expression }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl InlineValueOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintLabelPart {
pub value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<Tooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<Location>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<Command>,
}
impl InlayHintLabelPart {
#[must_use]
pub const fn new(
value: String,
tooltip: Option<Tooltip>,
location: Option<Location>,
command: Option<Command>,
) -> Self {
Self {
value,
tooltip,
location,
command,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct MarkupContent {
pub kind: MarkupKind,
pub value: String,
}
impl MarkupContent {
#[must_use]
pub const fn new(kind: MarkupKind, value: String) -> Self {
Self { kind, value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl InlayHintOptions {
#[must_use]
pub const fn new(
resolve_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
resolve_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct RelatedFullDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub related_documents: Option<HashMap<Uri, RelatedDocument>>,
#[serde(flatten)]
pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
}
impl RelatedFullDocumentDiagnosticReport {
#[must_use]
pub const fn new(
related_documents: Option<HashMap<Uri, RelatedDocument>>,
full_document_diagnostic_report: FullDocumentDiagnosticReport,
) -> Self {
Self {
related_documents,
full_document_diagnostic_report,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct RelatedUnchangedDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub related_documents: Option<HashMap<Uri, RelatedDocument>>,
#[serde(flatten)]
pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
}
impl RelatedUnchangedDocumentDiagnosticReport {
#[must_use]
pub const fn new(
related_documents: Option<HashMap<Uri, RelatedDocument>>,
unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
) -> Self {
Self {
related_documents,
unchanged_document_diagnostic_report,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
#[serde(
try_from = "ShadowFullDocumentDiagnosticReport",
into = "ShadowFullDocumentDiagnosticReport"
)]
pub struct FullDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub result_id: Option<String>,
pub items: Vec<Diagnostic>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowFullDocumentDiagnosticReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub result_id: Option<String>,
pub items: Vec<Diagnostic>,
pub kind: String,
}
impl TryFrom<ShadowFullDocumentDiagnosticReport> for FullDocumentDiagnosticReport {
type Error = String;
fn try_from(
shadow: ShadowFullDocumentDiagnosticReport,
) -> Result<Self, Self::Error> {
if shadow.kind != "full" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
result_id: shadow.result_id,
items: shadow.items,
})
}
}
impl From<FullDocumentDiagnosticReport> for ShadowFullDocumentDiagnosticReport {
fn from(original: FullDocumentDiagnosticReport) -> Self {
Self {
result_id: original.result_id,
items: original.items,
kind: "full".to_string(),
}
}
}
impl FullDocumentDiagnosticReport {
#[must_use]
pub const fn new(result_id: Option<String>, items: Vec<Diagnostic>) -> Self {
Self { result_id, items }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[serde(
try_from = "ShadowUnchangedDocumentDiagnosticReport",
into = "ShadowUnchangedDocumentDiagnosticReport"
)]
pub struct UnchangedDocumentDiagnosticReport {
pub result_id: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowUnchangedDocumentDiagnosticReport {
pub result_id: String,
pub kind: String,
}
impl TryFrom<ShadowUnchangedDocumentDiagnosticReport>
for UnchangedDocumentDiagnosticReport {
type Error = String;
fn try_from(
shadow: ShadowUnchangedDocumentDiagnosticReport,
) -> Result<Self, Self::Error> {
if shadow.kind != "unchanged" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self {
result_id: shadow.result_id,
})
}
}
impl From<UnchangedDocumentDiagnosticReport>
for ShadowUnchangedDocumentDiagnosticReport {
fn from(original: UnchangedDocumentDiagnosticReport) -> Self {
Self {
result_id: original.result_id,
kind: "unchanged".to_string(),
}
}
}
impl UnchangedDocumentDiagnosticReport {
#[must_use]
pub const fn new(result_id: String) -> Self {
Self { result_id }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
pub inter_file_dependencies: bool,
pub workspace_diagnostics: bool,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DiagnosticOptions {
#[must_use]
pub const fn new(
identifier: Option<String>,
inter_file_dependencies: bool,
workspace_diagnostics: bool,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
identifier,
inter_file_dependencies,
workspace_diagnostics,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct PreviousResultId {
pub uri: Uri,
pub value: String,
}
impl PreviousResultId {
#[must_use]
pub const fn new(uri: Uri, value: String) -> Self {
Self { uri, value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocument {
pub uri: Uri,
pub notebook_type: String,
pub version: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<LspObject>,
pub cells: Vec<NotebookCell>,
}
impl NotebookDocument {
#[must_use]
pub const fn new(
uri: Uri,
notebook_type: String,
version: i32,
metadata: Option<LspObject>,
cells: Vec<NotebookCell>,
) -> Self {
Self {
uri,
notebook_type,
version,
metadata,
cells,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentItem {
pub uri: Uri,
pub language_id: LanguageKind,
pub version: i32,
pub text: String,
}
impl TextDocumentItem {
#[must_use]
pub const fn new(
uri: Uri,
language_id: LanguageKind,
version: i32,
text: String,
) -> Self {
Self {
uri,
language_id,
version,
text,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentSyncOptions {
pub notebook_selector: Vec<NotebookSelector>,
#[serde(skip_serializing_if = "Option::is_none")]
pub save: Option<bool>,
}
impl NotebookDocumentSyncOptions {
#[must_use]
pub const fn new(
notebook_selector: Vec<NotebookSelector>,
save: Option<bool>,
) -> Self {
Self { notebook_selector, save }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct VersionedNotebookDocumentIdentifier {
pub version: i32,
pub uri: Uri,
}
impl VersionedNotebookDocumentIdentifier {
#[must_use]
pub const fn new(version: i32, uri: Uri) -> Self {
Self { version, uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentChangeEvent {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<LspObject>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<NotebookDocumentCellChanges>,
}
impl NotebookDocumentChangeEvent {
#[must_use]
pub const fn new(
metadata: Option<LspObject>,
cells: Option<NotebookDocumentCellChanges>,
) -> Self {
Self { metadata, cells }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentIdentifier {
pub uri: Uri,
}
impl NotebookDocumentIdentifier {
#[must_use]
pub const fn new(uri: Uri) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionContext {
pub trigger_kind: InlineCompletionTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub selected_completion_info: Option<SelectedCompletionInfo>,
}
impl InlineCompletionContext {
#[must_use]
pub const fn new(
trigger_kind: InlineCompletionTriggerKind,
selected_completion_info: Option<SelectedCompletionInfo>,
) -> Self {
Self {
trigger_kind,
selected_completion_info,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[serde(try_from = "ShadowStringValue", into = "ShadowStringValue")]
pub struct StringValue {
pub value: String,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
struct ShadowStringValue {
pub value: String,
pub kind: String,
}
impl TryFrom<ShadowStringValue> for StringValue {
type Error = String;
fn try_from(shadow: ShadowStringValue) -> Result<Self, Self::Error> {
if shadow.kind != "snippet" {
return Err(format!("Invalid value for prop kind: {}", shadow.kind));
}
Ok(Self { value: shadow.value })
}
}
impl From<StringValue> for ShadowStringValue {
fn from(original: StringValue) -> Self {
Self {
value: original.value,
kind: "snippet".to_string(),
}
}
}
impl StringValue {
#[must_use]
pub const fn new(value: String) -> Self {
Self { value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl InlineCompletionOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentOptions {
pub schemes: Vec<String>,
}
impl TextDocumentContentOptions {
#[must_use]
pub const fn new(schemes: Vec<String>) -> Self {
Self { schemes }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct Registration {
pub id: String,
pub method: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub register_options: Option<LspAny>,
}
impl Registration {
#[must_use]
pub const fn new(
id: String,
method: String,
register_options: Option<LspAny>,
) -> Self {
Self {
id,
method,
register_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct Unregistration {
pub id: String,
pub method: String,
}
impl Unregistration {
#[must_use]
pub const fn new(id: String, method: String) -> Self {
Self { id, method }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceFoldersInitializeParams {
#[serde(default, deserialize_with = "deserialize_some")]
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace_folders: Option<WorkspaceFolders>,
}
impl WorkspaceFoldersInitializeParams {
#[must_use]
pub const fn new(workspace_folders: Option<WorkspaceFolders>) -> Self {
Self { workspace_folders }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct ServerCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub position_encoding: Option<PositionEncodingKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_document_sync: Option<TextDocumentSync>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notebook_document_sync: Option<NotebookDocumentSync>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_provider: Option<CompletionOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hover_provider: Option<HoverProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signature_help_provider: Option<SignatureHelpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub declaration_provider: Option<DeclarationProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub definition_provider: Option<DefinitionProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub type_definition_provider: Option<TypeDefinitionProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub implementation_provider: Option<ImplementationProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub references_provider: Option<ReferencesProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_highlight_provider: Option<DocumentHighlightProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_symbol_provider: Option<DocumentSymbolProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_action_provider: Option<CodeActionProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_lens_provider: Option<CodeLensOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_link_provider: Option<DocumentLinkOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color_provider: Option<ColorProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace_symbol_provider: Option<WorkspaceSymbolProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_formatting_provider: Option<DocumentFormattingProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_range_formatting_provider: Option<DocumentRangeFormattingProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rename_provider: Option<RenameProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folding_range_provider: Option<FoldingRangeProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selection_range_provider: Option<SelectionRangeProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execute_command_provider: Option<ExecuteCommandOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub call_hierarchy_provider: Option<CallHierarchyProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub linked_editing_range_provider: Option<LinkedEditingRangeProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub semantic_tokens_provider: Option<SemanticTokensProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub moniker_provider: Option<MonikerProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub type_hierarchy_provider: Option<TypeHierarchyProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_value_provider: Option<InlineValueProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inlay_hint_provider: Option<InlayHintProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostic_provider: Option<DiagnosticProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_completion_provider: Option<InlineCompletionProvider>,
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace: Option<WorkspaceOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub experimental: Option<LspAny>,
}
impl ServerCapabilities {
#[must_use]
pub const fn new(
position_encoding: Option<PositionEncodingKind>,
text_document_sync: Option<TextDocumentSync>,
notebook_document_sync: Option<NotebookDocumentSync>,
completion_provider: Option<CompletionOptions>,
hover_provider: Option<HoverProvider>,
signature_help_provider: Option<SignatureHelpOptions>,
declaration_provider: Option<DeclarationProvider>,
definition_provider: Option<DefinitionProvider>,
type_definition_provider: Option<TypeDefinitionProvider>,
implementation_provider: Option<ImplementationProvider>,
references_provider: Option<ReferencesProvider>,
document_highlight_provider: Option<DocumentHighlightProvider>,
document_symbol_provider: Option<DocumentSymbolProvider>,
code_action_provider: Option<CodeActionProvider>,
code_lens_provider: Option<CodeLensOptions>,
document_link_provider: Option<DocumentLinkOptions>,
color_provider: Option<ColorProvider>,
workspace_symbol_provider: Option<WorkspaceSymbolProvider>,
document_formatting_provider: Option<DocumentFormattingProvider>,
document_range_formatting_provider: Option<DocumentRangeFormattingProvider>,
document_on_type_formatting_provider: Option<DocumentOnTypeFormattingOptions>,
rename_provider: Option<RenameProvider>,
folding_range_provider: Option<FoldingRangeProvider>,
selection_range_provider: Option<SelectionRangeProvider>,
execute_command_provider: Option<ExecuteCommandOptions>,
call_hierarchy_provider: Option<CallHierarchyProvider>,
linked_editing_range_provider: Option<LinkedEditingRangeProvider>,
semantic_tokens_provider: Option<SemanticTokensProvider>,
moniker_provider: Option<MonikerProvider>,
type_hierarchy_provider: Option<TypeHierarchyProvider>,
inline_value_provider: Option<InlineValueProvider>,
inlay_hint_provider: Option<InlayHintProvider>,
diagnostic_provider: Option<DiagnosticProvider>,
inline_completion_provider: Option<InlineCompletionProvider>,
workspace: Option<WorkspaceOptions>,
experimental: Option<LspAny>,
) -> Self {
Self {
position_encoding,
text_document_sync,
notebook_document_sync,
completion_provider,
hover_provider,
signature_help_provider,
declaration_provider,
definition_provider,
type_definition_provider,
implementation_provider,
references_provider,
document_highlight_provider,
document_symbol_provider,
code_action_provider,
code_lens_provider,
document_link_provider,
color_provider,
workspace_symbol_provider,
document_formatting_provider,
document_range_formatting_provider,
document_on_type_formatting_provider,
rename_provider,
folding_range_provider,
selection_range_provider,
execute_command_provider,
call_hierarchy_provider,
linked_editing_range_provider,
semantic_tokens_provider,
moniker_provider,
type_hierarchy_provider,
inline_value_provider,
inlay_hint_provider,
diagnostic_provider,
inline_completion_provider,
workspace,
experimental,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ServerInfo {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl ServerInfo {
#[must_use]
pub const fn new(name: String, version: Option<String>) -> Self {
Self { name, version }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct VersionedTextDocumentIdentifier {
pub version: i32,
#[serde(flatten)]
pub text_document_identifier: TextDocumentIdentifier,
}
impl VersionedTextDocumentIdentifier {
#[must_use]
pub const fn new(
version: i32,
text_document_identifier: TextDocumentIdentifier,
) -> Self {
Self {
version,
text_document_identifier,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SaveOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub include_text: Option<bool>,
}
impl SaveOptions {
#[must_use]
pub const fn new(include_text: Option<bool>) -> Self {
Self { include_text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct FileEvent {
pub uri: Uri,
#[serde(rename = "type")]
pub kind: FileChangeType,
}
impl FileEvent {
#[must_use]
pub const fn new(uri: Uri, kind: FileChangeType) -> Self {
Self { uri, kind }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct FileSystemWatcher {
pub glob_pattern: GlobPattern,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<WatchKind>,
}
impl FileSystemWatcher {
#[must_use]
pub const fn new(glob_pattern: GlobPattern, kind: Option<WatchKind>) -> Self {
Self { glob_pattern, kind }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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<Code>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_description: Option<CodeDescription>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
pub message: Message,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<DiagnosticTag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub related_information: Option<Vec<DiagnosticRelatedInformation>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
}
impl Diagnostic {
#[must_use]
pub const fn new(
range: Range,
severity: Option<DiagnosticSeverity>,
code: Option<Code>,
code_description: Option<CodeDescription>,
source: Option<String>,
message: Message,
tags: Option<Vec<DiagnosticTag>>,
related_information: Option<Vec<DiagnosticRelatedInformation>>,
data: Option<LspAny>,
) -> Self {
Self {
range,
severity,
code,
code_description,
source,
message,
tags,
related_information,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct CompletionContext {
pub trigger_kind: CompletionTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_character: Option<String>,
}
impl CompletionContext {
#[must_use]
pub const fn new(
trigger_kind: CompletionTriggerKind,
trigger_character: Option<String>,
) -> Self {
Self {
trigger_kind,
trigger_character,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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>,
}
impl CompletionItemLabelDetails {
#[must_use]
pub const fn new(detail: Option<String>, description: Option<String>) -> Self {
Self { detail, description }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct InsertReplaceEdit {
pub new_text: String,
pub insert: Range,
pub replace: Range,
}
impl InsertReplaceEdit {
#[must_use]
pub const fn new(new_text: String, insert: Range, replace: Range) -> Self {
Self { new_text, insert, replace }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItemDefaults {
#[serde(skip_serializing_if = "Option::is_none")]
pub commit_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub edit_range: Option<EditRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_format: Option<InsertTextFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<LspAny>,
}
impl CompletionItemDefaults {
#[must_use]
pub const fn new(
commit_characters: Option<Vec<String>>,
edit_range: Option<EditRange>,
insert_text_format: Option<InsertTextFormat>,
insert_text_mode: Option<InsertTextMode>,
data: Option<LspAny>,
) -> Self {
Self {
commit_characters,
edit_range,
insert_text_format,
insert_text_mode,
data,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItemApplyKinds {
#[serde(skip_serializing_if = "Option::is_none")]
pub commit_characters: Option<ApplyKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<ApplyKind>,
}
impl CompletionItemApplyKinds {
#[must_use]
pub const fn new(
commit_characters: Option<ApplyKind>,
data: Option<ApplyKind>,
) -> Self {
Self { commit_characters, data }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub all_commit_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_item: Option<ServerCompletionItemOptions>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl CompletionOptions {
#[must_use]
pub const fn new(
trigger_characters: Option<Vec<String>>,
all_commit_characters: Option<Vec<String>>,
resolve_provider: Option<bool>,
completion_item: Option<ServerCompletionItemOptions>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
trigger_characters,
all_commit_characters,
resolve_provider,
completion_item,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct HoverOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl HoverOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct SignatureHelpContext {
pub trigger_kind: SignatureHelpTriggerKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_character: Option<String>,
pub is_retrigger: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_signature_help: Option<SignatureHelp>,
}
impl SignatureHelpContext {
#[must_use]
pub const fn new(
trigger_kind: SignatureHelpTriggerKind,
trigger_character: Option<String>,
is_retrigger: bool,
active_signature_help: Option<SignatureHelp>,
) -> Self {
Self {
trigger_kind,
trigger_character,
is_retrigger,
active_signature_help,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SignatureInformation {
pub label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Documentation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<Vec<ParameterInformation>>,
#[serde(default, deserialize_with = "deserialize_some")]
#[serde(skip_serializing_if = "Option::is_none")]
pub active_parameter: Option<ActiveParameter>,
}
impl SignatureInformation {
#[must_use]
pub const fn new(
label: String,
documentation: Option<Documentation>,
parameters: Option<Vec<ParameterInformation>>,
active_parameter: Option<ActiveParameter>,
) -> Self {
Self {
label,
documentation,
parameters,
active_parameter,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SignatureHelpOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_characters: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retrigger_characters: Option<Vec<String>>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl SignatureHelpOptions {
#[must_use]
pub const fn new(
trigger_characters: Option<Vec<String>>,
retrigger_characters: Option<Vec<String>>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
trigger_characters,
retrigger_characters,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DefinitionOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DefinitionOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceContext {
pub include_declaration: bool,
}
impl ReferenceContext {
#[must_use]
pub const fn new(include_declaration: bool) -> Self {
Self { include_declaration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl ReferenceOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentHighlightOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentHighlightOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
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")]
pub container_name: Option<String>,
}
impl BaseSymbolInformation {
#[must_use]
pub const fn new(
name: String,
kind: SymbolKind,
tags: Option<Vec<SymbolTag>>,
container_name: Option<String>,
) -> Self {
Self {
name,
kind,
tags,
container_name,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSymbolOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentSymbolOptions {
#[must_use]
pub const fn new(
label: Option<String>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
label,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
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")]
pub trigger_kind: Option<CodeActionTriggerKind>,
}
impl CodeActionContext {
#[must_use]
pub const fn new(
diagnostics: Vec<Diagnostic>,
only: Option<Vec<CodeActionKind>>,
trigger_kind: Option<CodeActionTriggerKind>,
) -> Self {
Self {
diagnostics,
only,
trigger_kind,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionDisabled {
pub reason: String,
}
impl CodeActionDisabled {
#[must_use]
pub const fn new(reason: String) -> Self {
Self { reason }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub code_action_kinds: Option<Vec<CodeActionKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Vec<CodeActionKindDocumentation>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl CodeActionOptions {
#[must_use]
pub const fn new(
code_action_kinds: Option<Vec<CodeActionKind>>,
documentation: Option<Vec<CodeActionKindDocumentation>>,
resolve_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
code_action_kinds,
documentation,
resolve_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct LocationUriOnly {
pub uri: Uri,
}
impl LocationUriOnly {
#[must_use]
pub const fn new(uri: Uri) -> Self {
Self { uri }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceSymbolOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl WorkspaceSymbolOptions {
#[must_use]
pub const fn new(
resolve_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
resolve_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CodeLensOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl CodeLensOptions {
#[must_use]
pub const fn new(
resolve_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
resolve_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentLinkOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentLinkOptions {
#[must_use]
pub const fn new(
resolve_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
resolve_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct FormattingOptions {
pub tab_size: u32,
pub insert_spaces: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub trim_trailing_whitespace: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_final_newline: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trim_final_newlines: Option<bool>,
}
impl FormattingOptions {
#[must_use]
pub const fn new(
tab_size: u32,
insert_spaces: bool,
trim_trailing_whitespace: Option<bool>,
insert_final_newline: Option<bool>,
trim_final_newlines: Option<bool>,
) -> Self {
Self {
tab_size,
insert_spaces,
trim_trailing_whitespace,
insert_final_newline,
trim_final_newlines,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentFormattingOptions {
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentFormattingOptions {
#[must_use]
pub const fn new(work_done_progress_options: WorkDoneProgressOptions) -> Self {
Self { work_done_progress_options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentRangeFormattingOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub ranges_support: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl DocumentRangeFormattingOptions {
#[must_use]
pub const fn new(
ranges_support: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
ranges_support,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentOnTypeFormattingOptions {
pub first_trigger_character: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub more_trigger_character: Option<Vec<String>>,
}
impl DocumentOnTypeFormattingOptions {
#[must_use]
pub const fn new(
first_trigger_character: String,
more_trigger_character: Option<Vec<String>>,
) -> Self {
Self {
first_trigger_character,
more_trigger_character,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct RenameOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub prepare_provider: Option<bool>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl RenameOptions {
#[must_use]
pub const fn new(
prepare_provider: Option<bool>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
prepare_provider,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct PrepareRenamePlaceholder {
pub range: Range,
pub placeholder: String,
}
impl PrepareRenamePlaceholder {
#[must_use]
pub const fn new(range: Range, placeholder: String) -> Self {
Self { range, placeholder }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct PrepareRenameDefaultBehavior {
pub default_behavior: bool,
}
impl PrepareRenameDefaultBehavior {
#[must_use]
pub const fn new(default_behavior: bool) -> Self {
Self { default_behavior }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteCommandOptions {
pub commands: Vec<String>,
#[serde(flatten)]
pub work_done_progress_options: WorkDoneProgressOptions,
}
impl ExecuteCommandOptions {
#[must_use]
pub const fn new(
commands: Vec<String>,
work_done_progress_options: WorkDoneProgressOptions,
) -> Self {
Self {
commands,
work_done_progress_options,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceEditMetadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub is_refactoring: Option<bool>,
}
impl WorkspaceEditMetadata {
#[must_use]
pub const fn new(is_refactoring: Option<bool>) -> Self {
Self { is_refactoring }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensLegend {
pub token_types: Vec<String>,
pub token_modifiers: Vec<String>,
}
impl SemanticTokensLegend {
#[must_use]
pub const fn new(token_types: Vec<String>, token_modifiers: Vec<String>) -> Self {
Self {
token_types,
token_modifiers,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensFullDelta {
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}
impl SemanticTokensFullDelta {
#[must_use]
pub const fn new(delta: Option<bool>) -> Self {
Self { delta }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct OptionalVersionedTextDocumentIdentifier {
pub version: Option<i32>,
#[serde(flatten)]
pub text_document_identifier: TextDocumentIdentifier,
}
impl OptionalVersionedTextDocumentIdentifier {
#[must_use]
pub const fn new(
version: Option<i32>,
text_document_identifier: TextDocumentIdentifier,
) -> Self {
Self {
version,
text_document_identifier,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct AnnotatedTextEdit {
pub annotation_id: ChangeAnnotationIdentifier,
#[serde(flatten)]
pub text_edit: TextEdit,
}
impl AnnotatedTextEdit {
#[must_use]
pub const fn new(
annotation_id: ChangeAnnotationIdentifier,
text_edit: TextEdit,
) -> Self {
Self { annotation_id, text_edit }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SnippetTextEdit {
pub range: Range,
pub snippet: StringValue,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
impl SnippetTextEdit {
#[must_use]
pub const fn new(
range: Range,
snippet: StringValue,
annotation_id: Option<ChangeAnnotationIdentifier>,
) -> Self {
Self {
range,
snippet,
annotation_id,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ResourceOperation {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotation_id: Option<ChangeAnnotationIdentifier>,
}
impl ResourceOperation {
#[must_use]
pub const fn new(
kind: String,
annotation_id: Option<ChangeAnnotationIdentifier>,
) -> Self {
Self { kind, annotation_id }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CreateFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub overwrite: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_if_exists: Option<bool>,
}
impl CreateFileOptions {
#[must_use]
pub const fn new(overwrite: Option<bool>, ignore_if_exists: Option<bool>) -> Self {
Self {
overwrite,
ignore_if_exists,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct RenameFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub overwrite: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_if_exists: Option<bool>,
}
impl RenameFileOptions {
#[must_use]
pub const fn new(overwrite: Option<bool>, ignore_if_exists: Option<bool>) -> Self {
Self {
overwrite,
ignore_if_exists,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DeleteFileOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub recursive: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_if_not_exists: Option<bool>,
}
impl DeleteFileOptions {
#[must_use]
pub const fn new(
recursive: Option<bool>,
ignore_if_not_exists: Option<bool>,
) -> Self {
Self {
recursive,
ignore_if_not_exists,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
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>,
}
impl FileOperationPattern {
#[must_use]
pub const fn new(
glob: String,
matches: Option<FileOperationPatternKind>,
options: Option<FileOperationPatternOptions>,
) -> Self {
Self { glob, matches, options }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceFullDocumentDiagnosticReport {
pub uri: Uri,
pub version: Option<i32>,
#[serde(flatten)]
pub full_document_diagnostic_report: FullDocumentDiagnosticReport,
}
impl WorkspaceFullDocumentDiagnosticReport {
#[must_use]
pub const fn new(
uri: Uri,
version: Option<i32>,
full_document_diagnostic_report: FullDocumentDiagnosticReport,
) -> Self {
Self {
uri,
version,
full_document_diagnostic_report,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceUnchangedDocumentDiagnosticReport {
pub uri: Uri,
pub version: Option<i32>,
#[serde(flatten)]
pub unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
}
impl WorkspaceUnchangedDocumentDiagnosticReport {
#[must_use]
pub const fn new(
uri: Uri,
version: Option<i32>,
unchanged_document_diagnostic_report: UnchangedDocumentDiagnosticReport,
) -> Self {
Self {
uri,
version,
unchanged_document_diagnostic_report,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
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")]
pub execution_summary: Option<ExecutionSummary>,
}
impl NotebookCell {
#[must_use]
pub const fn new(
kind: NotebookCellKind,
document: Uri,
metadata: Option<LspObject>,
execution_summary: Option<ExecutionSummary>,
) -> Self {
Self {
kind,
document,
metadata,
execution_summary,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentFilterWithNotebook {
pub notebook: Notebook,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<Vec<NotebookCellLanguage>>,
}
impl NotebookDocumentFilterWithNotebook {
#[must_use]
pub const fn new(
notebook: Notebook,
cells: Option<Vec<NotebookCellLanguage>>,
) -> Self {
Self { notebook, cells }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentFilterWithCells {
#[serde(skip_serializing_if = "Option::is_none")]
pub notebook: Option<Notebook>,
pub cells: Vec<NotebookCellLanguage>,
}
impl NotebookDocumentFilterWithCells {
#[must_use]
pub const fn new(
notebook: Option<Notebook>,
cells: Vec<NotebookCellLanguage>,
) -> Self {
Self { notebook, cells }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentCellChanges {
#[serde(skip_serializing_if = "Option::is_none")]
pub structure: Option<NotebookDocumentCellChangeStructure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<NotebookCell>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_content: Option<Vec<NotebookDocumentCellContentChanges>>,
}
impl NotebookDocumentCellChanges {
#[must_use]
pub const fn new(
structure: Option<NotebookDocumentCellChangeStructure>,
data: Option<Vec<NotebookCell>>,
text_content: Option<Vec<NotebookDocumentCellContentChanges>>,
) -> Self {
Self {
structure,
data,
text_content,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SelectedCompletionInfo {
pub range: Range,
pub text: String,
}
impl SelectedCompletionInfo {
#[must_use]
pub const fn new(range: Range, text: String) -> Self {
Self { range, text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientInfo {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl ClientInfo {
#[must_use]
pub const fn new(name: String, version: Option<String>) -> Self {
Self { name, version }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace: Option<WorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_document: Option<TextDocumentClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
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<LspAny>,
}
impl ClientCapabilities {
#[must_use]
pub const fn new(
workspace: Option<WorkspaceClientCapabilities>,
text_document: Option<TextDocumentClientCapabilities>,
notebook_document: Option<NotebookDocumentClientCapabilities>,
window: Option<WindowClientCapabilities>,
general: Option<GeneralClientCapabilities>,
experimental: Option<LspAny>,
) -> Self {
Self {
workspace,
text_document,
notebook_document,
window,
general,
experimental,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentSyncOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub open_close: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub change: Option<TextDocumentSyncKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_save: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_save_wait_until: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub save: Option<Save>,
}
impl TextDocumentSyncOptions {
#[must_use]
pub const fn new(
open_close: Option<bool>,
change: Option<TextDocumentSyncKind>,
will_save: Option<bool>,
will_save_wait_until: Option<bool>,
save: Option<Save>,
) -> Self {
Self {
open_close,
change,
will_save,
will_save_wait_until,
save,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_operations: Option<FileOperationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_document_content: Option<TextDocumentContent>,
}
impl WorkspaceOptions {
#[must_use]
pub const fn new(
workspace_folders: Option<WorkspaceFoldersServerCapabilities>,
file_operations: Option<FileOperationOptions>,
text_document_content: Option<TextDocumentContent>,
) -> Self {
Self {
workspace_folders,
file_operations,
text_document_content,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentChangePartial {
pub range: Range,
#[deprecated(note = "use range instead.")]
#[serde(skip_serializing_if = "Option::is_none")]
pub range_length: Option<u32>,
pub text: String,
}
impl TextDocumentContentChangePartial {
#[must_use]
pub const fn new(range: Range, range_length: Option<u32>, text: String) -> Self {
Self { range, range_length, text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentChangeWholeDocument {
pub text: String,
}
impl TextDocumentContentChangeWholeDocument {
#[must_use]
pub const fn new(text: String) -> Self {
Self { text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct CodeDescription {
pub href: Uri,
}
impl CodeDescription {
#[must_use]
pub const fn new(href: Uri) -> Self {
Self { href }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticRelatedInformation {
pub location: Location,
pub message: String,
}
impl DiagnosticRelatedInformation {
#[must_use]
pub const fn new(location: Location, message: String) -> Self {
Self { location, message }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct EditRangeWithInsertReplace {
pub insert: Range,
pub replace: Range,
}
impl EditRangeWithInsertReplace {
#[must_use]
pub const fn new(insert: Range, replace: Range) -> Self {
Self { insert, replace }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ServerCompletionItemOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub label_details_support: Option<bool>,
}
impl ServerCompletionItemOptions {
#[must_use]
pub const fn new(label_details_support: Option<bool>) -> Self {
Self { label_details_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
#[deprecated(note = "use MarkupContent instead.")]
pub struct MarkedStringWithLanguage {
pub language: String,
pub value: String,
}
impl MarkedStringWithLanguage {
#[must_use]
pub const fn new(language: String, value: String) -> Self {
Self { language, value }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct ParameterInformation {
pub label: ParameterInformationLabel,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<Documentation>,
}
impl ParameterInformation {
#[must_use]
pub const fn new(
label: ParameterInformationLabel,
documentation: Option<Documentation>,
) -> Self {
Self { label, documentation }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionKindDocumentation {
pub kind: CodeActionKind,
pub command: Command,
}
impl CodeActionKindDocumentation {
#[must_use]
pub const fn new(kind: CodeActionKind, command: Command) -> Self {
Self { kind, command }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct NotebookCellTextDocumentFilter {
pub notebook: Notebook,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
impl NotebookCellTextDocumentFilter {
#[must_use]
pub const fn new(notebook: Notebook, language: Option<String>) -> Self {
Self { notebook, language }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct FileOperationPatternOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_case: Option<bool>,
}
impl FileOperationPatternOptions {
#[must_use]
pub const fn new(ignore_case: Option<bool>) -> Self {
Self { ignore_case }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ExecutionSummary {
pub execution_order: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub success: Option<bool>,
}
impl ExecutionSummary {
#[must_use]
pub const fn new(execution_order: u32, success: Option<bool>) -> Self {
Self { execution_order, success }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookCellLanguage {
pub language: String,
}
impl NotebookCellLanguage {
#[must_use]
pub const fn new(language: String) -> Self {
Self { language }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentCellChangeStructure {
pub array: NotebookCellArrayChange,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_open: Option<Vec<TextDocumentItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_close: Option<Vec<TextDocumentIdentifier>>,
}
impl NotebookDocumentCellChangeStructure {
#[must_use]
pub const fn new(
array: NotebookCellArrayChange,
did_open: Option<Vec<TextDocumentItem>>,
did_close: Option<Vec<TextDocumentIdentifier>>,
) -> Self {
Self { array, did_open, did_close }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentCellContentChanges {
pub document: VersionedTextDocumentIdentifier,
pub changes: Vec<TextDocumentContentChangeEvent>,
}
impl NotebookDocumentCellContentChanges {
#[must_use]
pub const fn new(
document: VersionedTextDocumentIdentifier,
changes: Vec<TextDocumentContentChangeEvent>,
) -> Self {
Self { document, changes }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub apply_edit: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace_edit: Option<WorkspaceEditClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
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")]
pub execute_command: Option<ExecuteCommandClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub workspace_folders: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub configuration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_lens: Option<CodeLensWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_operations: Option<FileOperationClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_value: Option<InlineValueWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_document_content: Option<TextDocumentContentClientCapabilities>,
}
impl WorkspaceClientCapabilities {
#[must_use]
pub const fn new(
apply_edit: Option<bool>,
workspace_edit: Option<WorkspaceEditClientCapabilities>,
did_change_configuration: Option<DidChangeConfigurationClientCapabilities>,
did_change_watched_files: Option<DidChangeWatchedFilesClientCapabilities>,
symbol: Option<WorkspaceSymbolClientCapabilities>,
execute_command: Option<ExecuteCommandClientCapabilities>,
workspace_folders: Option<bool>,
configuration: Option<bool>,
semantic_tokens: Option<SemanticTokensWorkspaceClientCapabilities>,
code_lens: Option<CodeLensWorkspaceClientCapabilities>,
file_operations: Option<FileOperationClientCapabilities>,
inline_value: Option<InlineValueWorkspaceClientCapabilities>,
inlay_hint: Option<InlayHintWorkspaceClientCapabilities>,
diagnostics: Option<DiagnosticWorkspaceClientCapabilities>,
folding_range: Option<FoldingRangeWorkspaceClientCapabilities>,
text_document_content: Option<TextDocumentContentClientCapabilities>,
) -> Self {
Self {
apply_edit,
workspace_edit,
did_change_configuration,
did_change_watched_files,
symbol,
execute_command,
workspace_folders,
configuration,
semantic_tokens,
code_lens,
file_operations,
inline_value,
inlay_hint,
diagnostics,
folding_range,
text_document_content,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub synchronization: Option<TextDocumentSyncClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<TextDocumentFilterClientCapabilities>,
#[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")]
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")]
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")]
pub document_highlight: Option<DocumentHighlightClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_symbol: Option<DocumentSymbolClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_action: Option<CodeActionClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_lens: Option<CodeLensClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_link: Option<DocumentLinkClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color_provider: Option<DocumentColorClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub formatting: Option<DocumentFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rename: Option<RenameClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folding_range: Option<FoldingRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selection_range: Option<SelectionRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub call_hierarchy: Option<CallHierarchyClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub semantic_tokens: Option<SemanticTokensClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub moniker: Option<MonikerClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub type_hierarchy: Option<TypeHierarchyClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_value: Option<InlineValueClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inlay_hint: Option<InlayHintClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diagnostic: Option<DiagnosticClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_completion: Option<InlineCompletionClientCapabilities>,
}
impl TextDocumentClientCapabilities {
#[must_use]
pub const fn new(
synchronization: Option<TextDocumentSyncClientCapabilities>,
filters: Option<TextDocumentFilterClientCapabilities>,
completion: Option<CompletionClientCapabilities>,
hover: Option<HoverClientCapabilities>,
signature_help: Option<SignatureHelpClientCapabilities>,
declaration: Option<DeclarationClientCapabilities>,
definition: Option<DefinitionClientCapabilities>,
type_definition: Option<TypeDefinitionClientCapabilities>,
implementation: Option<ImplementationClientCapabilities>,
references: Option<ReferenceClientCapabilities>,
document_highlight: Option<DocumentHighlightClientCapabilities>,
document_symbol: Option<DocumentSymbolClientCapabilities>,
code_action: Option<CodeActionClientCapabilities>,
code_lens: Option<CodeLensClientCapabilities>,
document_link: Option<DocumentLinkClientCapabilities>,
color_provider: Option<DocumentColorClientCapabilities>,
formatting: Option<DocumentFormattingClientCapabilities>,
range_formatting: Option<DocumentRangeFormattingClientCapabilities>,
on_type_formatting: Option<DocumentOnTypeFormattingClientCapabilities>,
rename: Option<RenameClientCapabilities>,
folding_range: Option<FoldingRangeClientCapabilities>,
selection_range: Option<SelectionRangeClientCapabilities>,
publish_diagnostics: Option<PublishDiagnosticsClientCapabilities>,
call_hierarchy: Option<CallHierarchyClientCapabilities>,
semantic_tokens: Option<SemanticTokensClientCapabilities>,
linked_editing_range: Option<LinkedEditingRangeClientCapabilities>,
moniker: Option<MonikerClientCapabilities>,
type_hierarchy: Option<TypeHierarchyClientCapabilities>,
inline_value: Option<InlineValueClientCapabilities>,
inlay_hint: Option<InlayHintClientCapabilities>,
diagnostic: Option<DiagnosticClientCapabilities>,
inline_completion: Option<InlineCompletionClientCapabilities>,
) -> Self {
Self {
synchronization,
filters,
completion,
hover,
signature_help,
declaration,
definition,
type_definition,
implementation,
references,
document_highlight,
document_symbol,
code_action,
code_lens,
document_link,
color_provider,
formatting,
range_formatting,
on_type_formatting,
rename,
folding_range,
selection_range,
publish_diagnostics,
call_hierarchy,
semantic_tokens,
linked_editing_range,
moniker,
type_hierarchy,
inline_value,
inlay_hint,
diagnostic,
inline_completion,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentClientCapabilities {
pub synchronization: NotebookDocumentSyncClientCapabilities,
}
impl NotebookDocumentClientCapabilities {
#[must_use]
pub const fn new(synchronization: NotebookDocumentSyncClientCapabilities) -> Self {
Self { synchronization }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct WindowClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub work_done_progress: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub show_message: Option<ShowMessageRequestClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub show_document: Option<ShowDocumentClientCapabilities>,
}
impl WindowClientCapabilities {
#[must_use]
pub const fn new(
work_done_progress: Option<bool>,
show_message: Option<ShowMessageRequestClientCapabilities>,
show_document: Option<ShowDocumentClientCapabilities>,
) -> Self {
Self {
work_done_progress,
show_message,
show_document,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct GeneralClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub stale_request_support: Option<StaleRequestSupportOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub regular_expressions: Option<RegularExpressionsClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub markdown: Option<MarkdownClientCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position_encodings: Option<Vec<PositionEncodingKind>>,
}
impl GeneralClientCapabilities {
#[must_use]
pub const fn new(
stale_request_support: Option<StaleRequestSupportOptions>,
regular_expressions: Option<RegularExpressionsClientCapabilities>,
markdown: Option<MarkdownClientCapabilities>,
position_encodings: Option<Vec<PositionEncodingKind>>,
) -> Self {
Self {
stale_request_support,
regular_expressions,
markdown,
position_encodings,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceFoldersServerCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub supported: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub change_notifications: Option<ChangeNotifications>,
}
impl WorkspaceFoldersServerCapabilities {
#[must_use]
pub const fn new(
supported: Option<bool>,
change_notifications: Option<ChangeNotifications>,
) -> Self {
Self {
supported,
change_notifications,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileOperationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub did_create: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_create: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_rename: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_rename: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_delete: Option<FileOperationRegistrationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_delete: Option<FileOperationRegistrationOptions>,
}
impl FileOperationOptions {
#[must_use]
pub const fn new(
did_create: Option<FileOperationRegistrationOptions>,
will_create: Option<FileOperationRegistrationOptions>,
did_rename: Option<FileOperationRegistrationOptions>,
will_rename: Option<FileOperationRegistrationOptions>,
did_delete: Option<FileOperationRegistrationOptions>,
will_delete: Option<FileOperationRegistrationOptions>,
) -> Self {
Self {
did_create,
will_create,
did_rename,
will_rename,
did_delete,
will_delete,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct RelativePattern {
pub base_uri: BaseUri,
pub pattern: Pattern,
}
impl RelativePattern {
#[must_use]
pub const fn new(base_uri: BaseUri, pattern: Pattern) -> Self {
Self { base_uri, pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentFilterLanguage {
pub language: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pattern: Option<GlobPattern>,
}
impl TextDocumentFilterLanguage {
#[must_use]
pub const fn new(
language: String,
scheme: Option<String>,
pattern: Option<GlobPattern>,
) -> Self {
Self { language, scheme, pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentFilterScheme {
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
pub scheme: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub pattern: Option<GlobPattern>,
}
impl TextDocumentFilterScheme {
#[must_use]
pub const fn new(
language: Option<String>,
scheme: String,
pattern: Option<GlobPattern>,
) -> Self {
Self { language, scheme, pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentFilterPattern {
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
pub pattern: GlobPattern,
}
impl TextDocumentFilterPattern {
#[must_use]
pub const fn new(
language: Option<String>,
scheme: Option<String>,
pattern: GlobPattern,
) -> Self {
Self { language, scheme, pattern }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentFilterNotebookType {
pub notebook_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pattern: Option<GlobPattern>,
}
impl NotebookDocumentFilterNotebookType {
#[must_use]
pub const fn new(
notebook_type: String,
scheme: Option<String>,
pattern: Option<GlobPattern>,
) -> Self {
Self {
notebook_type,
scheme,
pattern,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentFilterScheme {
#[serde(skip_serializing_if = "Option::is_none")]
pub notebook_type: Option<String>,
pub scheme: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub pattern: Option<GlobPattern>,
}
impl NotebookDocumentFilterScheme {
#[must_use]
pub const fn new(
notebook_type: Option<String>,
scheme: String,
pattern: Option<GlobPattern>,
) -> Self {
Self {
notebook_type,
scheme,
pattern,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentFilterPattern {
#[serde(skip_serializing_if = "Option::is_none")]
pub notebook_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheme: Option<String>,
pub pattern: GlobPattern,
}
impl NotebookDocumentFilterPattern {
#[must_use]
pub const fn new(
notebook_type: Option<String>,
scheme: Option<String>,
pattern: GlobPattern,
) -> Self {
Self {
notebook_type,
scheme,
pattern,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct NotebookCellArrayChange {
pub start: u32,
pub delete_count: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub cells: Option<Vec<NotebookCell>>,
}
impl NotebookCellArrayChange {
#[must_use]
pub const fn new(
start: u32,
delete_count: u32,
cells: Option<Vec<NotebookCell>>,
) -> Self {
Self { start, delete_count, cells }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceEditClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub document_changes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_operations: Option<Vec<ResourceOperationKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_handling: Option<FailureHandlingKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub normalizes_line_endings: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub change_annotation_support: Option<ChangeAnnotationsSupportOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub snippet_edit_support: Option<bool>,
}
impl WorkspaceEditClientCapabilities {
#[must_use]
pub const fn new(
document_changes: Option<bool>,
resource_operations: Option<Vec<ResourceOperationKind>>,
failure_handling: Option<FailureHandlingKind>,
normalizes_line_endings: Option<bool>,
change_annotation_support: Option<ChangeAnnotationsSupportOptions>,
metadata_support: Option<bool>,
snippet_edit_support: Option<bool>,
) -> Self {
Self {
document_changes,
resource_operations,
failure_handling,
normalizes_line_endings,
change_annotation_support,
metadata_support,
snippet_edit_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeConfigurationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl DidChangeConfigurationClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DidChangeWatchedFilesClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub relative_pattern_support: Option<bool>,
}
impl DidChangeWatchedFilesClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
relative_pattern_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
relative_pattern_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct WorkspaceSymbolClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol_kind: Option<ClientSymbolKindOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_support: Option<ClientSymbolTagOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_support: Option<ClientSymbolResolveOptions>,
}
impl WorkspaceSymbolClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
symbol_kind: Option<ClientSymbolKindOptions>,
tag_support: Option<ClientSymbolTagOptions>,
resolve_support: Option<ClientSymbolResolveOptions>,
) -> Self {
Self {
dynamic_registration,
symbol_kind,
tag_support,
resolve_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteCommandClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl ExecuteCommandClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl SemanticTokensWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CodeLensWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl CodeLensWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct FileOperationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_create: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_create: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_rename: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_rename: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_delete: Option<bool>,
}
impl FileOperationClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
did_create: Option<bool>,
will_create: Option<bool>,
did_rename: Option<bool>,
will_rename: Option<bool>,
did_delete: Option<bool>,
will_delete: Option<bool>,
) -> Self {
Self {
dynamic_registration,
did_create,
will_create,
did_rename,
will_rename,
did_delete,
will_delete,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl InlineValueWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl InlayHintWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl DiagnosticWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct FoldingRangeWorkspaceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub refresh_support: Option<bool>,
}
impl FoldingRangeWorkspaceClientCapabilities {
#[must_use]
pub const fn new(refresh_support: Option<bool>) -> Self {
Self { refresh_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentContentClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl TextDocumentContentClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentSyncClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_save: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub will_save_wait_until: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub did_save: Option<bool>,
}
impl TextDocumentSyncClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
will_save: Option<bool>,
will_save_wait_until: Option<bool>,
did_save: Option<bool>,
) -> Self {
Self {
dynamic_registration,
will_save,
will_save_wait_until,
did_save,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TextDocumentFilterClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub relative_pattern_support: Option<bool>,
}
impl TextDocumentFilterClientCapabilities {
#[must_use]
pub const fn new(relative_pattern_support: Option<bool>) -> Self {
Self { relative_pattern_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_item: Option<ClientCompletionItemOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_item_kind: Option<ClientCompletionItemOptionsKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_mode: Option<InsertTextMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_list: Option<CompletionListCapabilities>,
}
impl CompletionClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
completion_item: Option<ClientCompletionItemOptions>,
completion_item_kind: Option<ClientCompletionItemOptionsKind>,
insert_text_mode: Option<InsertTextMode>,
context_support: Option<bool>,
completion_list: Option<CompletionListCapabilities>,
) -> Self {
Self {
dynamic_registration,
completion_item,
completion_item_kind,
insert_text_mode,
context_support,
completion_list,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct HoverClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content_format: Option<Vec<MarkupKind>>,
}
impl HoverClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
content_format: Option<Vec<MarkupKind>>,
) -> Self {
Self {
dynamic_registration,
content_format,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct SignatureHelpClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signature_information: Option<ClientSignatureInformationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context_support: Option<bool>,
}
impl SignatureHelpClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
signature_information: Option<ClientSignatureInformationOptions>,
context_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
signature_information,
context_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DeclarationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub link_support: Option<bool>,
}
impl DeclarationClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
link_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
link_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DefinitionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub link_support: Option<bool>,
}
impl DefinitionClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
link_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
link_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TypeDefinitionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub link_support: Option<bool>,
}
impl TypeDefinitionClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
link_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
link_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ImplementationClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub link_support: Option<bool>,
}
impl ImplementationClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
link_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
link_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl ReferenceClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentHighlightClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl DocumentHighlightClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSymbolClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol_kind: Option<ClientSymbolKindOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hierarchical_document_symbol_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_support: Option<ClientSymbolTagOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub label_support: Option<bool>,
}
impl DocumentSymbolClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
symbol_kind: Option<ClientSymbolKindOptions>,
hierarchical_document_symbol_support: Option<bool>,
tag_support: Option<ClientSymbolTagOptions>,
label_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
symbol_kind,
hierarchical_document_symbol_support,
tag_support,
label_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_action_literal_support: Option<ClientCodeActionLiteralOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_preferred_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disabled_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_support: Option<ClientCodeActionResolveOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub honors_change_annotations: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_support: Option<CodeActionTagOptions>,
}
impl CodeActionClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
code_action_literal_support: Option<ClientCodeActionLiteralOptions>,
is_preferred_support: Option<bool>,
disabled_support: Option<bool>,
data_support: Option<bool>,
resolve_support: Option<ClientCodeActionResolveOptions>,
honors_change_annotations: Option<bool>,
documentation_support: Option<bool>,
tag_support: Option<CodeActionTagOptions>,
) -> Self {
Self {
dynamic_registration,
code_action_literal_support,
is_preferred_support,
disabled_support,
data_support,
resolve_support,
honors_change_annotations,
documentation_support,
tag_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeLensClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_support: Option<ClientCodeLensResolveOptions>,
}
impl CodeLensClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
resolve_support: Option<ClientCodeLensResolveOptions>,
) -> Self {
Self {
dynamic_registration,
resolve_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentLinkClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip_support: Option<bool>,
}
impl DocumentLinkClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
tooltip_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
tooltip_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentColorClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl DocumentColorClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl DocumentFormattingClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentRangeFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ranges_support: Option<bool>,
}
impl DocumentRangeFormattingClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
ranges_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
ranges_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct DocumentOnTypeFormattingClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl DocumentOnTypeFormattingClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct RenameClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prepare_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
#[serde(skip_serializing_if = "Option::is_none")]
pub honors_change_annotations: Option<bool>,
}
impl RenameClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
prepare_support: Option<bool>,
prepare_support_default_behavior: Option<PrepareSupportDefaultBehavior>,
honors_change_annotations: Option<bool>,
) -> Self {
Self {
dynamic_registration,
prepare_support,
prepare_support_default_behavior,
honors_change_annotations,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct FoldingRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub range_limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub line_folding_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folding_range_kind: Option<ClientFoldingRangeKindOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folding_range: Option<ClientFoldingRangeOptions>,
}
impl FoldingRangeClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
range_limit: Option<u32>,
line_folding_only: Option<bool>,
folding_range_kind: Option<ClientFoldingRangeKindOptions>,
folding_range: Option<ClientFoldingRangeOptions>,
) -> Self {
Self {
dynamic_registration,
range_limit,
line_folding_only,
folding_range_kind,
folding_range,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct SelectionRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl SelectionRangeClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct PublishDiagnosticsClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub version_support: Option<bool>,
#[serde(flatten)]
pub diagnostics_capabilities: DiagnosticsCapabilities,
}
impl PublishDiagnosticsClientCapabilities {
#[must_use]
pub const fn new(
version_support: Option<bool>,
diagnostics_capabilities: DiagnosticsCapabilities,
) -> Self {
Self {
version_support,
diagnostics_capabilities,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct CallHierarchyClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl CallHierarchyClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct SemanticTokensClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
pub requests: ClientSemanticTokensRequestOptions,
pub token_types: Vec<String>,
pub token_modifiers: Vec<String>,
pub formats: Vec<TokenFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub overlapping_token_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub multiline_token_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub server_cancel_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub augments_syntax_tokens: Option<bool>,
}
impl SemanticTokensClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
requests: ClientSemanticTokensRequestOptions,
token_types: Vec<String>,
token_modifiers: Vec<String>,
formats: Vec<TokenFormat>,
overlapping_token_support: Option<bool>,
multiline_token_support: Option<bool>,
server_cancel_support: Option<bool>,
augments_syntax_tokens: Option<bool>,
) -> Self {
Self {
dynamic_registration,
requests,
token_types,
token_modifiers,
formats,
overlapping_token_support,
multiline_token_support,
server_cancel_support,
augments_syntax_tokens,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct LinkedEditingRangeClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl LinkedEditingRangeClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct MonikerClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl MonikerClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct TypeHierarchyClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl TypeHierarchyClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineValueClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl InlineValueClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlayHintClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_support: Option<ClientInlayHintResolveOptions>,
}
impl InlayHintClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
resolve_support: Option<ClientInlayHintResolveOptions>,
) -> Self {
Self {
dynamic_registration,
resolve_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub related_document_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub markup_message_support: Option<bool>,
#[serde(flatten)]
pub diagnostics_capabilities: DiagnosticsCapabilities,
}
impl DiagnosticClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
related_document_support: Option<bool>,
markup_message_support: Option<bool>,
diagnostics_capabilities: DiagnosticsCapabilities,
) -> Self {
Self {
dynamic_registration,
related_document_support,
markup_message_support,
diagnostics_capabilities,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct InlineCompletionClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
}
impl InlineCompletionClientCapabilities {
#[must_use]
pub const fn new(dynamic_registration: Option<bool>) -> Self {
Self { dynamic_registration }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct NotebookDocumentSyncClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_registration: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution_summary_support: Option<bool>,
}
impl NotebookDocumentSyncClientCapabilities {
#[must_use]
pub const fn new(
dynamic_registration: Option<bool>,
execution_summary_support: Option<bool>,
) -> Self {
Self {
dynamic_registration,
execution_summary_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ShowMessageRequestClientCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub message_action_item: Option<ClientShowMessageActionItemOptions>,
}
impl ShowMessageRequestClientCapabilities {
#[must_use]
pub const fn new(
message_action_item: Option<ClientShowMessageActionItemOptions>,
) -> Self {
Self { message_action_item }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ShowDocumentClientCapabilities {
pub support: bool,
}
impl ShowDocumentClientCapabilities {
#[must_use]
pub const fn new(support: bool) -> Self {
Self { support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct StaleRequestSupportOptions {
pub cancel: bool,
pub retry_on_content_modified: Vec<String>,
}
impl StaleRequestSupportOptions {
#[must_use]
pub const fn new(cancel: bool, retry_on_content_modified: Vec<String>) -> Self {
Self {
cancel,
retry_on_content_modified,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct RegularExpressionsClientCapabilities {
pub engine: RegularExpressionEngineKind,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl RegularExpressionsClientCapabilities {
#[must_use]
pub const fn new(
engine: RegularExpressionEngineKind,
version: Option<String>,
) -> Self {
Self { engine, version }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct MarkdownClientCapabilities {
pub parser: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_tags: Option<Vec<String>>,
}
impl MarkdownClientCapabilities {
#[must_use]
pub const fn new(
parser: String,
version: Option<String>,
allowed_tags: Option<Vec<String>>,
) -> Self {
Self {
parser,
version,
allowed_tags,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ChangeAnnotationsSupportOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub groups_on_label: Option<bool>,
}
impl ChangeAnnotationsSupportOptions {
#[must_use]
pub const fn new(groups_on_label: Option<bool>) -> Self {
Self { groups_on_label }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientSymbolKindOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub value_set: Option<Vec<SymbolKind>>,
}
impl ClientSymbolKindOptions {
#[must_use]
pub const fn new(value_set: Option<Vec<SymbolKind>>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientSymbolTagOptions {
pub value_set: Vec<SymbolTag>,
}
impl ClientSymbolTagOptions {
#[must_use]
pub const fn new(value_set: Vec<SymbolTag>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientSymbolResolveOptions {
pub properties: Vec<String>,
}
impl ClientSymbolResolveOptions {
#[must_use]
pub const fn new(properties: Vec<String>) -> Self {
Self { properties }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCompletionItemOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub snippet_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub commit_characters_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation_format: Option<Vec<MarkupKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preselect_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_support: Option<CompletionItemTagOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_replace_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolve_support: Option<ClientCompletionItemResolveOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub insert_text_mode_support: Option<ClientCompletionItemInsertTextModeOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub label_details_support: Option<bool>,
}
impl ClientCompletionItemOptions {
#[must_use]
pub const fn new(
snippet_support: Option<bool>,
commit_characters_support: Option<bool>,
documentation_format: Option<Vec<MarkupKind>>,
deprecated_support: Option<bool>,
preselect_support: Option<bool>,
tag_support: Option<CompletionItemTagOptions>,
insert_replace_support: Option<bool>,
resolve_support: Option<ClientCompletionItemResolveOptions>,
insert_text_mode_support: Option<ClientCompletionItemInsertTextModeOptions>,
label_details_support: Option<bool>,
) -> Self {
Self {
snippet_support,
commit_characters_support,
documentation_format,
deprecated_support,
preselect_support,
tag_support,
insert_replace_support,
resolve_support,
insert_text_mode_support,
label_details_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCompletionItemOptionsKind {
#[serde(skip_serializing_if = "Option::is_none")]
pub value_set: Option<Vec<CompletionItemKind>>,
}
impl ClientCompletionItemOptionsKind {
#[must_use]
pub const fn new(value_set: Option<Vec<CompletionItemKind>>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionListCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub item_defaults: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub apply_kind_support: Option<bool>,
}
impl CompletionListCapabilities {
#[must_use]
pub const fn new(
item_defaults: Option<Vec<String>>,
apply_kind_support: Option<bool>,
) -> Self {
Self {
item_defaults,
apply_kind_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientSignatureInformationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation_format: Option<Vec<MarkupKind>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_information: Option<ClientSignatureParameterInformationOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_parameter_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub no_active_parameter_support: Option<bool>,
}
impl ClientSignatureInformationOptions {
#[must_use]
pub const fn new(
documentation_format: Option<Vec<MarkupKind>>,
parameter_information: Option<ClientSignatureParameterInformationOptions>,
active_parameter_support: Option<bool>,
no_active_parameter_support: Option<bool>,
) -> Self {
Self {
documentation_format,
parameter_information,
active_parameter_support,
no_active_parameter_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCodeActionLiteralOptions {
pub code_action_kind: ClientCodeActionKindOptions,
}
impl ClientCodeActionLiteralOptions {
#[must_use]
pub const fn new(code_action_kind: ClientCodeActionKindOptions) -> Self {
Self { code_action_kind }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCodeActionResolveOptions {
pub properties: Vec<String>,
}
impl ClientCodeActionResolveOptions {
#[must_use]
pub const fn new(properties: Vec<String>) -> Self {
Self { properties }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CodeActionTagOptions {
pub value_set: Vec<CodeActionTag>,
}
impl CodeActionTagOptions {
#[must_use]
pub const fn new(value_set: Vec<CodeActionTag>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCodeLensResolveOptions {
pub properties: Vec<String>,
}
impl ClientCodeLensResolveOptions {
#[must_use]
pub const fn new(properties: Vec<String>) -> Self {
Self { properties }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientFoldingRangeKindOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub value_set: Option<Vec<FoldingRangeKind>>,
}
impl ClientFoldingRangeKindOptions {
#[must_use]
pub const fn new(value_set: Option<Vec<FoldingRangeKind>>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ClientFoldingRangeOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub collapsed_text: Option<bool>,
}
impl ClientFoldingRangeOptions {
#[must_use]
pub const fn new(collapsed_text: Option<bool>) -> Self {
Self { collapsed_text }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct DiagnosticsCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub related_information: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_support: Option<ClientDiagnosticsTagOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code_description_support: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data_support: Option<bool>,
}
impl DiagnosticsCapabilities {
#[must_use]
pub const fn new(
related_information: Option<bool>,
tag_support: Option<ClientDiagnosticsTagOptions>,
code_description_support: Option<bool>,
data_support: Option<bool>,
) -> Self {
Self {
related_information,
tag_support,
code_description_support,
data_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientSemanticTokensRequestOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<ClientSemanticTokensRequestOptionsRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full: Option<ClientSemanticTokensRequestOptionsFull>,
}
impl ClientSemanticTokensRequestOptions {
#[must_use]
pub const fn new(
range: Option<ClientSemanticTokensRequestOptionsRange>,
full: Option<ClientSemanticTokensRequestOptionsFull>,
) -> Self {
Self { range, full }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientInlayHintResolveOptions {
pub properties: Vec<String>,
}
impl ClientInlayHintResolveOptions {
#[must_use]
pub const fn new(properties: Vec<String>) -> Self {
Self { properties }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ClientShowMessageActionItemOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_properties_support: Option<bool>,
}
impl ClientShowMessageActionItemOptions {
#[must_use]
pub const fn new(additional_properties_support: Option<bool>) -> Self {
Self {
additional_properties_support,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItemTagOptions {
pub value_set: Vec<CompletionItemTag>,
}
impl CompletionItemTagOptions {
#[must_use]
pub const fn new(value_set: Vec<CompletionItemTag>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCompletionItemResolveOptions {
pub properties: Vec<String>,
}
impl ClientCompletionItemResolveOptions {
#[must_use]
pub const fn new(properties: Vec<String>) -> Self {
Self { properties }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCompletionItemInsertTextModeOptions {
pub value_set: Vec<InsertTextMode>,
}
impl ClientCompletionItemInsertTextModeOptions {
#[must_use]
pub const fn new(value_set: Vec<InsertTextMode>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ClientSignatureParameterInformationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub label_offset_support: Option<bool>,
}
impl ClientSignatureParameterInformationOptions {
#[must_use]
pub const fn new(label_offset_support: Option<bool>) -> Self {
Self { label_offset_support }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCodeActionKindOptions {
pub value_set: Vec<CodeActionKind>,
}
impl ClientCodeActionKindOptions {
#[must_use]
pub const fn new(value_set: Vec<CodeActionKind>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientDiagnosticsTagOptions {
pub value_set: Vec<DiagnosticTag>,
}
impl ClientDiagnosticsTagOptions {
#[must_use]
pub const fn new(value_set: Vec<DiagnosticTag>) -> Self {
Self { value_set }
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default, Copy)]
#[serde(rename_all = "camelCase")]
pub struct ClientSemanticTokensRequestFullDelta {
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}
impl ClientSemanticTokensRequestFullDelta {
#[must_use]
pub const fn new(delta: Option<bool>) -> Self {
Self { delta }
}
}
impl Default for Message {
fn default() -> Self {
Message::String(String::default())
}
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Default, Hash)]
pub struct SemanticToken {
pub delta_line: u32,
pub delta_start: u32,
pub length: u32,
pub token_type: u32,
pub token_modifiers_bitset: u32,
}
impl SemanticToken {
fn deserialize_tokens<'de, D>(
deserializer: D,
) -> Result<Vec<SemanticToken>, D::Error>
where
D: serde::Deserializer<'de>,
{
let data = Vec::<u32>::deserialize(deserializer)?;
let chunks = data.chunks_exact(5);
if !chunks.remainder().is_empty() {
return Result::Err(serde::de::Error::custom("Length is not divisible by 5"));
}
Result::Ok(
chunks
.map(|chunk| Self {
delta_line: chunk[0],
delta_start: chunk[1],
length: chunk[2],
token_type: chunk[3],
token_modifiers_bitset: chunk[4],
})
.collect(),
)
}
fn serialize_tokens<S>(
tokens: &[SemanticToken],
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut seq = serializer.serialize_seq(Some(tokens.len() * 5))?;
for token in tokens {
seq.serialize_element(&token.delta_line)?;
seq.serialize_element(&token.delta_start)?;
seq.serialize_element(&token.length)?;
seq.serialize_element(&token.token_type)?;
seq.serialize_element(&token.token_modifiers_bitset)?;
}
seq.end()
}
fn deserialize_optional_tokens<'de, D>(
deserializer: D,
) -> Result<Option<Vec<SemanticToken>>, D::Error>
where
D: serde::Deserializer<'de>,
{
#[derive(Deserialize)]
#[serde(transparent)]
struct Wrapper {
#[serde(deserialize_with = "SemanticToken::deserialize_tokens")]
tokens: Vec<SemanticToken>,
}
Ok(Option::<Wrapper>::deserialize(deserializer)?.map(|wrapper| wrapper.tokens))
}
fn serialize_optional_tokens<S>(
data: &Option<Vec<SemanticToken>>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
#[derive(Serialize)]
#[serde(transparent)]
struct Wrapper {
#[serde(serialize_with = "SemanticToken::serialize_tokens")]
tokens: Vec<SemanticToken>,
}
let opt = data.as_ref().map(|t| Wrapper { tokens: t.clone() });
opt.serialize(serializer)
}
}