#![allow(
deprecated,
clippy::doc_lazy_continuation,
unreachable_patterns,
clippy::large_enum_variant,
clippy::too_many_arguments,
rustdoc::invalid_codeblock_attributes
)]
#![cfg_attr(any(), rustfmt::skip)]
use serde::{
de::DeserializeOwned, Deserialize, Deserializer, ser::SerializeSeq as _, Serialize,
};
use std::{borrow::Cow, collections::HashMap, fmt};
fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>
where
T: Deserialize<'de>,
D: Deserializer<'de>,
{
T::deserialize(deserializer).map(Some)
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
pub enum MessageDirection {
ClientToServer,
ServerToClient,
Both,
}
pub trait Notification {
type Params: DeserializeOwned + Serialize + Send + Sync;
const METHOD: LspNotificationMethod;
const MESSAGE_DIRECTION: MessageDirection;
}
pub trait Request {
type Params: DeserializeOwned + Serialize + Send + Sync;
type Result: DeserializeOwned + Serialize + Send + Sync;
const METHOD: LspRequestMethod;
const MESSAGE_DIRECTION: MessageDirection;
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Uri(pub String);
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl From<String> for Uri {
fn from(s: String) -> Self {
Self(s)
}
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl From<&str> for Uri {
fn from(s: &str) -> Self {
Self(s.into())
}
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl From<Box<str>> for Uri {
fn from(s: Box<str>) -> Self {
Self(s.into())
}
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl From<Cow<'_, str>> for Uri {
fn from(s: Cow<'_, str>) -> Self {
Self(s.into())
}
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl AsRef<str> for Uri {
fn as_ref(&self) -> &str {
&self.0
}
}
#[cfg(all(not(feature = "url"), not(feature = "fluent-uri")))]
impl fmt::Display for Uri {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}
#[cfg(feature = "url")]
pub type Uri = url::Url;
#[cfg(all(feature = "fluent-uri", not(feature = "url")))]
pub type Uri = fluent_uri::Uri<String>;
#[cfg(all(feature = "url", feature = "fluent-uri"))]
compile_error!(
"Features 'url' and 'fluent-uri' are mutually exclusive and cannot be enabled together."
);
#[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| SemanticToken {
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.iter() {
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.to_vec() });
opt.serialize(serializer)
}
}
#[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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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(WorkDoneProgressBegin {
title: shadow.title,
cancellable: shadow.cancellable,
message: shadow.message,
percentage: shadow.percentage,
})
}
}
impl From<WorkDoneProgressBegin> for ShadowWorkDoneProgressBegin {
fn from(original: WorkDoneProgressBegin) -> Self {
ShadowWorkDoneProgressBegin {
title: original.title,
cancellable: original.cancellable,
message: original.message,
percentage: original.percentage,
kind: "begin".to_string(),
}
}
}
impl WorkDoneProgressBegin {
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(WorkDoneProgressReport {
cancellable: shadow.cancellable,
message: shadow.message,
percentage: shadow.percentage,
})
}
}
impl From<WorkDoneProgressReport> for ShadowWorkDoneProgressReport {
fn from(original: WorkDoneProgressReport) -> Self {
ShadowWorkDoneProgressReport {
cancellable: original.cancellable,
message: original.message,
percentage: original.percentage,
kind: "report".to_string(),
}
}
}
impl WorkDoneProgressReport {
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(WorkDoneProgressEnd {
message: shadow.message,
})
}
}
impl From<WorkDoneProgressEnd> for ShadowWorkDoneProgressEnd {
fn from(original: WorkDoneProgressEnd) -> Self {
ShadowWorkDoneProgressEnd {
message: original.message,
kind: "end".to_string(),
}
}
}
impl WorkDoneProgressEnd {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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(CreateFile {
uri: shadow.uri,
options: shadow.options,
annotation_id: shadow.annotation_id,
})
}
}
impl From<CreateFile> for ShadowCreateFile {
fn from(original: CreateFile) -> Self {
ShadowCreateFile {
uri: original.uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "create".to_string(),
}
}
}
impl CreateFile {
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(RenameFile {
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 {
ShadowRenameFile {
old_uri: original.old_uri,
new_uri: original.new_uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "rename".to_string(),
}
}
}
impl RenameFile {
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(DeleteFile {
uri: shadow.uri,
options: shadow.options,
annotation_id: shadow.annotation_id,
})
}
}
impl From<DeleteFile> for ShadowDeleteFile {
fn from(original: DeleteFile) -> Self {
ShadowDeleteFile {
uri: original.uri,
options: original.options,
annotation_id: original.annotation_id,
kind: "delete".to_string(),
}
}
}
impl DeleteFile {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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(FullDocumentDiagnosticReport {
result_id: shadow.result_id,
items: shadow.items,
})
}
}
impl From<FullDocumentDiagnosticReport> for ShadowFullDocumentDiagnosticReport {
fn from(original: FullDocumentDiagnosticReport) -> Self {
ShadowFullDocumentDiagnosticReport {
result_id: original.result_id,
items: original.items,
kind: "full".to_string(),
}
}
}
impl FullDocumentDiagnosticReport {
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(UnchangedDocumentDiagnosticReport {
result_id: shadow.result_id,
})
}
}
impl From<UnchangedDocumentDiagnosticReport>
for ShadowUnchangedDocumentDiagnosticReport {
fn from(original: UnchangedDocumentDiagnosticReport) -> Self {
ShadowUnchangedDocumentDiagnosticReport {
result_id: original.result_id,
kind: "unchanged".to_string(),
}
}
}
impl UnchangedDocumentDiagnosticReport {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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(StringValue { value: shadow.value })
}
}
impl From<StringValue> for ShadowStringValue {
fn from(original: StringValue) -> Self {
ShadowStringValue {
value: original.value,
kind: "snippet".to_string(),
}
}
}
impl StringValue {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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: String,
#[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 {
pub const fn new(
range: Range,
severity: Option<DiagnosticSeverity>,
code: Option<Code>,
code_description: Option<CodeDescription>,
source: Option<String>,
message: String,
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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(flatten)]
pub diagnostics_capabilities: DiagnosticsCapabilities,
}
impl DiagnosticClientCapabilities {
pub const fn new(
dynamic_registration: Option<bool>,
related_document_support: Option<bool>,
diagnostics_capabilities: DiagnosticsCapabilities,
) -> Self {
Self {
dynamic_registration,
related_document_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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
pub const fn new(delta: Option<bool>) -> Self {
Self { delta }
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum SemanticTokenTypes {
Namespace,
Type,
Class,
Enum,
Interface,
Struct,
TypeParameter,
Parameter,
Variable,
Property,
EnumMember,
Event,
Function,
Method,
Macro,
Keyword,
Modifier,
Comment,
String,
Number,
Regexp,
Operator,
Decorator,
Label,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<SemanticTokenTypes> for String {
fn from(e: SemanticTokenTypes) -> Self {
match e {
SemanticTokenTypes::Namespace => "namespace".to_string(),
SemanticTokenTypes::Type => "type".to_string(),
SemanticTokenTypes::Class => "class".to_string(),
SemanticTokenTypes::Enum => "enum".to_string(),
SemanticTokenTypes::Interface => "interface".to_string(),
SemanticTokenTypes::Struct => "struct".to_string(),
SemanticTokenTypes::TypeParameter => "typeParameter".to_string(),
SemanticTokenTypes::Parameter => "parameter".to_string(),
SemanticTokenTypes::Variable => "variable".to_string(),
SemanticTokenTypes::Property => "property".to_string(),
SemanticTokenTypes::EnumMember => "enumMember".to_string(),
SemanticTokenTypes::Event => "event".to_string(),
SemanticTokenTypes::Function => "function".to_string(),
SemanticTokenTypes::Method => "method".to_string(),
SemanticTokenTypes::Macro => "macro".to_string(),
SemanticTokenTypes::Keyword => "keyword".to_string(),
SemanticTokenTypes::Modifier => "modifier".to_string(),
SemanticTokenTypes::Comment => "comment".to_string(),
SemanticTokenTypes::String => "string".to_string(),
SemanticTokenTypes::Number => "number".to_string(),
SemanticTokenTypes::Regexp => "regexp".to_string(),
SemanticTokenTypes::Operator => "operator".to_string(),
SemanticTokenTypes::Decorator => "decorator".to_string(),
SemanticTokenTypes::Label => "label".to_string(),
SemanticTokenTypes::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for SemanticTokenTypes {
fn from(v: String) -> Self {
match v.as_str() {
"namespace" => SemanticTokenTypes::Namespace,
"type" => SemanticTokenTypes::Type,
"class" => SemanticTokenTypes::Class,
"enum" => SemanticTokenTypes::Enum,
"interface" => SemanticTokenTypes::Interface,
"struct" => SemanticTokenTypes::Struct,
"typeParameter" => SemanticTokenTypes::TypeParameter,
"parameter" => SemanticTokenTypes::Parameter,
"variable" => SemanticTokenTypes::Variable,
"property" => SemanticTokenTypes::Property,
"enumMember" => SemanticTokenTypes::EnumMember,
"event" => SemanticTokenTypes::Event,
"function" => SemanticTokenTypes::Function,
"method" => SemanticTokenTypes::Method,
"macro" => SemanticTokenTypes::Macro,
"keyword" => SemanticTokenTypes::Keyword,
"modifier" => SemanticTokenTypes::Modifier,
"comment" => SemanticTokenTypes::Comment,
"string" => SemanticTokenTypes::String,
"number" => SemanticTokenTypes::Number,
"regexp" => SemanticTokenTypes::Regexp,
"operator" => SemanticTokenTypes::Operator,
"decorator" => SemanticTokenTypes::Decorator,
"label" => SemanticTokenTypes::Label,
_ => SemanticTokenTypes::Custom(Cow::Owned(v)),
}
}
}
impl SemanticTokenTypes {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for SemanticTokenTypes {
fn from(s: &'static str) -> Self {
match s {
"namespace" => SemanticTokenTypes::Namespace,
"type" => SemanticTokenTypes::Type,
"class" => SemanticTokenTypes::Class,
"enum" => SemanticTokenTypes::Enum,
"interface" => SemanticTokenTypes::Interface,
"struct" => SemanticTokenTypes::Struct,
"typeParameter" => SemanticTokenTypes::TypeParameter,
"parameter" => SemanticTokenTypes::Parameter,
"variable" => SemanticTokenTypes::Variable,
"property" => SemanticTokenTypes::Property,
"enumMember" => SemanticTokenTypes::EnumMember,
"event" => SemanticTokenTypes::Event,
"function" => SemanticTokenTypes::Function,
"method" => SemanticTokenTypes::Method,
"macro" => SemanticTokenTypes::Macro,
"keyword" => SemanticTokenTypes::Keyword,
"modifier" => SemanticTokenTypes::Modifier,
"comment" => SemanticTokenTypes::Comment,
"string" => SemanticTokenTypes::String,
"number" => SemanticTokenTypes::Number,
"regexp" => SemanticTokenTypes::Regexp,
"operator" => SemanticTokenTypes::Operator,
"decorator" => SemanticTokenTypes::Decorator,
"label" => SemanticTokenTypes::Label,
_ => SemanticTokenTypes::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for SemanticTokenTypes {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl SemanticTokenTypes {
pub fn as_str(&self) -> &str {
match self {
SemanticTokenTypes::Namespace => "namespace",
SemanticTokenTypes::Type => "type",
SemanticTokenTypes::Class => "class",
SemanticTokenTypes::Enum => "enum",
SemanticTokenTypes::Interface => "interface",
SemanticTokenTypes::Struct => "struct",
SemanticTokenTypes::TypeParameter => "typeParameter",
SemanticTokenTypes::Parameter => "parameter",
SemanticTokenTypes::Variable => "variable",
SemanticTokenTypes::Property => "property",
SemanticTokenTypes::EnumMember => "enumMember",
SemanticTokenTypes::Event => "event",
SemanticTokenTypes::Function => "function",
SemanticTokenTypes::Method => "method",
SemanticTokenTypes::Macro => "macro",
SemanticTokenTypes::Keyword => "keyword",
SemanticTokenTypes::Modifier => "modifier",
SemanticTokenTypes::Comment => "comment",
SemanticTokenTypes::String => "string",
SemanticTokenTypes::Number => "number",
SemanticTokenTypes::Regexp => "regexp",
SemanticTokenTypes::Operator => "operator",
SemanticTokenTypes::Decorator => "decorator",
SemanticTokenTypes::Label => "label",
SemanticTokenTypes::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum SemanticTokenModifiers {
Declaration,
Definition,
Readonly,
Static,
Deprecated,
Abstract,
Async,
Modification,
Documentation,
DefaultLibrary,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<SemanticTokenModifiers> for String {
fn from(e: SemanticTokenModifiers) -> Self {
match e {
SemanticTokenModifiers::Declaration => "declaration".to_string(),
SemanticTokenModifiers::Definition => "definition".to_string(),
SemanticTokenModifiers::Readonly => "readonly".to_string(),
SemanticTokenModifiers::Static => "static".to_string(),
SemanticTokenModifiers::Deprecated => "deprecated".to_string(),
SemanticTokenModifiers::Abstract => "abstract".to_string(),
SemanticTokenModifiers::Async => "async".to_string(),
SemanticTokenModifiers::Modification => "modification".to_string(),
SemanticTokenModifiers::Documentation => "documentation".to_string(),
SemanticTokenModifiers::DefaultLibrary => "defaultLibrary".to_string(),
SemanticTokenModifiers::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for SemanticTokenModifiers {
fn from(v: String) -> Self {
match v.as_str() {
"declaration" => SemanticTokenModifiers::Declaration,
"definition" => SemanticTokenModifiers::Definition,
"readonly" => SemanticTokenModifiers::Readonly,
"static" => SemanticTokenModifiers::Static,
"deprecated" => SemanticTokenModifiers::Deprecated,
"abstract" => SemanticTokenModifiers::Abstract,
"async" => SemanticTokenModifiers::Async,
"modification" => SemanticTokenModifiers::Modification,
"documentation" => SemanticTokenModifiers::Documentation,
"defaultLibrary" => SemanticTokenModifiers::DefaultLibrary,
_ => SemanticTokenModifiers::Custom(Cow::Owned(v)),
}
}
}
impl SemanticTokenModifiers {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for SemanticTokenModifiers {
fn from(s: &'static str) -> Self {
match s {
"declaration" => SemanticTokenModifiers::Declaration,
"definition" => SemanticTokenModifiers::Definition,
"readonly" => SemanticTokenModifiers::Readonly,
"static" => SemanticTokenModifiers::Static,
"deprecated" => SemanticTokenModifiers::Deprecated,
"abstract" => SemanticTokenModifiers::Abstract,
"async" => SemanticTokenModifiers::Async,
"modification" => SemanticTokenModifiers::Modification,
"documentation" => SemanticTokenModifiers::Documentation,
"defaultLibrary" => SemanticTokenModifiers::DefaultLibrary,
_ => SemanticTokenModifiers::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for SemanticTokenModifiers {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl SemanticTokenModifiers {
pub fn as_str(&self) -> &str {
match self {
SemanticTokenModifiers::Declaration => "declaration",
SemanticTokenModifiers::Definition => "definition",
SemanticTokenModifiers::Readonly => "readonly",
SemanticTokenModifiers::Static => "static",
SemanticTokenModifiers::Deprecated => "deprecated",
SemanticTokenModifiers::Abstract => "abstract",
SemanticTokenModifiers::Async => "async",
SemanticTokenModifiers::Modification => "modification",
SemanticTokenModifiers::Documentation => "documentation",
SemanticTokenModifiers::DefaultLibrary => "defaultLibrary",
SemanticTokenModifiers::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum DocumentDiagnosticReportKind {
Full,
Unchanged,
}
impl From<DocumentDiagnosticReportKind> for String {
fn from(e: DocumentDiagnosticReportKind) -> Self {
match e {
DocumentDiagnosticReportKind::Full => "full".to_string(),
DocumentDiagnosticReportKind::Unchanged => "unchanged".to_string(),
}
}
}
impl TryFrom<String> for DocumentDiagnosticReportKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"full" => Ok(DocumentDiagnosticReportKind::Full),
"unchanged" => Ok(DocumentDiagnosticReportKind::Unchanged),
_ => Err(format!("Invalid DocumentDiagnosticReportKind: {v}")),
}
}
}
impl fmt::Display for DocumentDiagnosticReportKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl DocumentDiagnosticReportKind {
pub fn as_str(&self) -> &str {
match self {
DocumentDiagnosticReportKind::Full => "full",
DocumentDiagnosticReportKind::Unchanged => "unchanged",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "i32", from = "i32")]
pub enum ErrorCodes {
ParseError,
InvalidRequest,
MethodNotFound,
InvalidParams,
InternalError,
ServerNotInitialized,
UnknownErrorCode,
#[serde(untagged)]
Custom(i32),
}
impl From<ErrorCodes> for i32 {
fn from(e: ErrorCodes) -> Self {
match e {
ErrorCodes::ParseError => -32700i32,
ErrorCodes::InvalidRequest => -32600i32,
ErrorCodes::MethodNotFound => -32601i32,
ErrorCodes::InvalidParams => -32602i32,
ErrorCodes::InternalError => -32603i32,
ErrorCodes::ServerNotInitialized => -32002i32,
ErrorCodes::UnknownErrorCode => -32001i32,
ErrorCodes::Custom(any) => any,
}
}
}
impl From<i32> for ErrorCodes {
fn from(v: i32) -> Self {
match v {
-32700i32 => ErrorCodes::ParseError,
-32600i32 => ErrorCodes::InvalidRequest,
-32601i32 => ErrorCodes::MethodNotFound,
-32602i32 => ErrorCodes::InvalidParams,
-32603i32 => ErrorCodes::InternalError,
-32002i32 => ErrorCodes::ServerNotInitialized,
-32001i32 => ErrorCodes::UnknownErrorCode,
_ => ErrorCodes::Custom(v),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "i32", from = "i32")]
pub enum LspErrorCodes {
RequestFailed,
ServerCancelled,
ContentModified,
RequestCancelled,
#[serde(untagged)]
Custom(i32),
}
impl From<LspErrorCodes> for i32 {
fn from(e: LspErrorCodes) -> Self {
match e {
LspErrorCodes::RequestFailed => -32803i32,
LspErrorCodes::ServerCancelled => -32802i32,
LspErrorCodes::ContentModified => -32801i32,
LspErrorCodes::RequestCancelled => -32800i32,
LspErrorCodes::Custom(any) => any,
}
}
}
impl From<i32> for LspErrorCodes {
fn from(v: i32) -> Self {
match v {
-32803i32 => LspErrorCodes::RequestFailed,
-32802i32 => LspErrorCodes::ServerCancelled,
-32801i32 => LspErrorCodes::ContentModified,
-32800i32 => LspErrorCodes::RequestCancelled,
_ => LspErrorCodes::Custom(v),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum FoldingRangeKind {
Comment,
Imports,
Region,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<FoldingRangeKind> for String {
fn from(e: FoldingRangeKind) -> Self {
match e {
FoldingRangeKind::Comment => "comment".to_string(),
FoldingRangeKind::Imports => "imports".to_string(),
FoldingRangeKind::Region => "region".to_string(),
FoldingRangeKind::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for FoldingRangeKind {
fn from(v: String) -> Self {
match v.as_str() {
"comment" => FoldingRangeKind::Comment,
"imports" => FoldingRangeKind::Imports,
"region" => FoldingRangeKind::Region,
_ => FoldingRangeKind::Custom(Cow::Owned(v)),
}
}
}
impl FoldingRangeKind {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for FoldingRangeKind {
fn from(s: &'static str) -> Self {
match s {
"comment" => FoldingRangeKind::Comment,
"imports" => FoldingRangeKind::Imports,
"region" => FoldingRangeKind::Region,
_ => FoldingRangeKind::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for FoldingRangeKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl FoldingRangeKind {
pub fn as_str(&self) -> &str {
match self {
FoldingRangeKind::Comment => "comment",
FoldingRangeKind::Imports => "imports",
FoldingRangeKind::Region => "region",
FoldingRangeKind::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum SymbolKind {
File,
Module,
Namespace,
Package,
Class,
Method,
Property,
Field,
Constructor,
Enum,
Interface,
Function,
Variable,
Constant,
String,
Number,
Boolean,
Array,
Object,
Key,
Null,
EnumMember,
Struct,
Event,
Operator,
TypeParameter,
}
impl From<SymbolKind> for u32 {
fn from(e: SymbolKind) -> Self {
match e {
SymbolKind::File => 1u32,
SymbolKind::Module => 2u32,
SymbolKind::Namespace => 3u32,
SymbolKind::Package => 4u32,
SymbolKind::Class => 5u32,
SymbolKind::Method => 6u32,
SymbolKind::Property => 7u32,
SymbolKind::Field => 8u32,
SymbolKind::Constructor => 9u32,
SymbolKind::Enum => 10u32,
SymbolKind::Interface => 11u32,
SymbolKind::Function => 12u32,
SymbolKind::Variable => 13u32,
SymbolKind::Constant => 14u32,
SymbolKind::String => 15u32,
SymbolKind::Number => 16u32,
SymbolKind::Boolean => 17u32,
SymbolKind::Array => 18u32,
SymbolKind::Object => 19u32,
SymbolKind::Key => 20u32,
SymbolKind::Null => 21u32,
SymbolKind::EnumMember => 22u32,
SymbolKind::Struct => 23u32,
SymbolKind::Event => 24u32,
SymbolKind::Operator => 25u32,
SymbolKind::TypeParameter => 26u32,
}
}
}
impl TryFrom<u32> for SymbolKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(SymbolKind::File),
2u32 => Ok(SymbolKind::Module),
3u32 => Ok(SymbolKind::Namespace),
4u32 => Ok(SymbolKind::Package),
5u32 => Ok(SymbolKind::Class),
6u32 => Ok(SymbolKind::Method),
7u32 => Ok(SymbolKind::Property),
8u32 => Ok(SymbolKind::Field),
9u32 => Ok(SymbolKind::Constructor),
10u32 => Ok(SymbolKind::Enum),
11u32 => Ok(SymbolKind::Interface),
12u32 => Ok(SymbolKind::Function),
13u32 => Ok(SymbolKind::Variable),
14u32 => Ok(SymbolKind::Constant),
15u32 => Ok(SymbolKind::String),
16u32 => Ok(SymbolKind::Number),
17u32 => Ok(SymbolKind::Boolean),
18u32 => Ok(SymbolKind::Array),
19u32 => Ok(SymbolKind::Object),
20u32 => Ok(SymbolKind::Key),
21u32 => Ok(SymbolKind::Null),
22u32 => Ok(SymbolKind::EnumMember),
23u32 => Ok(SymbolKind::Struct),
24u32 => Ok(SymbolKind::Event),
25u32 => Ok(SymbolKind::Operator),
26u32 => Ok(SymbolKind::TypeParameter),
_ => Err(format!("Invalid SymbolKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum SymbolTag {
Deprecated,
}
impl From<SymbolTag> for u32 {
fn from(e: SymbolTag) -> Self {
match e {
SymbolTag::Deprecated => 1u32,
}
}
}
impl TryFrom<u32> for SymbolTag {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(SymbolTag::Deprecated),
_ => Err(format!("Invalid SymbolTag: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum UniquenessLevel {
Document,
Project,
Group,
Scheme,
Global,
}
impl From<UniquenessLevel> for String {
fn from(e: UniquenessLevel) -> Self {
match e {
UniquenessLevel::Document => "document".to_string(),
UniquenessLevel::Project => "project".to_string(),
UniquenessLevel::Group => "group".to_string(),
UniquenessLevel::Scheme => "scheme".to_string(),
UniquenessLevel::Global => "global".to_string(),
}
}
}
impl TryFrom<String> for UniquenessLevel {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"document" => Ok(UniquenessLevel::Document),
"project" => Ok(UniquenessLevel::Project),
"group" => Ok(UniquenessLevel::Group),
"scheme" => Ok(UniquenessLevel::Scheme),
"global" => Ok(UniquenessLevel::Global),
_ => Err(format!("Invalid UniquenessLevel: {v}")),
}
}
}
impl fmt::Display for UniquenessLevel {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl UniquenessLevel {
pub fn as_str(&self) -> &str {
match self {
UniquenessLevel::Document => "document",
UniquenessLevel::Project => "project",
UniquenessLevel::Group => "group",
UniquenessLevel::Scheme => "scheme",
UniquenessLevel::Global => "global",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum MonikerKind {
Import,
Export,
Local,
}
impl From<MonikerKind> for String {
fn from(e: MonikerKind) -> Self {
match e {
MonikerKind::Import => "import".to_string(),
MonikerKind::Export => "export".to_string(),
MonikerKind::Local => "local".to_string(),
}
}
}
impl TryFrom<String> for MonikerKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"import" => Ok(MonikerKind::Import),
"export" => Ok(MonikerKind::Export),
"local" => Ok(MonikerKind::Local),
_ => Err(format!("Invalid MonikerKind: {v}")),
}
}
}
impl fmt::Display for MonikerKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl MonikerKind {
pub fn as_str(&self) -> &str {
match self {
MonikerKind::Import => "import",
MonikerKind::Export => "export",
MonikerKind::Local => "local",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum InlayHintKind {
Type,
Parameter,
}
impl From<InlayHintKind> for u32 {
fn from(e: InlayHintKind) -> Self {
match e {
InlayHintKind::Type => 1u32,
InlayHintKind::Parameter => 2u32,
}
}
}
impl TryFrom<u32> for InlayHintKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(InlayHintKind::Type),
2u32 => Ok(InlayHintKind::Parameter),
_ => Err(format!("Invalid InlayHintKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum MessageType {
Error,
Warning,
Info,
Log,
Debug,
}
impl From<MessageType> for u32 {
fn from(e: MessageType) -> Self {
match e {
MessageType::Error => 1u32,
MessageType::Warning => 2u32,
MessageType::Info => 3u32,
MessageType::Log => 4u32,
MessageType::Debug => 5u32,
}
}
}
impl TryFrom<u32> for MessageType {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(MessageType::Error),
2u32 => Ok(MessageType::Warning),
3u32 => Ok(MessageType::Info),
4u32 => Ok(MessageType::Log),
5u32 => Ok(MessageType::Debug),
_ => Err(format!("Invalid MessageType: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum TextDocumentSyncKind {
None,
Full,
Incremental,
}
impl From<TextDocumentSyncKind> for u32 {
fn from(e: TextDocumentSyncKind) -> Self {
match e {
TextDocumentSyncKind::None => 0u32,
TextDocumentSyncKind::Full => 1u32,
TextDocumentSyncKind::Incremental => 2u32,
}
}
}
impl TryFrom<u32> for TextDocumentSyncKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
0u32 => Ok(TextDocumentSyncKind::None),
1u32 => Ok(TextDocumentSyncKind::Full),
2u32 => Ok(TextDocumentSyncKind::Incremental),
_ => Err(format!("Invalid TextDocumentSyncKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum TextDocumentSaveReason {
Manual,
AfterDelay,
FocusOut,
}
impl From<TextDocumentSaveReason> for u32 {
fn from(e: TextDocumentSaveReason) -> Self {
match e {
TextDocumentSaveReason::Manual => 1u32,
TextDocumentSaveReason::AfterDelay => 2u32,
TextDocumentSaveReason::FocusOut => 3u32,
}
}
}
impl TryFrom<u32> for TextDocumentSaveReason {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(TextDocumentSaveReason::Manual),
2u32 => Ok(TextDocumentSaveReason::AfterDelay),
3u32 => Ok(TextDocumentSaveReason::FocusOut),
_ => Err(format!("Invalid TextDocumentSaveReason: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum CompletionItemKind {
Text,
Method,
Function,
Constructor,
Field,
Variable,
Class,
Interface,
Module,
Property,
Unit,
Value,
Enum,
Keyword,
Snippet,
Color,
File,
Reference,
Folder,
EnumMember,
Constant,
Struct,
Event,
Operator,
TypeParameter,
}
impl From<CompletionItemKind> for u32 {
fn from(e: CompletionItemKind) -> Self {
match e {
CompletionItemKind::Text => 1u32,
CompletionItemKind::Method => 2u32,
CompletionItemKind::Function => 3u32,
CompletionItemKind::Constructor => 4u32,
CompletionItemKind::Field => 5u32,
CompletionItemKind::Variable => 6u32,
CompletionItemKind::Class => 7u32,
CompletionItemKind::Interface => 8u32,
CompletionItemKind::Module => 9u32,
CompletionItemKind::Property => 10u32,
CompletionItemKind::Unit => 11u32,
CompletionItemKind::Value => 12u32,
CompletionItemKind::Enum => 13u32,
CompletionItemKind::Keyword => 14u32,
CompletionItemKind::Snippet => 15u32,
CompletionItemKind::Color => 16u32,
CompletionItemKind::File => 17u32,
CompletionItemKind::Reference => 18u32,
CompletionItemKind::Folder => 19u32,
CompletionItemKind::EnumMember => 20u32,
CompletionItemKind::Constant => 21u32,
CompletionItemKind::Struct => 22u32,
CompletionItemKind::Event => 23u32,
CompletionItemKind::Operator => 24u32,
CompletionItemKind::TypeParameter => 25u32,
}
}
}
impl TryFrom<u32> for CompletionItemKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(CompletionItemKind::Text),
2u32 => Ok(CompletionItemKind::Method),
3u32 => Ok(CompletionItemKind::Function),
4u32 => Ok(CompletionItemKind::Constructor),
5u32 => Ok(CompletionItemKind::Field),
6u32 => Ok(CompletionItemKind::Variable),
7u32 => Ok(CompletionItemKind::Class),
8u32 => Ok(CompletionItemKind::Interface),
9u32 => Ok(CompletionItemKind::Module),
10u32 => Ok(CompletionItemKind::Property),
11u32 => Ok(CompletionItemKind::Unit),
12u32 => Ok(CompletionItemKind::Value),
13u32 => Ok(CompletionItemKind::Enum),
14u32 => Ok(CompletionItemKind::Keyword),
15u32 => Ok(CompletionItemKind::Snippet),
16u32 => Ok(CompletionItemKind::Color),
17u32 => Ok(CompletionItemKind::File),
18u32 => Ok(CompletionItemKind::Reference),
19u32 => Ok(CompletionItemKind::Folder),
20u32 => Ok(CompletionItemKind::EnumMember),
21u32 => Ok(CompletionItemKind::Constant),
22u32 => Ok(CompletionItemKind::Struct),
23u32 => Ok(CompletionItemKind::Event),
24u32 => Ok(CompletionItemKind::Operator),
25u32 => Ok(CompletionItemKind::TypeParameter),
_ => Err(format!("Invalid CompletionItemKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum CompletionItemTag {
Deprecated,
}
impl From<CompletionItemTag> for u32 {
fn from(e: CompletionItemTag) -> Self {
match e {
CompletionItemTag::Deprecated => 1u32,
}
}
}
impl TryFrom<u32> for CompletionItemTag {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(CompletionItemTag::Deprecated),
_ => Err(format!("Invalid CompletionItemTag: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum InsertTextFormat {
PlainText,
Snippet,
}
impl From<InsertTextFormat> for u32 {
fn from(e: InsertTextFormat) -> Self {
match e {
InsertTextFormat::PlainText => 1u32,
InsertTextFormat::Snippet => 2u32,
}
}
}
impl TryFrom<u32> for InsertTextFormat {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(InsertTextFormat::PlainText),
2u32 => Ok(InsertTextFormat::Snippet),
_ => Err(format!("Invalid InsertTextFormat: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum InsertTextMode {
AsIs,
AdjustIndentation,
}
impl From<InsertTextMode> for u32 {
fn from(e: InsertTextMode) -> Self {
match e {
InsertTextMode::AsIs => 1u32,
InsertTextMode::AdjustIndentation => 2u32,
}
}
}
impl TryFrom<u32> for InsertTextMode {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(InsertTextMode::AsIs),
2u32 => Ok(InsertTextMode::AdjustIndentation),
_ => Err(format!("Invalid InsertTextMode: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum DocumentHighlightKind {
Text,
Read,
Write,
}
impl From<DocumentHighlightKind> for u32 {
fn from(e: DocumentHighlightKind) -> Self {
match e {
DocumentHighlightKind::Text => 1u32,
DocumentHighlightKind::Read => 2u32,
DocumentHighlightKind::Write => 3u32,
}
}
}
impl TryFrom<u32> for DocumentHighlightKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(DocumentHighlightKind::Text),
2u32 => Ok(DocumentHighlightKind::Read),
3u32 => Ok(DocumentHighlightKind::Write),
_ => Err(format!("Invalid DocumentHighlightKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum CodeActionKind {
Empty,
QuickFix,
Refactor,
RefactorExtract,
RefactorInline,
RefactorMove,
RefactorRewrite,
Source,
SourceOrganizeImports,
SourceFixAll,
Notebook,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<CodeActionKind> for String {
fn from(e: CodeActionKind) -> Self {
match e {
CodeActionKind::Empty => "".to_string(),
CodeActionKind::QuickFix => "quickfix".to_string(),
CodeActionKind::Refactor => "refactor".to_string(),
CodeActionKind::RefactorExtract => "refactor.extract".to_string(),
CodeActionKind::RefactorInline => "refactor.inline".to_string(),
CodeActionKind::RefactorMove => "refactor.move".to_string(),
CodeActionKind::RefactorRewrite => "refactor.rewrite".to_string(),
CodeActionKind::Source => "source".to_string(),
CodeActionKind::SourceOrganizeImports => "source.organizeImports".to_string(),
CodeActionKind::SourceFixAll => "source.fixAll".to_string(),
CodeActionKind::Notebook => "notebook".to_string(),
CodeActionKind::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for CodeActionKind {
fn from(v: String) -> Self {
match v.as_str() {
"" => CodeActionKind::Empty,
"quickfix" => CodeActionKind::QuickFix,
"refactor" => CodeActionKind::Refactor,
"refactor.extract" => CodeActionKind::RefactorExtract,
"refactor.inline" => CodeActionKind::RefactorInline,
"refactor.move" => CodeActionKind::RefactorMove,
"refactor.rewrite" => CodeActionKind::RefactorRewrite,
"source" => CodeActionKind::Source,
"source.organizeImports" => CodeActionKind::SourceOrganizeImports,
"source.fixAll" => CodeActionKind::SourceFixAll,
"notebook" => CodeActionKind::Notebook,
_ => CodeActionKind::Custom(Cow::Owned(v)),
}
}
}
impl CodeActionKind {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for CodeActionKind {
fn from(s: &'static str) -> Self {
match s {
"" => CodeActionKind::Empty,
"quickfix" => CodeActionKind::QuickFix,
"refactor" => CodeActionKind::Refactor,
"refactor.extract" => CodeActionKind::RefactorExtract,
"refactor.inline" => CodeActionKind::RefactorInline,
"refactor.move" => CodeActionKind::RefactorMove,
"refactor.rewrite" => CodeActionKind::RefactorRewrite,
"source" => CodeActionKind::Source,
"source.organizeImports" => CodeActionKind::SourceOrganizeImports,
"source.fixAll" => CodeActionKind::SourceFixAll,
"notebook" => CodeActionKind::Notebook,
_ => CodeActionKind::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for CodeActionKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl CodeActionKind {
pub fn as_str(&self) -> &str {
match self {
CodeActionKind::Empty => "",
CodeActionKind::QuickFix => "quickfix",
CodeActionKind::Refactor => "refactor",
CodeActionKind::RefactorExtract => "refactor.extract",
CodeActionKind::RefactorInline => "refactor.inline",
CodeActionKind::RefactorMove => "refactor.move",
CodeActionKind::RefactorRewrite => "refactor.rewrite",
CodeActionKind::Source => "source",
CodeActionKind::SourceOrganizeImports => "source.organizeImports",
CodeActionKind::SourceFixAll => "source.fixAll",
CodeActionKind::Notebook => "notebook",
CodeActionKind::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum CodeActionTag {
LLMGenerated,
}
impl From<CodeActionTag> for u32 {
fn from(e: CodeActionTag) -> Self {
match e {
CodeActionTag::LLMGenerated => 1u32,
}
}
}
impl TryFrom<u32> for CodeActionTag {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(CodeActionTag::LLMGenerated),
_ => Err(format!("Invalid CodeActionTag: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum TraceValue {
Off,
Messages,
Verbose,
}
impl From<TraceValue> for String {
fn from(e: TraceValue) -> Self {
match e {
TraceValue::Off => "off".to_string(),
TraceValue::Messages => "messages".to_string(),
TraceValue::Verbose => "verbose".to_string(),
}
}
}
impl TryFrom<String> for TraceValue {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"off" => Ok(TraceValue::Off),
"messages" => Ok(TraceValue::Messages),
"verbose" => Ok(TraceValue::Verbose),
_ => Err(format!("Invalid TraceValue: {v}")),
}
}
}
impl fmt::Display for TraceValue {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl TraceValue {
pub fn as_str(&self) -> &str {
match self {
TraceValue::Off => "off",
TraceValue::Messages => "messages",
TraceValue::Verbose => "verbose",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum MarkupKind {
PlainText,
Markdown,
}
impl From<MarkupKind> for String {
fn from(e: MarkupKind) -> Self {
match e {
MarkupKind::PlainText => "plaintext".to_string(),
MarkupKind::Markdown => "markdown".to_string(),
}
}
}
impl TryFrom<String> for MarkupKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"plaintext" => Ok(MarkupKind::PlainText),
"markdown" => Ok(MarkupKind::Markdown),
_ => Err(format!("Invalid MarkupKind: {v}")),
}
}
}
impl fmt::Display for MarkupKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl MarkupKind {
pub fn as_str(&self) -> &str {
match self {
MarkupKind::PlainText => "plaintext",
MarkupKind::Markdown => "markdown",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum LanguageKind {
ABAP,
WindowsBat,
BibTeX,
Clojure,
Coffeescript,
C,
CPP,
CSharp,
CSS,
D,
Delphi,
Diff,
Dart,
Dockerfile,
Elixir,
Erlang,
FSharp,
GitCommit,
GitRebase,
Go,
Groovy,
Handlebars,
Haskell,
HTML,
Ini,
Java,
JavaScript,
JavaScriptReact,
JSON,
LaTeX,
Less,
Lua,
Makefile,
Markdown,
ObjectiveC,
ObjectiveCPP,
Pascal,
Perl,
Perl6,
PHP,
Powershell,
Pug,
Python,
R,
Razor,
Ruby,
Rust,
SCSS,
SASS,
Scala,
ShaderLab,
ShellScript,
SQL,
Swift,
TypeScript,
TypeScriptReact,
TeX,
VisualBasic,
XML,
XSL,
YAML,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<LanguageKind> for String {
fn from(e: LanguageKind) -> Self {
match e {
LanguageKind::ABAP => "abap".to_string(),
LanguageKind::WindowsBat => "bat".to_string(),
LanguageKind::BibTeX => "bibtex".to_string(),
LanguageKind::Clojure => "clojure".to_string(),
LanguageKind::Coffeescript => "coffeescript".to_string(),
LanguageKind::C => "c".to_string(),
LanguageKind::CPP => "cpp".to_string(),
LanguageKind::CSharp => "csharp".to_string(),
LanguageKind::CSS => "css".to_string(),
LanguageKind::D => "d".to_string(),
LanguageKind::Delphi => "pascal".to_string(),
LanguageKind::Diff => "diff".to_string(),
LanguageKind::Dart => "dart".to_string(),
LanguageKind::Dockerfile => "dockerfile".to_string(),
LanguageKind::Elixir => "elixir".to_string(),
LanguageKind::Erlang => "erlang".to_string(),
LanguageKind::FSharp => "fsharp".to_string(),
LanguageKind::GitCommit => "git-commit".to_string(),
LanguageKind::GitRebase => "rebase".to_string(),
LanguageKind::Go => "go".to_string(),
LanguageKind::Groovy => "groovy".to_string(),
LanguageKind::Handlebars => "handlebars".to_string(),
LanguageKind::Haskell => "haskell".to_string(),
LanguageKind::HTML => "html".to_string(),
LanguageKind::Ini => "ini".to_string(),
LanguageKind::Java => "java".to_string(),
LanguageKind::JavaScript => "javascript".to_string(),
LanguageKind::JavaScriptReact => "javascriptreact".to_string(),
LanguageKind::JSON => "json".to_string(),
LanguageKind::LaTeX => "latex".to_string(),
LanguageKind::Less => "less".to_string(),
LanguageKind::Lua => "lua".to_string(),
LanguageKind::Makefile => "makefile".to_string(),
LanguageKind::Markdown => "markdown".to_string(),
LanguageKind::ObjectiveC => "objective-c".to_string(),
LanguageKind::ObjectiveCPP => "objective-cpp".to_string(),
LanguageKind::Pascal => "pascal".to_string(),
LanguageKind::Perl => "perl".to_string(),
LanguageKind::Perl6 => "perl6".to_string(),
LanguageKind::PHP => "php".to_string(),
LanguageKind::Powershell => "powershell".to_string(),
LanguageKind::Pug => "jade".to_string(),
LanguageKind::Python => "python".to_string(),
LanguageKind::R => "r".to_string(),
LanguageKind::Razor => "razor".to_string(),
LanguageKind::Ruby => "ruby".to_string(),
LanguageKind::Rust => "rust".to_string(),
LanguageKind::SCSS => "scss".to_string(),
LanguageKind::SASS => "sass".to_string(),
LanguageKind::Scala => "scala".to_string(),
LanguageKind::ShaderLab => "shaderlab".to_string(),
LanguageKind::ShellScript => "shellscript".to_string(),
LanguageKind::SQL => "sql".to_string(),
LanguageKind::Swift => "swift".to_string(),
LanguageKind::TypeScript => "typescript".to_string(),
LanguageKind::TypeScriptReact => "typescriptreact".to_string(),
LanguageKind::TeX => "tex".to_string(),
LanguageKind::VisualBasic => "vb".to_string(),
LanguageKind::XML => "xml".to_string(),
LanguageKind::XSL => "xsl".to_string(),
LanguageKind::YAML => "yaml".to_string(),
LanguageKind::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for LanguageKind {
fn from(v: String) -> Self {
match v.as_str() {
"abap" => LanguageKind::ABAP,
"bat" => LanguageKind::WindowsBat,
"bibtex" => LanguageKind::BibTeX,
"clojure" => LanguageKind::Clojure,
"coffeescript" => LanguageKind::Coffeescript,
"c" => LanguageKind::C,
"cpp" => LanguageKind::CPP,
"csharp" => LanguageKind::CSharp,
"css" => LanguageKind::CSS,
"d" => LanguageKind::D,
"pascal" => LanguageKind::Delphi,
"diff" => LanguageKind::Diff,
"dart" => LanguageKind::Dart,
"dockerfile" => LanguageKind::Dockerfile,
"elixir" => LanguageKind::Elixir,
"erlang" => LanguageKind::Erlang,
"fsharp" => LanguageKind::FSharp,
"git-commit" => LanguageKind::GitCommit,
"rebase" => LanguageKind::GitRebase,
"go" => LanguageKind::Go,
"groovy" => LanguageKind::Groovy,
"handlebars" => LanguageKind::Handlebars,
"haskell" => LanguageKind::Haskell,
"html" => LanguageKind::HTML,
"ini" => LanguageKind::Ini,
"java" => LanguageKind::Java,
"javascript" => LanguageKind::JavaScript,
"javascriptreact" => LanguageKind::JavaScriptReact,
"json" => LanguageKind::JSON,
"latex" => LanguageKind::LaTeX,
"less" => LanguageKind::Less,
"lua" => LanguageKind::Lua,
"makefile" => LanguageKind::Makefile,
"markdown" => LanguageKind::Markdown,
"objective-c" => LanguageKind::ObjectiveC,
"objective-cpp" => LanguageKind::ObjectiveCPP,
"pascal" => LanguageKind::Pascal,
"perl" => LanguageKind::Perl,
"perl6" => LanguageKind::Perl6,
"php" => LanguageKind::PHP,
"powershell" => LanguageKind::Powershell,
"jade" => LanguageKind::Pug,
"python" => LanguageKind::Python,
"r" => LanguageKind::R,
"razor" => LanguageKind::Razor,
"ruby" => LanguageKind::Ruby,
"rust" => LanguageKind::Rust,
"scss" => LanguageKind::SCSS,
"sass" => LanguageKind::SASS,
"scala" => LanguageKind::Scala,
"shaderlab" => LanguageKind::ShaderLab,
"shellscript" => LanguageKind::ShellScript,
"sql" => LanguageKind::SQL,
"swift" => LanguageKind::Swift,
"typescript" => LanguageKind::TypeScript,
"typescriptreact" => LanguageKind::TypeScriptReact,
"tex" => LanguageKind::TeX,
"vb" => LanguageKind::VisualBasic,
"xml" => LanguageKind::XML,
"xsl" => LanguageKind::XSL,
"yaml" => LanguageKind::YAML,
_ => LanguageKind::Custom(Cow::Owned(v)),
}
}
}
impl LanguageKind {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for LanguageKind {
fn from(s: &'static str) -> Self {
match s {
"abap" => LanguageKind::ABAP,
"bat" => LanguageKind::WindowsBat,
"bibtex" => LanguageKind::BibTeX,
"clojure" => LanguageKind::Clojure,
"coffeescript" => LanguageKind::Coffeescript,
"c" => LanguageKind::C,
"cpp" => LanguageKind::CPP,
"csharp" => LanguageKind::CSharp,
"css" => LanguageKind::CSS,
"d" => LanguageKind::D,
"pascal" => LanguageKind::Delphi,
"diff" => LanguageKind::Diff,
"dart" => LanguageKind::Dart,
"dockerfile" => LanguageKind::Dockerfile,
"elixir" => LanguageKind::Elixir,
"erlang" => LanguageKind::Erlang,
"fsharp" => LanguageKind::FSharp,
"git-commit" => LanguageKind::GitCommit,
"rebase" => LanguageKind::GitRebase,
"go" => LanguageKind::Go,
"groovy" => LanguageKind::Groovy,
"handlebars" => LanguageKind::Handlebars,
"haskell" => LanguageKind::Haskell,
"html" => LanguageKind::HTML,
"ini" => LanguageKind::Ini,
"java" => LanguageKind::Java,
"javascript" => LanguageKind::JavaScript,
"javascriptreact" => LanguageKind::JavaScriptReact,
"json" => LanguageKind::JSON,
"latex" => LanguageKind::LaTeX,
"less" => LanguageKind::Less,
"lua" => LanguageKind::Lua,
"makefile" => LanguageKind::Makefile,
"markdown" => LanguageKind::Markdown,
"objective-c" => LanguageKind::ObjectiveC,
"objective-cpp" => LanguageKind::ObjectiveCPP,
"pascal" => LanguageKind::Pascal,
"perl" => LanguageKind::Perl,
"perl6" => LanguageKind::Perl6,
"php" => LanguageKind::PHP,
"powershell" => LanguageKind::Powershell,
"jade" => LanguageKind::Pug,
"python" => LanguageKind::Python,
"r" => LanguageKind::R,
"razor" => LanguageKind::Razor,
"ruby" => LanguageKind::Ruby,
"rust" => LanguageKind::Rust,
"scss" => LanguageKind::SCSS,
"sass" => LanguageKind::SASS,
"scala" => LanguageKind::Scala,
"shaderlab" => LanguageKind::ShaderLab,
"shellscript" => LanguageKind::ShellScript,
"sql" => LanguageKind::SQL,
"swift" => LanguageKind::Swift,
"typescript" => LanguageKind::TypeScript,
"typescriptreact" => LanguageKind::TypeScriptReact,
"tex" => LanguageKind::TeX,
"vb" => LanguageKind::VisualBasic,
"xml" => LanguageKind::XML,
"xsl" => LanguageKind::XSL,
"yaml" => LanguageKind::YAML,
_ => LanguageKind::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for LanguageKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl LanguageKind {
pub fn as_str(&self) -> &str {
match self {
LanguageKind::ABAP => "abap",
LanguageKind::WindowsBat => "bat",
LanguageKind::BibTeX => "bibtex",
LanguageKind::Clojure => "clojure",
LanguageKind::Coffeescript => "coffeescript",
LanguageKind::C => "c",
LanguageKind::CPP => "cpp",
LanguageKind::CSharp => "csharp",
LanguageKind::CSS => "css",
LanguageKind::D => "d",
LanguageKind::Delphi => "pascal",
LanguageKind::Diff => "diff",
LanguageKind::Dart => "dart",
LanguageKind::Dockerfile => "dockerfile",
LanguageKind::Elixir => "elixir",
LanguageKind::Erlang => "erlang",
LanguageKind::FSharp => "fsharp",
LanguageKind::GitCommit => "git-commit",
LanguageKind::GitRebase => "rebase",
LanguageKind::Go => "go",
LanguageKind::Groovy => "groovy",
LanguageKind::Handlebars => "handlebars",
LanguageKind::Haskell => "haskell",
LanguageKind::HTML => "html",
LanguageKind::Ini => "ini",
LanguageKind::Java => "java",
LanguageKind::JavaScript => "javascript",
LanguageKind::JavaScriptReact => "javascriptreact",
LanguageKind::JSON => "json",
LanguageKind::LaTeX => "latex",
LanguageKind::Less => "less",
LanguageKind::Lua => "lua",
LanguageKind::Makefile => "makefile",
LanguageKind::Markdown => "markdown",
LanguageKind::ObjectiveC => "objective-c",
LanguageKind::ObjectiveCPP => "objective-cpp",
LanguageKind::Pascal => "pascal",
LanguageKind::Perl => "perl",
LanguageKind::Perl6 => "perl6",
LanguageKind::PHP => "php",
LanguageKind::Powershell => "powershell",
LanguageKind::Pug => "jade",
LanguageKind::Python => "python",
LanguageKind::R => "r",
LanguageKind::Razor => "razor",
LanguageKind::Ruby => "ruby",
LanguageKind::Rust => "rust",
LanguageKind::SCSS => "scss",
LanguageKind::SASS => "sass",
LanguageKind::Scala => "scala",
LanguageKind::ShaderLab => "shaderlab",
LanguageKind::ShellScript => "shellscript",
LanguageKind::SQL => "sql",
LanguageKind::Swift => "swift",
LanguageKind::TypeScript => "typescript",
LanguageKind::TypeScriptReact => "typescriptreact",
LanguageKind::TeX => "tex",
LanguageKind::VisualBasic => "vb",
LanguageKind::XML => "xml",
LanguageKind::XSL => "xsl",
LanguageKind::YAML => "yaml",
LanguageKind::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum InlineCompletionTriggerKind {
Invoked,
Automatic,
}
impl From<InlineCompletionTriggerKind> for u32 {
fn from(e: InlineCompletionTriggerKind) -> Self {
match e {
InlineCompletionTriggerKind::Invoked => 1u32,
InlineCompletionTriggerKind::Automatic => 2u32,
}
}
}
impl TryFrom<u32> for InlineCompletionTriggerKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(InlineCompletionTriggerKind::Invoked),
2u32 => Ok(InlineCompletionTriggerKind::Automatic),
_ => Err(format!("Invalid InlineCompletionTriggerKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum PositionEncodingKind {
UTF8,
UTF16,
UTF32,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<PositionEncodingKind> for String {
fn from(e: PositionEncodingKind) -> Self {
match e {
PositionEncodingKind::UTF8 => "utf-8".to_string(),
PositionEncodingKind::UTF16 => "utf-16".to_string(),
PositionEncodingKind::UTF32 => "utf-32".to_string(),
PositionEncodingKind::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for PositionEncodingKind {
fn from(v: String) -> Self {
match v.as_str() {
"utf-8" => PositionEncodingKind::UTF8,
"utf-16" => PositionEncodingKind::UTF16,
"utf-32" => PositionEncodingKind::UTF32,
_ => PositionEncodingKind::Custom(Cow::Owned(v)),
}
}
}
impl PositionEncodingKind {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for PositionEncodingKind {
fn from(s: &'static str) -> Self {
match s {
"utf-8" => PositionEncodingKind::UTF8,
"utf-16" => PositionEncodingKind::UTF16,
"utf-32" => PositionEncodingKind::UTF32,
_ => PositionEncodingKind::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for PositionEncodingKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl PositionEncodingKind {
pub fn as_str(&self) -> &str {
match self {
PositionEncodingKind::UTF8 => "utf-8",
PositionEncodingKind::UTF16 => "utf-16",
PositionEncodingKind::UTF32 => "utf-32",
PositionEncodingKind::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum FileChangeType {
Created,
Changed,
Deleted,
}
impl From<FileChangeType> for u32 {
fn from(e: FileChangeType) -> Self {
match e {
FileChangeType::Created => 1u32,
FileChangeType::Changed => 2u32,
FileChangeType::Deleted => 3u32,
}
}
}
impl TryFrom<u32> for FileChangeType {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(FileChangeType::Created),
2u32 => Ok(FileChangeType::Changed),
3u32 => Ok(FileChangeType::Deleted),
_ => Err(format!("Invalid FileChangeType: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", from = "u32")]
pub enum WatchKind {
Create,
Change,
Delete,
#[serde(untagged)]
Custom(u32),
}
impl From<WatchKind> for u32 {
fn from(e: WatchKind) -> Self {
match e {
WatchKind::Create => 1u32,
WatchKind::Change => 2u32,
WatchKind::Delete => 4u32,
WatchKind::Custom(any) => any,
}
}
}
impl From<u32> for WatchKind {
fn from(v: u32) -> Self {
match v {
1u32 => WatchKind::Create,
2u32 => WatchKind::Change,
4u32 => WatchKind::Delete,
_ => WatchKind::Custom(v),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum DiagnosticSeverity {
Error,
Warning,
Information,
Hint,
}
impl From<DiagnosticSeverity> for u32 {
fn from(e: DiagnosticSeverity) -> Self {
match e {
DiagnosticSeverity::Error => 1u32,
DiagnosticSeverity::Warning => 2u32,
DiagnosticSeverity::Information => 3u32,
DiagnosticSeverity::Hint => 4u32,
}
}
}
impl TryFrom<u32> for DiagnosticSeverity {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(DiagnosticSeverity::Error),
2u32 => Ok(DiagnosticSeverity::Warning),
3u32 => Ok(DiagnosticSeverity::Information),
4u32 => Ok(DiagnosticSeverity::Hint),
_ => Err(format!("Invalid DiagnosticSeverity: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum DiagnosticTag {
Unnecessary,
Deprecated,
}
impl From<DiagnosticTag> for u32 {
fn from(e: DiagnosticTag) -> Self {
match e {
DiagnosticTag::Unnecessary => 1u32,
DiagnosticTag::Deprecated => 2u32,
}
}
}
impl TryFrom<u32> for DiagnosticTag {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(DiagnosticTag::Unnecessary),
2u32 => Ok(DiagnosticTag::Deprecated),
_ => Err(format!("Invalid DiagnosticTag: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum CompletionTriggerKind {
Invoked,
TriggerCharacter,
TriggerForIncompleteCompletions,
}
impl From<CompletionTriggerKind> for u32 {
fn from(e: CompletionTriggerKind) -> Self {
match e {
CompletionTriggerKind::Invoked => 1u32,
CompletionTriggerKind::TriggerCharacter => 2u32,
CompletionTriggerKind::TriggerForIncompleteCompletions => 3u32,
}
}
}
impl TryFrom<u32> for CompletionTriggerKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(CompletionTriggerKind::Invoked),
2u32 => Ok(CompletionTriggerKind::TriggerCharacter),
3u32 => Ok(CompletionTriggerKind::TriggerForIncompleteCompletions),
_ => Err(format!("Invalid CompletionTriggerKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum ApplyKind {
Replace,
Merge,
}
impl From<ApplyKind> for u32 {
fn from(e: ApplyKind) -> Self {
match e {
ApplyKind::Replace => 1u32,
ApplyKind::Merge => 2u32,
}
}
}
impl TryFrom<u32> for ApplyKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(ApplyKind::Replace),
2u32 => Ok(ApplyKind::Merge),
_ => Err(format!("Invalid ApplyKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum SignatureHelpTriggerKind {
Invoked,
TriggerCharacter,
ContentChange,
}
impl From<SignatureHelpTriggerKind> for u32 {
fn from(e: SignatureHelpTriggerKind) -> Self {
match e {
SignatureHelpTriggerKind::Invoked => 1u32,
SignatureHelpTriggerKind::TriggerCharacter => 2u32,
SignatureHelpTriggerKind::ContentChange => 3u32,
}
}
}
impl TryFrom<u32> for SignatureHelpTriggerKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(SignatureHelpTriggerKind::Invoked),
2u32 => Ok(SignatureHelpTriggerKind::TriggerCharacter),
3u32 => Ok(SignatureHelpTriggerKind::ContentChange),
_ => Err(format!("Invalid SignatureHelpTriggerKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum CodeActionTriggerKind {
Invoked,
Automatic,
}
impl From<CodeActionTriggerKind> for u32 {
fn from(e: CodeActionTriggerKind) -> Self {
match e {
CodeActionTriggerKind::Invoked => 1u32,
CodeActionTriggerKind::Automatic => 2u32,
}
}
}
impl TryFrom<u32> for CodeActionTriggerKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(CodeActionTriggerKind::Invoked),
2u32 => Ok(CodeActionTriggerKind::Automatic),
_ => Err(format!("Invalid CodeActionTriggerKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum FileOperationPatternKind {
File,
Folder,
}
impl From<FileOperationPatternKind> for String {
fn from(e: FileOperationPatternKind) -> Self {
match e {
FileOperationPatternKind::File => "file".to_string(),
FileOperationPatternKind::Folder => "folder".to_string(),
}
}
}
impl TryFrom<String> for FileOperationPatternKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"file" => Ok(FileOperationPatternKind::File),
"folder" => Ok(FileOperationPatternKind::Folder),
_ => Err(format!("Invalid FileOperationPatternKind: {v}")),
}
}
}
impl fmt::Display for FileOperationPatternKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl FileOperationPatternKind {
pub fn as_str(&self) -> &str {
match self {
FileOperationPatternKind::File => "file",
FileOperationPatternKind::Folder => "folder",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum NotebookCellKind {
Markup,
Code,
}
impl From<NotebookCellKind> for u32 {
fn from(e: NotebookCellKind) -> Self {
match e {
NotebookCellKind::Markup => 1u32,
NotebookCellKind::Code => 2u32,
}
}
}
impl TryFrom<u32> for NotebookCellKind {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(NotebookCellKind::Markup),
2u32 => Ok(NotebookCellKind::Code),
_ => Err(format!("Invalid NotebookCellKind: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum ResourceOperationKind {
Create,
Rename,
Delete,
}
impl From<ResourceOperationKind> for String {
fn from(e: ResourceOperationKind) -> Self {
match e {
ResourceOperationKind::Create => "create".to_string(),
ResourceOperationKind::Rename => "rename".to_string(),
ResourceOperationKind::Delete => "delete".to_string(),
}
}
}
impl TryFrom<String> for ResourceOperationKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"create" => Ok(ResourceOperationKind::Create),
"rename" => Ok(ResourceOperationKind::Rename),
"delete" => Ok(ResourceOperationKind::Delete),
_ => Err(format!("Invalid ResourceOperationKind: {v}")),
}
}
}
impl fmt::Display for ResourceOperationKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl ResourceOperationKind {
pub fn as_str(&self) -> &str {
match self {
ResourceOperationKind::Create => "create",
ResourceOperationKind::Rename => "rename",
ResourceOperationKind::Delete => "delete",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum FailureHandlingKind {
Abort,
Transactional,
TextOnlyTransactional,
Undo,
}
impl From<FailureHandlingKind> for String {
fn from(e: FailureHandlingKind) -> Self {
match e {
FailureHandlingKind::Abort => "abort".to_string(),
FailureHandlingKind::Transactional => "transactional".to_string(),
FailureHandlingKind::TextOnlyTransactional => {
"textOnlyTransactional".to_string()
}
FailureHandlingKind::Undo => "undo".to_string(),
}
}
}
impl TryFrom<String> for FailureHandlingKind {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"abort" => Ok(FailureHandlingKind::Abort),
"transactional" => Ok(FailureHandlingKind::Transactional),
"textOnlyTransactional" => Ok(FailureHandlingKind::TextOnlyTransactional),
"undo" => Ok(FailureHandlingKind::Undo),
_ => Err(format!("Invalid FailureHandlingKind: {v}")),
}
}
}
impl fmt::Display for FailureHandlingKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl FailureHandlingKind {
pub fn as_str(&self) -> &str {
match self {
FailureHandlingKind::Abort => "abort",
FailureHandlingKind::Transactional => "transactional",
FailureHandlingKind::TextOnlyTransactional => "textOnlyTransactional",
FailureHandlingKind::Undo => "undo",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "u32", try_from = "u32")]
pub enum PrepareSupportDefaultBehavior {
Identifier,
}
impl From<PrepareSupportDefaultBehavior> for u32 {
fn from(e: PrepareSupportDefaultBehavior) -> Self {
match e {
PrepareSupportDefaultBehavior::Identifier => 1u32,
}
}
}
impl TryFrom<u32> for PrepareSupportDefaultBehavior {
type Error = String;
fn try_from(v: u32) -> Result<Self, <Self as TryFrom<u32>>::Error> {
match v {
1u32 => Ok(PrepareSupportDefaultBehavior::Identifier),
_ => Err(format!("Invalid PrepareSupportDefaultBehavior: {v}")),
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize, Copy)]
#[serde(into = "String", try_from = "String")]
pub enum TokenFormat {
Relative,
}
impl From<TokenFormat> for String {
fn from(e: TokenFormat) -> Self {
match e {
TokenFormat::Relative => "relative".to_string(),
}
}
}
impl TryFrom<String> for TokenFormat {
type Error = String;
fn try_from(v: String) -> Result<Self, <Self as TryFrom<String>>::Error> {
match v.as_str() {
"relative" => Ok(TokenFormat::Relative),
_ => Err(format!("Invalid TokenFormat: {v}")),
}
}
}
impl fmt::Display for TokenFormat {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = (*self).into();
write!(f, "{s}")
}
}
impl TokenFormat {
pub fn as_str(&self) -> &str {
match self {
TokenFormat::Relative => "relative",
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum LspRequestMethod {
TextDocumentImplementation,
TextDocumentTypeDefinition,
WorkspaceWorkspaceFolders,
WorkspaceConfiguration,
TextDocumentDocumentColor,
TextDocumentColorPresentation,
TextDocumentFoldingRange,
WorkspaceFoldingRangeRefresh,
TextDocumentDeclaration,
TextDocumentSelectionRange,
WindowWorkDoneProgressCreate,
TextDocumentPrepareCallHierarchy,
CallHierarchyIncomingCalls,
CallHierarchyOutgoingCalls,
TextDocumentSemanticTokensFull,
TextDocumentSemanticTokensFullDelta,
TextDocumentSemanticTokensRange,
WorkspaceSemanticTokensRefresh,
WindowShowDocument,
TextDocumentLinkedEditingRange,
WorkspaceWillCreateFiles,
WorkspaceWillRenameFiles,
WorkspaceWillDeleteFiles,
TextDocumentMoniker,
TextDocumentPrepareTypeHierarchy,
TypeHierarchySupertypes,
TypeHierarchySubtypes,
TextDocumentInlineValue,
WorkspaceInlineValueRefresh,
TextDocumentInlayHint,
InlayHintResolve,
WorkspaceInlayHintRefresh,
TextDocumentDiagnostic,
WorkspaceDiagnostic,
WorkspaceDiagnosticRefresh,
TextDocumentInlineCompletion,
WorkspaceTextDocumentContent,
WorkspaceTextDocumentContentRefresh,
ClientRegisterCapability,
ClientUnregisterCapability,
Initialize,
Shutdown,
WindowShowMessageRequest,
TextDocumentWillSaveWaitUntil,
TextDocumentCompletion,
CompletionItemResolve,
TextDocumentHover,
TextDocumentSignatureHelp,
TextDocumentDefinition,
TextDocumentReferences,
TextDocumentDocumentHighlight,
TextDocumentDocumentSymbol,
TextDocumentCodeAction,
CodeActionResolve,
WorkspaceSymbol,
WorkspaceSymbolResolve,
TextDocumentCodeLens,
CodeLensResolve,
WorkspaceCodeLensRefresh,
TextDocumentDocumentLink,
DocumentLinkResolve,
TextDocumentFormatting,
TextDocumentRangeFormatting,
TextDocumentRangesFormatting,
TextDocumentOnTypeFormatting,
TextDocumentRename,
TextDocumentPrepareRename,
WorkspaceExecuteCommand,
WorkspaceApplyEdit,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<LspRequestMethod> for String {
fn from(e: LspRequestMethod) -> Self {
match e {
LspRequestMethod::TextDocumentImplementation => {
"textDocument/implementation".to_string()
}
LspRequestMethod::TextDocumentTypeDefinition => {
"textDocument/typeDefinition".to_string()
}
LspRequestMethod::WorkspaceWorkspaceFolders => {
"workspace/workspaceFolders".to_string()
}
LspRequestMethod::WorkspaceConfiguration => {
"workspace/configuration".to_string()
}
LspRequestMethod::TextDocumentDocumentColor => {
"textDocument/documentColor".to_string()
}
LspRequestMethod::TextDocumentColorPresentation => {
"textDocument/colorPresentation".to_string()
}
LspRequestMethod::TextDocumentFoldingRange => {
"textDocument/foldingRange".to_string()
}
LspRequestMethod::WorkspaceFoldingRangeRefresh => {
"workspace/foldingRange/refresh".to_string()
}
LspRequestMethod::TextDocumentDeclaration => {
"textDocument/declaration".to_string()
}
LspRequestMethod::TextDocumentSelectionRange => {
"textDocument/selectionRange".to_string()
}
LspRequestMethod::WindowWorkDoneProgressCreate => {
"window/workDoneProgress/create".to_string()
}
LspRequestMethod::TextDocumentPrepareCallHierarchy => {
"textDocument/prepareCallHierarchy".to_string()
}
LspRequestMethod::CallHierarchyIncomingCalls => {
"callHierarchy/incomingCalls".to_string()
}
LspRequestMethod::CallHierarchyOutgoingCalls => {
"callHierarchy/outgoingCalls".to_string()
}
LspRequestMethod::TextDocumentSemanticTokensFull => {
"textDocument/semanticTokens/full".to_string()
}
LspRequestMethod::TextDocumentSemanticTokensFullDelta => {
"textDocument/semanticTokens/full/delta".to_string()
}
LspRequestMethod::TextDocumentSemanticTokensRange => {
"textDocument/semanticTokens/range".to_string()
}
LspRequestMethod::WorkspaceSemanticTokensRefresh => {
"workspace/semanticTokens/refresh".to_string()
}
LspRequestMethod::WindowShowDocument => "window/showDocument".to_string(),
LspRequestMethod::TextDocumentLinkedEditingRange => {
"textDocument/linkedEditingRange".to_string()
}
LspRequestMethod::WorkspaceWillCreateFiles => {
"workspace/willCreateFiles".to_string()
}
LspRequestMethod::WorkspaceWillRenameFiles => {
"workspace/willRenameFiles".to_string()
}
LspRequestMethod::WorkspaceWillDeleteFiles => {
"workspace/willDeleteFiles".to_string()
}
LspRequestMethod::TextDocumentMoniker => "textDocument/moniker".to_string(),
LspRequestMethod::TextDocumentPrepareTypeHierarchy => {
"textDocument/prepareTypeHierarchy".to_string()
}
LspRequestMethod::TypeHierarchySupertypes => {
"typeHierarchy/supertypes".to_string()
}
LspRequestMethod::TypeHierarchySubtypes => {
"typeHierarchy/subtypes".to_string()
}
LspRequestMethod::TextDocumentInlineValue => {
"textDocument/inlineValue".to_string()
}
LspRequestMethod::WorkspaceInlineValueRefresh => {
"workspace/inlineValue/refresh".to_string()
}
LspRequestMethod::TextDocumentInlayHint => {
"textDocument/inlayHint".to_string()
}
LspRequestMethod::InlayHintResolve => "inlayHint/resolve".to_string(),
LspRequestMethod::WorkspaceInlayHintRefresh => {
"workspace/inlayHint/refresh".to_string()
}
LspRequestMethod::TextDocumentDiagnostic => {
"textDocument/diagnostic".to_string()
}
LspRequestMethod::WorkspaceDiagnostic => "workspace/diagnostic".to_string(),
LspRequestMethod::WorkspaceDiagnosticRefresh => {
"workspace/diagnostic/refresh".to_string()
}
LspRequestMethod::TextDocumentInlineCompletion => {
"textDocument/inlineCompletion".to_string()
}
LspRequestMethod::WorkspaceTextDocumentContent => {
"workspace/textDocumentContent".to_string()
}
LspRequestMethod::WorkspaceTextDocumentContentRefresh => {
"workspace/textDocumentContent/refresh".to_string()
}
LspRequestMethod::ClientRegisterCapability => {
"client/registerCapability".to_string()
}
LspRequestMethod::ClientUnregisterCapability => {
"client/unregisterCapability".to_string()
}
LspRequestMethod::Initialize => "initialize".to_string(),
LspRequestMethod::Shutdown => "shutdown".to_string(),
LspRequestMethod::WindowShowMessageRequest => {
"window/showMessageRequest".to_string()
}
LspRequestMethod::TextDocumentWillSaveWaitUntil => {
"textDocument/willSaveWaitUntil".to_string()
}
LspRequestMethod::TextDocumentCompletion => {
"textDocument/completion".to_string()
}
LspRequestMethod::CompletionItemResolve => {
"completionItem/resolve".to_string()
}
LspRequestMethod::TextDocumentHover => "textDocument/hover".to_string(),
LspRequestMethod::TextDocumentSignatureHelp => {
"textDocument/signatureHelp".to_string()
}
LspRequestMethod::TextDocumentDefinition => {
"textDocument/definition".to_string()
}
LspRequestMethod::TextDocumentReferences => {
"textDocument/references".to_string()
}
LspRequestMethod::TextDocumentDocumentHighlight => {
"textDocument/documentHighlight".to_string()
}
LspRequestMethod::TextDocumentDocumentSymbol => {
"textDocument/documentSymbol".to_string()
}
LspRequestMethod::TextDocumentCodeAction => {
"textDocument/codeAction".to_string()
}
LspRequestMethod::CodeActionResolve => "codeAction/resolve".to_string(),
LspRequestMethod::WorkspaceSymbol => "workspace/symbol".to_string(),
LspRequestMethod::WorkspaceSymbolResolve => {
"workspaceSymbol/resolve".to_string()
}
LspRequestMethod::TextDocumentCodeLens => "textDocument/codeLens".to_string(),
LspRequestMethod::CodeLensResolve => "codeLens/resolve".to_string(),
LspRequestMethod::WorkspaceCodeLensRefresh => {
"workspace/codeLens/refresh".to_string()
}
LspRequestMethod::TextDocumentDocumentLink => {
"textDocument/documentLink".to_string()
}
LspRequestMethod::DocumentLinkResolve => "documentLink/resolve".to_string(),
LspRequestMethod::TextDocumentFormatting => {
"textDocument/formatting".to_string()
}
LspRequestMethod::TextDocumentRangeFormatting => {
"textDocument/rangeFormatting".to_string()
}
LspRequestMethod::TextDocumentRangesFormatting => {
"textDocument/rangesFormatting".to_string()
}
LspRequestMethod::TextDocumentOnTypeFormatting => {
"textDocument/onTypeFormatting".to_string()
}
LspRequestMethod::TextDocumentRename => "textDocument/rename".to_string(),
LspRequestMethod::TextDocumentPrepareRename => {
"textDocument/prepareRename".to_string()
}
LspRequestMethod::WorkspaceExecuteCommand => {
"workspace/executeCommand".to_string()
}
LspRequestMethod::WorkspaceApplyEdit => "workspace/applyEdit".to_string(),
LspRequestMethod::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for LspRequestMethod {
fn from(v: String) -> Self {
match v.as_str() {
"textDocument/implementation" => LspRequestMethod::TextDocumentImplementation,
"textDocument/typeDefinition" => LspRequestMethod::TextDocumentTypeDefinition,
"workspace/workspaceFolders" => LspRequestMethod::WorkspaceWorkspaceFolders,
"workspace/configuration" => LspRequestMethod::WorkspaceConfiguration,
"textDocument/documentColor" => LspRequestMethod::TextDocumentDocumentColor,
"textDocument/colorPresentation" => {
LspRequestMethod::TextDocumentColorPresentation
}
"textDocument/foldingRange" => LspRequestMethod::TextDocumentFoldingRange,
"workspace/foldingRange/refresh" => {
LspRequestMethod::WorkspaceFoldingRangeRefresh
}
"textDocument/declaration" => LspRequestMethod::TextDocumentDeclaration,
"textDocument/selectionRange" => LspRequestMethod::TextDocumentSelectionRange,
"window/workDoneProgress/create" => {
LspRequestMethod::WindowWorkDoneProgressCreate
}
"textDocument/prepareCallHierarchy" => {
LspRequestMethod::TextDocumentPrepareCallHierarchy
}
"callHierarchy/incomingCalls" => LspRequestMethod::CallHierarchyIncomingCalls,
"callHierarchy/outgoingCalls" => LspRequestMethod::CallHierarchyOutgoingCalls,
"textDocument/semanticTokens/full" => {
LspRequestMethod::TextDocumentSemanticTokensFull
}
"textDocument/semanticTokens/full/delta" => {
LspRequestMethod::TextDocumentSemanticTokensFullDelta
}
"textDocument/semanticTokens/range" => {
LspRequestMethod::TextDocumentSemanticTokensRange
}
"workspace/semanticTokens/refresh" => {
LspRequestMethod::WorkspaceSemanticTokensRefresh
}
"window/showDocument" => LspRequestMethod::WindowShowDocument,
"textDocument/linkedEditingRange" => {
LspRequestMethod::TextDocumentLinkedEditingRange
}
"workspace/willCreateFiles" => LspRequestMethod::WorkspaceWillCreateFiles,
"workspace/willRenameFiles" => LspRequestMethod::WorkspaceWillRenameFiles,
"workspace/willDeleteFiles" => LspRequestMethod::WorkspaceWillDeleteFiles,
"textDocument/moniker" => LspRequestMethod::TextDocumentMoniker,
"textDocument/prepareTypeHierarchy" => {
LspRequestMethod::TextDocumentPrepareTypeHierarchy
}
"typeHierarchy/supertypes" => LspRequestMethod::TypeHierarchySupertypes,
"typeHierarchy/subtypes" => LspRequestMethod::TypeHierarchySubtypes,
"textDocument/inlineValue" => LspRequestMethod::TextDocumentInlineValue,
"workspace/inlineValue/refresh" => {
LspRequestMethod::WorkspaceInlineValueRefresh
}
"textDocument/inlayHint" => LspRequestMethod::TextDocumentInlayHint,
"inlayHint/resolve" => LspRequestMethod::InlayHintResolve,
"workspace/inlayHint/refresh" => LspRequestMethod::WorkspaceInlayHintRefresh,
"textDocument/diagnostic" => LspRequestMethod::TextDocumentDiagnostic,
"workspace/diagnostic" => LspRequestMethod::WorkspaceDiagnostic,
"workspace/diagnostic/refresh" => {
LspRequestMethod::WorkspaceDiagnosticRefresh
}
"textDocument/inlineCompletion" => {
LspRequestMethod::TextDocumentInlineCompletion
}
"workspace/textDocumentContent" => {
LspRequestMethod::WorkspaceTextDocumentContent
}
"workspace/textDocumentContent/refresh" => {
LspRequestMethod::WorkspaceTextDocumentContentRefresh
}
"client/registerCapability" => LspRequestMethod::ClientRegisterCapability,
"client/unregisterCapability" => LspRequestMethod::ClientUnregisterCapability,
"initialize" => LspRequestMethod::Initialize,
"shutdown" => LspRequestMethod::Shutdown,
"window/showMessageRequest" => LspRequestMethod::WindowShowMessageRequest,
"textDocument/willSaveWaitUntil" => {
LspRequestMethod::TextDocumentWillSaveWaitUntil
}
"textDocument/completion" => LspRequestMethod::TextDocumentCompletion,
"completionItem/resolve" => LspRequestMethod::CompletionItemResolve,
"textDocument/hover" => LspRequestMethod::TextDocumentHover,
"textDocument/signatureHelp" => LspRequestMethod::TextDocumentSignatureHelp,
"textDocument/definition" => LspRequestMethod::TextDocumentDefinition,
"textDocument/references" => LspRequestMethod::TextDocumentReferences,
"textDocument/documentHighlight" => {
LspRequestMethod::TextDocumentDocumentHighlight
}
"textDocument/documentSymbol" => LspRequestMethod::TextDocumentDocumentSymbol,
"textDocument/codeAction" => LspRequestMethod::TextDocumentCodeAction,
"codeAction/resolve" => LspRequestMethod::CodeActionResolve,
"workspace/symbol" => LspRequestMethod::WorkspaceSymbol,
"workspaceSymbol/resolve" => LspRequestMethod::WorkspaceSymbolResolve,
"textDocument/codeLens" => LspRequestMethod::TextDocumentCodeLens,
"codeLens/resolve" => LspRequestMethod::CodeLensResolve,
"workspace/codeLens/refresh" => LspRequestMethod::WorkspaceCodeLensRefresh,
"textDocument/documentLink" => LspRequestMethod::TextDocumentDocumentLink,
"documentLink/resolve" => LspRequestMethod::DocumentLinkResolve,
"textDocument/formatting" => LspRequestMethod::TextDocumentFormatting,
"textDocument/rangeFormatting" => {
LspRequestMethod::TextDocumentRangeFormatting
}
"textDocument/rangesFormatting" => {
LspRequestMethod::TextDocumentRangesFormatting
}
"textDocument/onTypeFormatting" => {
LspRequestMethod::TextDocumentOnTypeFormatting
}
"textDocument/rename" => LspRequestMethod::TextDocumentRename,
"textDocument/prepareRename" => LspRequestMethod::TextDocumentPrepareRename,
"workspace/executeCommand" => LspRequestMethod::WorkspaceExecuteCommand,
"workspace/applyEdit" => LspRequestMethod::WorkspaceApplyEdit,
_ => LspRequestMethod::Custom(Cow::Owned(v)),
}
}
}
impl LspRequestMethod {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for LspRequestMethod {
fn from(s: &'static str) -> Self {
match s {
"textDocument/implementation" => LspRequestMethod::TextDocumentImplementation,
"textDocument/typeDefinition" => LspRequestMethod::TextDocumentTypeDefinition,
"workspace/workspaceFolders" => LspRequestMethod::WorkspaceWorkspaceFolders,
"workspace/configuration" => LspRequestMethod::WorkspaceConfiguration,
"textDocument/documentColor" => LspRequestMethod::TextDocumentDocumentColor,
"textDocument/colorPresentation" => {
LspRequestMethod::TextDocumentColorPresentation
}
"textDocument/foldingRange" => LspRequestMethod::TextDocumentFoldingRange,
"workspace/foldingRange/refresh" => {
LspRequestMethod::WorkspaceFoldingRangeRefresh
}
"textDocument/declaration" => LspRequestMethod::TextDocumentDeclaration,
"textDocument/selectionRange" => LspRequestMethod::TextDocumentSelectionRange,
"window/workDoneProgress/create" => {
LspRequestMethod::WindowWorkDoneProgressCreate
}
"textDocument/prepareCallHierarchy" => {
LspRequestMethod::TextDocumentPrepareCallHierarchy
}
"callHierarchy/incomingCalls" => LspRequestMethod::CallHierarchyIncomingCalls,
"callHierarchy/outgoingCalls" => LspRequestMethod::CallHierarchyOutgoingCalls,
"textDocument/semanticTokens/full" => {
LspRequestMethod::TextDocumentSemanticTokensFull
}
"textDocument/semanticTokens/full/delta" => {
LspRequestMethod::TextDocumentSemanticTokensFullDelta
}
"textDocument/semanticTokens/range" => {
LspRequestMethod::TextDocumentSemanticTokensRange
}
"workspace/semanticTokens/refresh" => {
LspRequestMethod::WorkspaceSemanticTokensRefresh
}
"window/showDocument" => LspRequestMethod::WindowShowDocument,
"textDocument/linkedEditingRange" => {
LspRequestMethod::TextDocumentLinkedEditingRange
}
"workspace/willCreateFiles" => LspRequestMethod::WorkspaceWillCreateFiles,
"workspace/willRenameFiles" => LspRequestMethod::WorkspaceWillRenameFiles,
"workspace/willDeleteFiles" => LspRequestMethod::WorkspaceWillDeleteFiles,
"textDocument/moniker" => LspRequestMethod::TextDocumentMoniker,
"textDocument/prepareTypeHierarchy" => {
LspRequestMethod::TextDocumentPrepareTypeHierarchy
}
"typeHierarchy/supertypes" => LspRequestMethod::TypeHierarchySupertypes,
"typeHierarchy/subtypes" => LspRequestMethod::TypeHierarchySubtypes,
"textDocument/inlineValue" => LspRequestMethod::TextDocumentInlineValue,
"workspace/inlineValue/refresh" => {
LspRequestMethod::WorkspaceInlineValueRefresh
}
"textDocument/inlayHint" => LspRequestMethod::TextDocumentInlayHint,
"inlayHint/resolve" => LspRequestMethod::InlayHintResolve,
"workspace/inlayHint/refresh" => LspRequestMethod::WorkspaceInlayHintRefresh,
"textDocument/diagnostic" => LspRequestMethod::TextDocumentDiagnostic,
"workspace/diagnostic" => LspRequestMethod::WorkspaceDiagnostic,
"workspace/diagnostic/refresh" => {
LspRequestMethod::WorkspaceDiagnosticRefresh
}
"textDocument/inlineCompletion" => {
LspRequestMethod::TextDocumentInlineCompletion
}
"workspace/textDocumentContent" => {
LspRequestMethod::WorkspaceTextDocumentContent
}
"workspace/textDocumentContent/refresh" => {
LspRequestMethod::WorkspaceTextDocumentContentRefresh
}
"client/registerCapability" => LspRequestMethod::ClientRegisterCapability,
"client/unregisterCapability" => LspRequestMethod::ClientUnregisterCapability,
"initialize" => LspRequestMethod::Initialize,
"shutdown" => LspRequestMethod::Shutdown,
"window/showMessageRequest" => LspRequestMethod::WindowShowMessageRequest,
"textDocument/willSaveWaitUntil" => {
LspRequestMethod::TextDocumentWillSaveWaitUntil
}
"textDocument/completion" => LspRequestMethod::TextDocumentCompletion,
"completionItem/resolve" => LspRequestMethod::CompletionItemResolve,
"textDocument/hover" => LspRequestMethod::TextDocumentHover,
"textDocument/signatureHelp" => LspRequestMethod::TextDocumentSignatureHelp,
"textDocument/definition" => LspRequestMethod::TextDocumentDefinition,
"textDocument/references" => LspRequestMethod::TextDocumentReferences,
"textDocument/documentHighlight" => {
LspRequestMethod::TextDocumentDocumentHighlight
}
"textDocument/documentSymbol" => LspRequestMethod::TextDocumentDocumentSymbol,
"textDocument/codeAction" => LspRequestMethod::TextDocumentCodeAction,
"codeAction/resolve" => LspRequestMethod::CodeActionResolve,
"workspace/symbol" => LspRequestMethod::WorkspaceSymbol,
"workspaceSymbol/resolve" => LspRequestMethod::WorkspaceSymbolResolve,
"textDocument/codeLens" => LspRequestMethod::TextDocumentCodeLens,
"codeLens/resolve" => LspRequestMethod::CodeLensResolve,
"workspace/codeLens/refresh" => LspRequestMethod::WorkspaceCodeLensRefresh,
"textDocument/documentLink" => LspRequestMethod::TextDocumentDocumentLink,
"documentLink/resolve" => LspRequestMethod::DocumentLinkResolve,
"textDocument/formatting" => LspRequestMethod::TextDocumentFormatting,
"textDocument/rangeFormatting" => {
LspRequestMethod::TextDocumentRangeFormatting
}
"textDocument/rangesFormatting" => {
LspRequestMethod::TextDocumentRangesFormatting
}
"textDocument/onTypeFormatting" => {
LspRequestMethod::TextDocumentOnTypeFormatting
}
"textDocument/rename" => LspRequestMethod::TextDocumentRename,
"textDocument/prepareRename" => LspRequestMethod::TextDocumentPrepareRename,
"workspace/executeCommand" => LspRequestMethod::WorkspaceExecuteCommand,
"workspace/applyEdit" => LspRequestMethod::WorkspaceApplyEdit,
_ => LspRequestMethod::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for LspRequestMethod {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl LspRequestMethod {
pub fn as_str(&self) -> &str {
match self {
LspRequestMethod::TextDocumentImplementation => "textDocument/implementation",
LspRequestMethod::TextDocumentTypeDefinition => "textDocument/typeDefinition",
LspRequestMethod::WorkspaceWorkspaceFolders => "workspace/workspaceFolders",
LspRequestMethod::WorkspaceConfiguration => "workspace/configuration",
LspRequestMethod::TextDocumentDocumentColor => "textDocument/documentColor",
LspRequestMethod::TextDocumentColorPresentation => {
"textDocument/colorPresentation"
}
LspRequestMethod::TextDocumentFoldingRange => "textDocument/foldingRange",
LspRequestMethod::WorkspaceFoldingRangeRefresh => {
"workspace/foldingRange/refresh"
}
LspRequestMethod::TextDocumentDeclaration => "textDocument/declaration",
LspRequestMethod::TextDocumentSelectionRange => "textDocument/selectionRange",
LspRequestMethod::WindowWorkDoneProgressCreate => {
"window/workDoneProgress/create"
}
LspRequestMethod::TextDocumentPrepareCallHierarchy => {
"textDocument/prepareCallHierarchy"
}
LspRequestMethod::CallHierarchyIncomingCalls => "callHierarchy/incomingCalls",
LspRequestMethod::CallHierarchyOutgoingCalls => "callHierarchy/outgoingCalls",
LspRequestMethod::TextDocumentSemanticTokensFull => {
"textDocument/semanticTokens/full"
}
LspRequestMethod::TextDocumentSemanticTokensFullDelta => {
"textDocument/semanticTokens/full/delta"
}
LspRequestMethod::TextDocumentSemanticTokensRange => {
"textDocument/semanticTokens/range"
}
LspRequestMethod::WorkspaceSemanticTokensRefresh => {
"workspace/semanticTokens/refresh"
}
LspRequestMethod::WindowShowDocument => "window/showDocument",
LspRequestMethod::TextDocumentLinkedEditingRange => {
"textDocument/linkedEditingRange"
}
LspRequestMethod::WorkspaceWillCreateFiles => "workspace/willCreateFiles",
LspRequestMethod::WorkspaceWillRenameFiles => "workspace/willRenameFiles",
LspRequestMethod::WorkspaceWillDeleteFiles => "workspace/willDeleteFiles",
LspRequestMethod::TextDocumentMoniker => "textDocument/moniker",
LspRequestMethod::TextDocumentPrepareTypeHierarchy => {
"textDocument/prepareTypeHierarchy"
}
LspRequestMethod::TypeHierarchySupertypes => "typeHierarchy/supertypes",
LspRequestMethod::TypeHierarchySubtypes => "typeHierarchy/subtypes",
LspRequestMethod::TextDocumentInlineValue => "textDocument/inlineValue",
LspRequestMethod::WorkspaceInlineValueRefresh => {
"workspace/inlineValue/refresh"
}
LspRequestMethod::TextDocumentInlayHint => "textDocument/inlayHint",
LspRequestMethod::InlayHintResolve => "inlayHint/resolve",
LspRequestMethod::WorkspaceInlayHintRefresh => "workspace/inlayHint/refresh",
LspRequestMethod::TextDocumentDiagnostic => "textDocument/diagnostic",
LspRequestMethod::WorkspaceDiagnostic => "workspace/diagnostic",
LspRequestMethod::WorkspaceDiagnosticRefresh => {
"workspace/diagnostic/refresh"
}
LspRequestMethod::TextDocumentInlineCompletion => {
"textDocument/inlineCompletion"
}
LspRequestMethod::WorkspaceTextDocumentContent => {
"workspace/textDocumentContent"
}
LspRequestMethod::WorkspaceTextDocumentContentRefresh => {
"workspace/textDocumentContent/refresh"
}
LspRequestMethod::ClientRegisterCapability => "client/registerCapability",
LspRequestMethod::ClientUnregisterCapability => "client/unregisterCapability",
LspRequestMethod::Initialize => "initialize",
LspRequestMethod::Shutdown => "shutdown",
LspRequestMethod::WindowShowMessageRequest => "window/showMessageRequest",
LspRequestMethod::TextDocumentWillSaveWaitUntil => {
"textDocument/willSaveWaitUntil"
}
LspRequestMethod::TextDocumentCompletion => "textDocument/completion",
LspRequestMethod::CompletionItemResolve => "completionItem/resolve",
LspRequestMethod::TextDocumentHover => "textDocument/hover",
LspRequestMethod::TextDocumentSignatureHelp => "textDocument/signatureHelp",
LspRequestMethod::TextDocumentDefinition => "textDocument/definition",
LspRequestMethod::TextDocumentReferences => "textDocument/references",
LspRequestMethod::TextDocumentDocumentHighlight => {
"textDocument/documentHighlight"
}
LspRequestMethod::TextDocumentDocumentSymbol => "textDocument/documentSymbol",
LspRequestMethod::TextDocumentCodeAction => "textDocument/codeAction",
LspRequestMethod::CodeActionResolve => "codeAction/resolve",
LspRequestMethod::WorkspaceSymbol => "workspace/symbol",
LspRequestMethod::WorkspaceSymbolResolve => "workspaceSymbol/resolve",
LspRequestMethod::TextDocumentCodeLens => "textDocument/codeLens",
LspRequestMethod::CodeLensResolve => "codeLens/resolve",
LspRequestMethod::WorkspaceCodeLensRefresh => "workspace/codeLens/refresh",
LspRequestMethod::TextDocumentDocumentLink => "textDocument/documentLink",
LspRequestMethod::DocumentLinkResolve => "documentLink/resolve",
LspRequestMethod::TextDocumentFormatting => "textDocument/formatting",
LspRequestMethod::TextDocumentRangeFormatting => {
"textDocument/rangeFormatting"
}
LspRequestMethod::TextDocumentRangesFormatting => {
"textDocument/rangesFormatting"
}
LspRequestMethod::TextDocumentOnTypeFormatting => {
"textDocument/onTypeFormatting"
}
LspRequestMethod::TextDocumentRename => "textDocument/rename",
LspRequestMethod::TextDocumentPrepareRename => "textDocument/prepareRename",
LspRequestMethod::WorkspaceExecuteCommand => "workspace/executeCommand",
LspRequestMethod::WorkspaceApplyEdit => "workspace/applyEdit",
LspRequestMethod::Custom(any) => any,
}
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone, Serialize, Deserialize)]
#[serde(into = "String", from = "String")]
pub enum LspNotificationMethod {
WorkspaceDidChangeWorkspaceFolders,
WindowWorkDoneProgressCancel,
WorkspaceDidCreateFiles,
WorkspaceDidRenameFiles,
WorkspaceDidDeleteFiles,
NotebookDocumentDidOpen,
NotebookDocumentDidChange,
NotebookDocumentDidSave,
NotebookDocumentDidClose,
Initialized,
Exit,
WorkspaceDidChangeConfiguration,
WindowShowMessage,
WindowLogMessage,
TelemetryEvent,
TextDocumentDidOpen,
TextDocumentDidChange,
TextDocumentDidClose,
TextDocumentDidSave,
TextDocumentWillSave,
WorkspaceDidChangeWatchedFiles,
TextDocumentPublishDiagnostics,
SetTrace,
LogTrace,
CancelRequest,
Progress,
#[serde(untagged)]
Custom(Cow<'static, str>),
}
impl From<LspNotificationMethod> for String {
fn from(e: LspNotificationMethod) -> Self {
match e {
LspNotificationMethod::WorkspaceDidChangeWorkspaceFolders => {
"workspace/didChangeWorkspaceFolders".to_string()
}
LspNotificationMethod::WindowWorkDoneProgressCancel => {
"window/workDoneProgress/cancel".to_string()
}
LspNotificationMethod::WorkspaceDidCreateFiles => {
"workspace/didCreateFiles".to_string()
}
LspNotificationMethod::WorkspaceDidRenameFiles => {
"workspace/didRenameFiles".to_string()
}
LspNotificationMethod::WorkspaceDidDeleteFiles => {
"workspace/didDeleteFiles".to_string()
}
LspNotificationMethod::NotebookDocumentDidOpen => {
"notebookDocument/didOpen".to_string()
}
LspNotificationMethod::NotebookDocumentDidChange => {
"notebookDocument/didChange".to_string()
}
LspNotificationMethod::NotebookDocumentDidSave => {
"notebookDocument/didSave".to_string()
}
LspNotificationMethod::NotebookDocumentDidClose => {
"notebookDocument/didClose".to_string()
}
LspNotificationMethod::Initialized => "initialized".to_string(),
LspNotificationMethod::Exit => "exit".to_string(),
LspNotificationMethod::WorkspaceDidChangeConfiguration => {
"workspace/didChangeConfiguration".to_string()
}
LspNotificationMethod::WindowShowMessage => "window/showMessage".to_string(),
LspNotificationMethod::WindowLogMessage => "window/logMessage".to_string(),
LspNotificationMethod::TelemetryEvent => "telemetry/event".to_string(),
LspNotificationMethod::TextDocumentDidOpen => {
"textDocument/didOpen".to_string()
}
LspNotificationMethod::TextDocumentDidChange => {
"textDocument/didChange".to_string()
}
LspNotificationMethod::TextDocumentDidClose => {
"textDocument/didClose".to_string()
}
LspNotificationMethod::TextDocumentDidSave => {
"textDocument/didSave".to_string()
}
LspNotificationMethod::TextDocumentWillSave => {
"textDocument/willSave".to_string()
}
LspNotificationMethod::WorkspaceDidChangeWatchedFiles => {
"workspace/didChangeWatchedFiles".to_string()
}
LspNotificationMethod::TextDocumentPublishDiagnostics => {
"textDocument/publishDiagnostics".to_string()
}
LspNotificationMethod::SetTrace => "$/setTrace".to_string(),
LspNotificationMethod::LogTrace => "$/logTrace".to_string(),
LspNotificationMethod::CancelRequest => "$/cancelRequest".to_string(),
LspNotificationMethod::Progress => "$/progress".to_string(),
LspNotificationMethod::Custom(any) => any.into_owned(),
}
}
}
impl From<String> for LspNotificationMethod {
fn from(v: String) -> Self {
match v.as_str() {
"workspace/didChangeWorkspaceFolders" => {
LspNotificationMethod::WorkspaceDidChangeWorkspaceFolders
}
"window/workDoneProgress/cancel" => {
LspNotificationMethod::WindowWorkDoneProgressCancel
}
"workspace/didCreateFiles" => LspNotificationMethod::WorkspaceDidCreateFiles,
"workspace/didRenameFiles" => LspNotificationMethod::WorkspaceDidRenameFiles,
"workspace/didDeleteFiles" => LspNotificationMethod::WorkspaceDidDeleteFiles,
"notebookDocument/didOpen" => LspNotificationMethod::NotebookDocumentDidOpen,
"notebookDocument/didChange" => {
LspNotificationMethod::NotebookDocumentDidChange
}
"notebookDocument/didSave" => LspNotificationMethod::NotebookDocumentDidSave,
"notebookDocument/didClose" => {
LspNotificationMethod::NotebookDocumentDidClose
}
"initialized" => LspNotificationMethod::Initialized,
"exit" => LspNotificationMethod::Exit,
"workspace/didChangeConfiguration" => {
LspNotificationMethod::WorkspaceDidChangeConfiguration
}
"window/showMessage" => LspNotificationMethod::WindowShowMessage,
"window/logMessage" => LspNotificationMethod::WindowLogMessage,
"telemetry/event" => LspNotificationMethod::TelemetryEvent,
"textDocument/didOpen" => LspNotificationMethod::TextDocumentDidOpen,
"textDocument/didChange" => LspNotificationMethod::TextDocumentDidChange,
"textDocument/didClose" => LspNotificationMethod::TextDocumentDidClose,
"textDocument/didSave" => LspNotificationMethod::TextDocumentDidSave,
"textDocument/willSave" => LspNotificationMethod::TextDocumentWillSave,
"workspace/didChangeWatchedFiles" => {
LspNotificationMethod::WorkspaceDidChangeWatchedFiles
}
"textDocument/publishDiagnostics" => {
LspNotificationMethod::TextDocumentPublishDiagnostics
}
"$/setTrace" => LspNotificationMethod::SetTrace,
"$/logTrace" => LspNotificationMethod::LogTrace,
"$/cancelRequest" => LspNotificationMethod::CancelRequest,
"$/progress" => LspNotificationMethod::Progress,
_ => LspNotificationMethod::Custom(Cow::Owned(v)),
}
}
}
impl LspNotificationMethod {
pub const fn new(s: &'static str) -> Self {
Self::Custom(Cow::Borrowed(s))
}
}
impl From<&'static str> for LspNotificationMethod {
fn from(s: &'static str) -> Self {
match s {
"workspace/didChangeWorkspaceFolders" => {
LspNotificationMethod::WorkspaceDidChangeWorkspaceFolders
}
"window/workDoneProgress/cancel" => {
LspNotificationMethod::WindowWorkDoneProgressCancel
}
"workspace/didCreateFiles" => LspNotificationMethod::WorkspaceDidCreateFiles,
"workspace/didRenameFiles" => LspNotificationMethod::WorkspaceDidRenameFiles,
"workspace/didDeleteFiles" => LspNotificationMethod::WorkspaceDidDeleteFiles,
"notebookDocument/didOpen" => LspNotificationMethod::NotebookDocumentDidOpen,
"notebookDocument/didChange" => {
LspNotificationMethod::NotebookDocumentDidChange
}
"notebookDocument/didSave" => LspNotificationMethod::NotebookDocumentDidSave,
"notebookDocument/didClose" => {
LspNotificationMethod::NotebookDocumentDidClose
}
"initialized" => LspNotificationMethod::Initialized,
"exit" => LspNotificationMethod::Exit,
"workspace/didChangeConfiguration" => {
LspNotificationMethod::WorkspaceDidChangeConfiguration
}
"window/showMessage" => LspNotificationMethod::WindowShowMessage,
"window/logMessage" => LspNotificationMethod::WindowLogMessage,
"telemetry/event" => LspNotificationMethod::TelemetryEvent,
"textDocument/didOpen" => LspNotificationMethod::TextDocumentDidOpen,
"textDocument/didChange" => LspNotificationMethod::TextDocumentDidChange,
"textDocument/didClose" => LspNotificationMethod::TextDocumentDidClose,
"textDocument/didSave" => LspNotificationMethod::TextDocumentDidSave,
"textDocument/willSave" => LspNotificationMethod::TextDocumentWillSave,
"workspace/didChangeWatchedFiles" => {
LspNotificationMethod::WorkspaceDidChangeWatchedFiles
}
"textDocument/publishDiagnostics" => {
LspNotificationMethod::TextDocumentPublishDiagnostics
}
"$/setTrace" => LspNotificationMethod::SetTrace,
"$/logTrace" => LspNotificationMethod::LogTrace,
"$/cancelRequest" => LspNotificationMethod::CancelRequest,
"$/progress" => LspNotificationMethod::Progress,
_ => LspNotificationMethod::Custom(Cow::Borrowed(s)),
}
}
}
impl fmt::Display for LspNotificationMethod {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s: String = self.clone().into();
write!(f, "{s}")
}
}
impl LspNotificationMethod {
pub fn as_str(&self) -> &str {
match self {
LspNotificationMethod::WorkspaceDidChangeWorkspaceFolders => {
"workspace/didChangeWorkspaceFolders"
}
LspNotificationMethod::WindowWorkDoneProgressCancel => {
"window/workDoneProgress/cancel"
}
LspNotificationMethod::WorkspaceDidCreateFiles => "workspace/didCreateFiles",
LspNotificationMethod::WorkspaceDidRenameFiles => "workspace/didRenameFiles",
LspNotificationMethod::WorkspaceDidDeleteFiles => "workspace/didDeleteFiles",
LspNotificationMethod::NotebookDocumentDidOpen => "notebookDocument/didOpen",
LspNotificationMethod::NotebookDocumentDidChange => {
"notebookDocument/didChange"
}
LspNotificationMethod::NotebookDocumentDidSave => "notebookDocument/didSave",
LspNotificationMethod::NotebookDocumentDidClose => {
"notebookDocument/didClose"
}
LspNotificationMethod::Initialized => "initialized",
LspNotificationMethod::Exit => "exit",
LspNotificationMethod::WorkspaceDidChangeConfiguration => {
"workspace/didChangeConfiguration"
}
LspNotificationMethod::WindowShowMessage => "window/showMessage",
LspNotificationMethod::WindowLogMessage => "window/logMessage",
LspNotificationMethod::TelemetryEvent => "telemetry/event",
LspNotificationMethod::TextDocumentDidOpen => "textDocument/didOpen",
LspNotificationMethod::TextDocumentDidChange => "textDocument/didChange",
LspNotificationMethod::TextDocumentDidClose => "textDocument/didClose",
LspNotificationMethod::TextDocumentDidSave => "textDocument/didSave",
LspNotificationMethod::TextDocumentWillSave => "textDocument/willSave",
LspNotificationMethod::WorkspaceDidChangeWatchedFiles => {
"workspace/didChangeWatchedFiles"
}
LspNotificationMethod::TextDocumentPublishDiagnostics => {
"textDocument/publishDiagnostics"
}
LspNotificationMethod::SetTrace => "$/setTrace",
LspNotificationMethod::LogTrace => "$/logTrace",
LspNotificationMethod::CancelRequest => "$/cancelRequest",
LspNotificationMethod::Progress => "$/progress",
LspNotificationMethod::Custom(any) => any,
}
}
}
pub type DefinitionLink = LocationLink;
pub type LspArray = Vec<LspAny>;
pub type LspAny = serde_json::Value;
pub type DeclarationLink = LocationLink;
pub type DocumentSelector = Vec<DocumentFilter>;
pub type ChangeAnnotationIdentifier = String;
pub type LspObject = HashMap<String, LspAny>;
pub type Pattern = String;
pub type RegularExpressionEngineKind = String;
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum ActiveParameter {
Int(u32),
Null,
}
impl From<u32> for ActiveParameter {
fn from(v: u32) -> Self {
Self::Int(v)
}
}
impl From<()> for ActiveParameter {
fn from(_: ()) -> Self {
Self::Null
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum BaseUri {
WorkspaceFolder(WorkspaceFolder),
Uri(Uri),
}
impl From<WorkspaceFolder> for BaseUri {
fn from(v: WorkspaceFolder) -> Self {
Self::WorkspaceFolder(v)
}
}
impl From<Uri> for BaseUri {
fn from(v: Uri) -> Self {
Self::Uri(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum CallHierarchyProvider {
Bool(bool),
CallHierarchyOptions(CallHierarchyOptions),
CallHierarchyRegistrationOptions(CallHierarchyRegistrationOptions),
}
impl From<bool> for CallHierarchyProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<CallHierarchyOptions> for CallHierarchyProvider {
fn from(v: CallHierarchyOptions) -> Self {
Self::CallHierarchyOptions(v)
}
}
impl From<CallHierarchyRegistrationOptions> for CallHierarchyProvider {
fn from(v: CallHierarchyRegistrationOptions) -> Self {
Self::CallHierarchyRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ChangeNotifications {
String(String),
Bool(bool),
}
impl From<String> for ChangeNotifications {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for ChangeNotifications {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for ChangeNotifications {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for ChangeNotifications {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for ChangeNotifications {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<bool> for ChangeNotifications {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum ClientSemanticTokensRequestOptionsFull {
Bool(bool),
ClientSemanticTokensRequestFullDelta(ClientSemanticTokensRequestFullDelta),
}
impl From<bool> for ClientSemanticTokensRequestOptionsFull {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<ClientSemanticTokensRequestFullDelta>
for ClientSemanticTokensRequestOptionsFull {
fn from(v: ClientSemanticTokensRequestFullDelta) -> Self {
Self::ClientSemanticTokensRequestFullDelta(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum ClientSemanticTokensRequestOptionsRange {
Bool(bool),
Object(LspObject),
}
impl From<bool> for ClientSemanticTokensRequestOptionsRange {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<LspObject> for ClientSemanticTokensRequestOptionsRange {
fn from(v: LspObject) -> Self {
Self::Object(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Code {
Int(i32),
String(String),
}
impl From<i32> for Code {
fn from(v: i32) -> Self {
Self::Int(v)
}
}
impl From<String> for Code {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Code {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Code {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Code {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Code {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum CodeActionProvider {
Bool(bool),
CodeActionOptions(CodeActionOptions),
}
impl From<bool> for CodeActionProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<CodeActionOptions> for CodeActionProvider {
fn from(v: CodeActionOptions) -> Self {
Self::CodeActionOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum CodeActionResponse {
Command(Command),
CodeAction(CodeAction),
}
impl From<Command> for CodeActionResponse {
fn from(v: Command) -> Self {
Self::Command(v)
}
}
impl From<CodeAction> for CodeActionResponse {
fn from(v: CodeAction) -> Self {
Self::CodeAction(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ColorProvider {
Bool(bool),
DocumentColorOptions(DocumentColorOptions),
DocumentColorRegistrationOptions(DocumentColorRegistrationOptions),
}
impl From<bool> for ColorProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DocumentColorOptions> for ColorProvider {
fn from(v: DocumentColorOptions) -> Self {
Self::DocumentColorOptions(v)
}
}
impl From<DocumentColorRegistrationOptions> for ColorProvider {
fn from(v: DocumentColorRegistrationOptions) -> Self {
Self::DocumentColorRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum CompletionItemTextEdit {
TextEdit(TextEdit),
InsertReplaceEdit(InsertReplaceEdit),
}
impl From<TextEdit> for CompletionItemTextEdit {
fn from(v: TextEdit) -> Self {
Self::TextEdit(v)
}
}
impl From<InsertReplaceEdit> for CompletionItemTextEdit {
fn from(v: InsertReplaceEdit) -> Self {
Self::InsertReplaceEdit(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum CompletionResponse {
CompletionItemList(Vec<CompletionItem>),
CompletionList(CompletionList),
}
impl From<Vec<CompletionItem>> for CompletionResponse {
fn from(v: Vec<CompletionItem>) -> Self {
Self::CompletionItemList(v)
}
}
impl From<CompletionList> for CompletionResponse {
fn from(v: CompletionList) -> Self {
Self::CompletionList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Contents {
MarkupContent(MarkupContent),
MarkedString(MarkedString),
MarkedStringList(Vec<MarkedString>),
}
impl From<MarkupContent> for Contents {
fn from(v: MarkupContent) -> Self {
Self::MarkupContent(v)
}
}
impl From<MarkedString> for Contents {
fn from(v: MarkedString) -> Self {
Self::MarkedString(v)
}
}
impl From<Vec<MarkedString>> for Contents {
fn from(v: Vec<MarkedString>) -> Self {
Self::MarkedStringList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Declaration {
Location(Location),
LocationList(Vec<Location>),
}
impl From<Location> for Declaration {
fn from(v: Location) -> Self {
Self::Location(v)
}
}
impl From<Vec<Location>> for Declaration {
fn from(v: Vec<Location>) -> Self {
Self::LocationList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DeclarationProvider {
Bool(bool),
DeclarationOptions(DeclarationOptions),
DeclarationRegistrationOptions(DeclarationRegistrationOptions),
}
impl From<bool> for DeclarationProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DeclarationOptions> for DeclarationProvider {
fn from(v: DeclarationOptions) -> Self {
Self::DeclarationOptions(v)
}
}
impl From<DeclarationRegistrationOptions> for DeclarationProvider {
fn from(v: DeclarationRegistrationOptions) -> Self {
Self::DeclarationRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DeclarationResponse {
Declaration(Declaration),
DeclarationLinkList(Vec<DeclarationLink>),
}
impl From<Declaration> for DeclarationResponse {
fn from(v: Declaration) -> Self {
Self::Declaration(v)
}
}
impl From<Vec<DeclarationLink>> for DeclarationResponse {
fn from(v: Vec<DeclarationLink>) -> Self {
Self::DeclarationLinkList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Definition {
Location(Location),
LocationList(Vec<Location>),
}
impl From<Location> for Definition {
fn from(v: Location) -> Self {
Self::Location(v)
}
}
impl From<Vec<Location>> for Definition {
fn from(v: Vec<Location>) -> Self {
Self::LocationList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum DefinitionProvider {
Bool(bool),
DefinitionOptions(DefinitionOptions),
}
impl From<bool> for DefinitionProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DefinitionOptions> for DefinitionProvider {
fn from(v: DefinitionOptions) -> Self {
Self::DefinitionOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DefinitionResponse {
Definition(Definition),
DefinitionLinkList(Vec<DefinitionLink>),
}
impl From<Definition> for DefinitionResponse {
fn from(v: Definition) -> Self {
Self::Definition(v)
}
}
impl From<Vec<DefinitionLink>> for DefinitionResponse {
fn from(v: Vec<DefinitionLink>) -> Self {
Self::DefinitionLinkList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DiagnosticProvider {
DiagnosticOptions(DiagnosticOptions),
DiagnosticRegistrationOptions(DiagnosticRegistrationOptions),
}
impl From<DiagnosticOptions> for DiagnosticProvider {
fn from(v: DiagnosticOptions) -> Self {
Self::DiagnosticOptions(v)
}
}
impl From<DiagnosticRegistrationOptions> for DiagnosticProvider {
fn from(v: DiagnosticRegistrationOptions) -> Self {
Self::DiagnosticRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DocumentChange {
TextDocumentEdit(TextDocumentEdit),
CreateFile(CreateFile),
RenameFile(RenameFile),
DeleteFile(DeleteFile),
}
impl From<TextDocumentEdit> for DocumentChange {
fn from(v: TextDocumentEdit) -> Self {
Self::TextDocumentEdit(v)
}
}
impl From<CreateFile> for DocumentChange {
fn from(v: CreateFile) -> Self {
Self::CreateFile(v)
}
}
impl From<RenameFile> for DocumentChange {
fn from(v: RenameFile) -> Self {
Self::RenameFile(v)
}
}
impl From<DeleteFile> for DocumentChange {
fn from(v: DeleteFile) -> Self {
Self::DeleteFile(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum DocumentDiagnosticReport {
RelatedFullDocumentDiagnosticReport(RelatedFullDocumentDiagnosticReport),
RelatedUnchangedDocumentDiagnosticReport(RelatedUnchangedDocumentDiagnosticReport),
}
impl From<RelatedFullDocumentDiagnosticReport> for DocumentDiagnosticReport {
fn from(v: RelatedFullDocumentDiagnosticReport) -> Self {
Self::RelatedFullDocumentDiagnosticReport(v)
}
}
impl From<RelatedUnchangedDocumentDiagnosticReport> for DocumentDiagnosticReport {
fn from(v: RelatedUnchangedDocumentDiagnosticReport) -> Self {
Self::RelatedUnchangedDocumentDiagnosticReport(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DocumentFilter {
TextDocumentFilter(TextDocumentFilter),
NotebookCellTextDocumentFilter(NotebookCellTextDocumentFilter),
}
impl From<TextDocumentFilter> for DocumentFilter {
fn from(v: TextDocumentFilter) -> Self {
Self::TextDocumentFilter(v)
}
}
impl From<NotebookCellTextDocumentFilter> for DocumentFilter {
fn from(v: NotebookCellTextDocumentFilter) -> Self {
Self::NotebookCellTextDocumentFilter(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum DocumentFormattingProvider {
Bool(bool),
DocumentFormattingOptions(DocumentFormattingOptions),
}
impl From<bool> for DocumentFormattingProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DocumentFormattingOptions> for DocumentFormattingProvider {
fn from(v: DocumentFormattingOptions) -> Self {
Self::DocumentFormattingOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum DocumentHighlightProvider {
Bool(bool),
DocumentHighlightOptions(DocumentHighlightOptions),
}
impl From<bool> for DocumentHighlightProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DocumentHighlightOptions> for DocumentHighlightProvider {
fn from(v: DocumentHighlightOptions) -> Self {
Self::DocumentHighlightOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum DocumentRangeFormattingProvider {
Bool(bool),
DocumentRangeFormattingOptions(DocumentRangeFormattingOptions),
}
impl From<bool> for DocumentRangeFormattingProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DocumentRangeFormattingOptions> for DocumentRangeFormattingProvider {
fn from(v: DocumentRangeFormattingOptions) -> Self {
Self::DocumentRangeFormattingOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DocumentSymbolProvider {
Bool(bool),
DocumentSymbolOptions(DocumentSymbolOptions),
}
impl From<bool> for DocumentSymbolProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<DocumentSymbolOptions> for DocumentSymbolProvider {
fn from(v: DocumentSymbolOptions) -> Self {
Self::DocumentSymbolOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum DocumentSymbolResponse {
SymbolInformationList(Vec<SymbolInformation>),
DocumentSymbolList(Vec<DocumentSymbol>),
}
impl From<Vec<SymbolInformation>> for DocumentSymbolResponse {
fn from(v: Vec<SymbolInformation>) -> Self {
Self::SymbolInformationList(v)
}
}
impl From<Vec<DocumentSymbol>> for DocumentSymbolResponse {
fn from(v: Vec<DocumentSymbol>) -> Self {
Self::DocumentSymbolList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Documentation {
String(String),
MarkupContent(MarkupContent),
}
impl From<String> for Documentation {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Documentation {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Documentation {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Documentation {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Documentation {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<MarkupContent> for Documentation {
fn from(v: MarkupContent) -> Self {
Self::MarkupContent(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Edit {
TextEdit(TextEdit),
AnnotatedTextEdit(AnnotatedTextEdit),
SnippetTextEdit(SnippetTextEdit),
}
impl From<TextEdit> for Edit {
fn from(v: TextEdit) -> Self {
Self::TextEdit(v)
}
}
impl From<AnnotatedTextEdit> for Edit {
fn from(v: AnnotatedTextEdit) -> Self {
Self::AnnotatedTextEdit(v)
}
}
impl From<SnippetTextEdit> for Edit {
fn from(v: SnippetTextEdit) -> Self {
Self::SnippetTextEdit(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum EditRange {
Range(Range),
EditRangeWithInsertReplace(EditRangeWithInsertReplace),
}
impl From<Range> for EditRange {
fn from(v: Range) -> Self {
Self::Range(v)
}
}
impl From<EditRangeWithInsertReplace> for EditRange {
fn from(v: EditRangeWithInsertReplace) -> Self {
Self::EditRangeWithInsertReplace(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum FoldingRangeProvider {
Bool(bool),
FoldingRangeOptions(FoldingRangeOptions),
FoldingRangeRegistrationOptions(FoldingRangeRegistrationOptions),
}
impl From<bool> for FoldingRangeProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<FoldingRangeOptions> for FoldingRangeProvider {
fn from(v: FoldingRangeOptions) -> Self {
Self::FoldingRangeOptions(v)
}
}
impl From<FoldingRangeRegistrationOptions> for FoldingRangeProvider {
fn from(v: FoldingRangeRegistrationOptions) -> Self {
Self::FoldingRangeRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum Full {
Bool(bool),
SemanticTokensFullDelta(SemanticTokensFullDelta),
}
impl From<bool> for Full {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<SemanticTokensFullDelta> for Full {
fn from(v: SemanticTokensFullDelta) -> Self {
Self::SemanticTokensFullDelta(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum GlobPattern {
Pattern(Pattern),
RelativePattern(RelativePattern),
}
impl From<Pattern> for GlobPattern {
fn from(v: Pattern) -> Self {
Self::Pattern(v)
}
}
impl From<RelativePattern> for GlobPattern {
fn from(v: RelativePattern) -> Self {
Self::RelativePattern(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum HoverProvider {
Bool(bool),
HoverOptions(HoverOptions),
}
impl From<bool> for HoverProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<HoverOptions> for HoverProvider {
fn from(v: HoverOptions) -> Self {
Self::HoverOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Id {
Int(i32),
String(String),
}
impl From<i32> for Id {
fn from(v: i32) -> Self {
Self::Int(v)
}
}
impl From<String> for Id {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Id {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Id {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Id {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Id {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ImplementationProvider {
Bool(bool),
ImplementationOptions(ImplementationOptions),
ImplementationRegistrationOptions(ImplementationRegistrationOptions),
}
impl From<bool> for ImplementationProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<ImplementationOptions> for ImplementationProvider {
fn from(v: ImplementationOptions) -> Self {
Self::ImplementationOptions(v)
}
}
impl From<ImplementationRegistrationOptions> for ImplementationProvider {
fn from(v: ImplementationRegistrationOptions) -> Self {
Self::ImplementationRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ImplementationResponse {
Definition(Definition),
DefinitionLinkList(Vec<DefinitionLink>),
}
impl From<Definition> for ImplementationResponse {
fn from(v: Definition) -> Self {
Self::Definition(v)
}
}
impl From<Vec<DefinitionLink>> for ImplementationResponse {
fn from(v: Vec<DefinitionLink>) -> Self {
Self::DefinitionLinkList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum InlayHintProvider {
Bool(bool),
InlayHintOptions(InlayHintOptions),
InlayHintRegistrationOptions(InlayHintRegistrationOptions),
}
impl From<bool> for InlayHintProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<InlayHintOptions> for InlayHintProvider {
fn from(v: InlayHintOptions) -> Self {
Self::InlayHintOptions(v)
}
}
impl From<InlayHintRegistrationOptions> for InlayHintProvider {
fn from(v: InlayHintRegistrationOptions) -> Self {
Self::InlayHintRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum InlineCompletionProvider {
Bool(bool),
InlineCompletionOptions(InlineCompletionOptions),
}
impl From<bool> for InlineCompletionProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<InlineCompletionOptions> for InlineCompletionProvider {
fn from(v: InlineCompletionOptions) -> Self {
Self::InlineCompletionOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum InlineCompletionResponse {
InlineCompletionList(InlineCompletionList),
InlineCompletionItemList(Vec<InlineCompletionItem>),
}
impl From<InlineCompletionList> for InlineCompletionResponse {
fn from(v: InlineCompletionList) -> Self {
Self::InlineCompletionList(v)
}
}
impl From<Vec<InlineCompletionItem>> for InlineCompletionResponse {
fn from(v: Vec<InlineCompletionItem>) -> Self {
Self::InlineCompletionItemList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum InlineValue {
Text(InlineValueText),
VariableLookup(InlineValueVariableLookup),
EvaluatableExpression(InlineValueEvaluatableExpression),
}
impl From<InlineValueText> for InlineValue {
fn from(v: InlineValueText) -> Self {
Self::Text(v)
}
}
impl From<InlineValueVariableLookup> for InlineValue {
fn from(v: InlineValueVariableLookup) -> Self {
Self::VariableLookup(v)
}
}
impl From<InlineValueEvaluatableExpression> for InlineValue {
fn from(v: InlineValueEvaluatableExpression) -> Self {
Self::EvaluatableExpression(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum InlineValueProvider {
Bool(bool),
InlineValueOptions(InlineValueOptions),
InlineValueRegistrationOptions(InlineValueRegistrationOptions),
}
impl From<bool> for InlineValueProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<InlineValueOptions> for InlineValueProvider {
fn from(v: InlineValueOptions) -> Self {
Self::InlineValueOptions(v)
}
}
impl From<InlineValueRegistrationOptions> for InlineValueProvider {
fn from(v: InlineValueRegistrationOptions) -> Self {
Self::InlineValueRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum InsertText {
String(String),
StringValue(StringValue),
}
impl From<String> for InsertText {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for InsertText {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for InsertText {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for InsertText {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for InsertText {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<StringValue> for InsertText {
fn from(v: StringValue) -> Self {
Self::StringValue(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum Label {
String(String),
InlayHintLabelPartList(Vec<InlayHintLabelPart>),
}
impl From<String> for Label {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Label {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Label {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Label {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Label {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<Vec<InlayHintLabelPart>> for Label {
fn from(v: Vec<InlayHintLabelPart>) -> Self {
Self::InlayHintLabelPartList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum LinkedEditingRangeProvider {
Bool(bool),
LinkedEditingRangeOptions(LinkedEditingRangeOptions),
LinkedEditingRangeRegistrationOptions(LinkedEditingRangeRegistrationOptions),
}
impl From<bool> for LinkedEditingRangeProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<LinkedEditingRangeOptions> for LinkedEditingRangeProvider {
fn from(v: LinkedEditingRangeOptions) -> Self {
Self::LinkedEditingRangeOptions(v)
}
}
impl From<LinkedEditingRangeRegistrationOptions> for LinkedEditingRangeProvider {
fn from(v: LinkedEditingRangeRegistrationOptions) -> Self {
Self::LinkedEditingRangeRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum MarkedString {
String(String),
MarkedStringWithLanguage(MarkedStringWithLanguage),
}
impl From<String> for MarkedString {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for MarkedString {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for MarkedString {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for MarkedString {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for MarkedString {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<MarkedStringWithLanguage> for MarkedString {
fn from(v: MarkedStringWithLanguage) -> Self {
Self::MarkedStringWithLanguage(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum MonikerProvider {
Bool(bool),
MonikerOptions(MonikerOptions),
MonikerRegistrationOptions(MonikerRegistrationOptions),
}
impl From<bool> for MonikerProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<MonikerOptions> for MonikerProvider {
fn from(v: MonikerOptions) -> Self {
Self::MonikerOptions(v)
}
}
impl From<MonikerRegistrationOptions> for MonikerProvider {
fn from(v: MonikerRegistrationOptions) -> Self {
Self::MonikerRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Notebook {
String(String),
NotebookDocumentFilter(NotebookDocumentFilter),
}
impl From<String> for Notebook {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Notebook {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Notebook {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Notebook {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Notebook {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<NotebookDocumentFilter> for Notebook {
fn from(v: NotebookDocumentFilter) -> Self {
Self::NotebookDocumentFilter(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum NotebookDocumentFilter {
NotebookType(NotebookDocumentFilterNotebookType),
Scheme(NotebookDocumentFilterScheme),
Pattern(NotebookDocumentFilterPattern),
}
impl From<NotebookDocumentFilterNotebookType> for NotebookDocumentFilter {
fn from(v: NotebookDocumentFilterNotebookType) -> Self {
Self::NotebookType(v)
}
}
impl From<NotebookDocumentFilterScheme> for NotebookDocumentFilter {
fn from(v: NotebookDocumentFilterScheme) -> Self {
Self::Scheme(v)
}
}
impl From<NotebookDocumentFilterPattern> for NotebookDocumentFilter {
fn from(v: NotebookDocumentFilterPattern) -> Self {
Self::Pattern(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum NotebookDocumentSync {
Options(NotebookDocumentSyncOptions),
RegistrationOptions(NotebookDocumentSyncRegistrationOptions),
}
impl From<NotebookDocumentSyncOptions> for NotebookDocumentSync {
fn from(v: NotebookDocumentSyncOptions) -> Self {
Self::Options(v)
}
}
impl From<NotebookDocumentSyncRegistrationOptions> for NotebookDocumentSync {
fn from(v: NotebookDocumentSyncRegistrationOptions) -> Self {
Self::RegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum NotebookSelector {
NotebookDocumentFilterWithNotebook(NotebookDocumentFilterWithNotebook),
NotebookDocumentFilterWithCells(NotebookDocumentFilterWithCells),
}
impl From<NotebookDocumentFilterWithNotebook> for NotebookSelector {
fn from(v: NotebookDocumentFilterWithNotebook) -> Self {
Self::NotebookDocumentFilterWithNotebook(v)
}
}
impl From<NotebookDocumentFilterWithCells> for NotebookSelector {
fn from(v: NotebookDocumentFilterWithCells) -> Self {
Self::NotebookDocumentFilterWithCells(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ParameterInformationLabel {
String(String),
Tuple((u32, u32)),
}
impl From<String> for ParameterInformationLabel {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for ParameterInformationLabel {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for ParameterInformationLabel {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for ParameterInformationLabel {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for ParameterInformationLabel {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<(u32, u32)> for ParameterInformationLabel {
fn from(v: (u32, u32)) -> Self {
Self::Tuple(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum PrepareRenameResult {
Range(Range),
PrepareRenamePlaceholder(PrepareRenamePlaceholder),
PrepareRenameDefaultBehavior(PrepareRenameDefaultBehavior),
}
impl From<Range> for PrepareRenameResult {
fn from(v: Range) -> Self {
Self::Range(v)
}
}
impl From<PrepareRenamePlaceholder> for PrepareRenameResult {
fn from(v: PrepareRenamePlaceholder) -> Self {
Self::PrepareRenamePlaceholder(v)
}
}
impl From<PrepareRenameDefaultBehavior> for PrepareRenameResult {
fn from(v: PrepareRenameDefaultBehavior) -> Self {
Self::PrepareRenameDefaultBehavior(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum ProgressToken {
Int(i32),
String(String),
}
impl From<i32> for ProgressToken {
fn from(v: i32) -> Self {
Self::Int(v)
}
}
impl From<String> for ProgressToken {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for ProgressToken {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for ProgressToken {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for ProgressToken {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for ProgressToken {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum ReferencesProvider {
Bool(bool),
ReferenceOptions(ReferenceOptions),
}
impl From<bool> for ReferencesProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<ReferenceOptions> for ReferencesProvider {
fn from(v: ReferenceOptions) -> Self {
Self::ReferenceOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum RelatedDocument {
FullDocumentDiagnosticReport(FullDocumentDiagnosticReport),
UnchangedDocumentDiagnosticReport(UnchangedDocumentDiagnosticReport),
}
impl From<FullDocumentDiagnosticReport> for RelatedDocument {
fn from(v: FullDocumentDiagnosticReport) -> Self {
Self::FullDocumentDiagnosticReport(v)
}
}
impl From<UnchangedDocumentDiagnosticReport> for RelatedDocument {
fn from(v: UnchangedDocumentDiagnosticReport) -> Self {
Self::UnchangedDocumentDiagnosticReport(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum RenameProvider {
Bool(bool),
RenameOptions(RenameOptions),
}
impl From<bool> for RenameProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<RenameOptions> for RenameProvider {
fn from(v: RenameOptions) -> Self {
Self::RenameOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum RootPath {
String(String),
Null,
}
impl From<String> for RootPath {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for RootPath {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for RootPath {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for RootPath {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for RootPath {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<()> for RootPath {
fn from(_: ()) -> Self {
Self::Null
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum Save {
Bool(bool),
SaveOptions(SaveOptions),
}
impl From<bool> for Save {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<SaveOptions> for Save {
fn from(v: SaveOptions) -> Self {
Self::SaveOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Section {
String(String),
StringList(Vec<String>),
}
impl From<String> for Section {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Section {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Section {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Section {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Section {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<Vec<String>> for Section {
fn from(v: Vec<String>) -> Self {
Self::StringList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum SelectionRangeProvider {
Bool(bool),
SelectionRangeOptions(SelectionRangeOptions),
SelectionRangeRegistrationOptions(SelectionRangeRegistrationOptions),
}
impl From<bool> for SelectionRangeProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<SelectionRangeOptions> for SelectionRangeProvider {
fn from(v: SelectionRangeOptions) -> Self {
Self::SelectionRangeOptions(v)
}
}
impl From<SelectionRangeRegistrationOptions> for SelectionRangeProvider {
fn from(v: SelectionRangeRegistrationOptions) -> Self {
Self::SelectionRangeRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum SemanticTokensDeltaResponse {
SemanticTokens(SemanticTokens),
SemanticTokensDelta(SemanticTokensDelta),
}
impl From<SemanticTokens> for SemanticTokensDeltaResponse {
fn from(v: SemanticTokens) -> Self {
Self::SemanticTokens(v)
}
}
impl From<SemanticTokensDelta> for SemanticTokensDeltaResponse {
fn from(v: SemanticTokensDelta) -> Self {
Self::SemanticTokensDelta(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum SemanticTokensOptionsRange {
Bool(bool),
Object(LspObject),
}
impl From<bool> for SemanticTokensOptionsRange {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<LspObject> for SemanticTokensOptionsRange {
fn from(v: LspObject) -> Self {
Self::Object(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum SemanticTokensProvider {
SemanticTokensOptions(SemanticTokensOptions),
SemanticTokensRegistrationOptions(SemanticTokensRegistrationOptions),
}
impl From<SemanticTokensOptions> for SemanticTokensProvider {
fn from(v: SemanticTokensOptions) -> Self {
Self::SemanticTokensOptions(v)
}
}
impl From<SemanticTokensRegistrationOptions> for SemanticTokensProvider {
fn from(v: SemanticTokensRegistrationOptions) -> Self {
Self::SemanticTokensRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TextDocumentContent {
Options(TextDocumentContentOptions),
RegistrationOptions(TextDocumentContentRegistrationOptions),
}
impl From<TextDocumentContentOptions> for TextDocumentContent {
fn from(v: TextDocumentContentOptions) -> Self {
Self::Options(v)
}
}
impl From<TextDocumentContentRegistrationOptions> for TextDocumentContent {
fn from(v: TextDocumentContentRegistrationOptions) -> Self {
Self::RegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TextDocumentContentChangeEvent {
TextDocumentContentChangePartial(TextDocumentContentChangePartial),
TextDocumentContentChangeWholeDocument(TextDocumentContentChangeWholeDocument),
}
impl From<TextDocumentContentChangePartial> for TextDocumentContentChangeEvent {
fn from(v: TextDocumentContentChangePartial) -> Self {
Self::TextDocumentContentChangePartial(v)
}
}
impl From<TextDocumentContentChangeWholeDocument> for TextDocumentContentChangeEvent {
fn from(v: TextDocumentContentChangeWholeDocument) -> Self {
Self::TextDocumentContentChangeWholeDocument(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TextDocumentFilter {
Language(TextDocumentFilterLanguage),
Scheme(TextDocumentFilterScheme),
Pattern(TextDocumentFilterPattern),
}
impl From<TextDocumentFilterLanguage> for TextDocumentFilter {
fn from(v: TextDocumentFilterLanguage) -> Self {
Self::Language(v)
}
}
impl From<TextDocumentFilterScheme> for TextDocumentFilter {
fn from(v: TextDocumentFilterScheme) -> Self {
Self::Scheme(v)
}
}
impl From<TextDocumentFilterPattern> for TextDocumentFilter {
fn from(v: TextDocumentFilterPattern) -> Self {
Self::Pattern(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum TextDocumentSync {
Options(TextDocumentSyncOptions),
Kind(TextDocumentSyncKind),
}
impl From<TextDocumentSyncOptions> for TextDocumentSync {
fn from(v: TextDocumentSyncOptions) -> Self {
Self::Options(v)
}
}
impl From<TextDocumentSyncKind> for TextDocumentSync {
fn from(v: TextDocumentSyncKind) -> Self {
Self::Kind(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum Tooltip {
String(String),
MarkupContent(MarkupContent),
}
impl From<String> for Tooltip {
fn from(v: String) -> Self {
Self::String(v)
}
}
impl From<&str> for Tooltip {
fn from(v: &str) -> Self {
Self::String(v.into())
}
}
impl From<char> for Tooltip {
fn from(v: char) -> Self {
Self::String(v.into())
}
}
impl From<Box<str>> for Tooltip {
fn from(v: Box<str>) -> Self {
Self::String(v.into())
}
}
impl From<Cow<'_, str>> for Tooltip {
fn from(v: Cow<'_, str>) -> Self {
Self::String(v.into())
}
}
impl From<MarkupContent> for Tooltip {
fn from(v: MarkupContent) -> Self {
Self::MarkupContent(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TypeDefinitionProvider {
Bool(bool),
TypeDefinitionOptions(TypeDefinitionOptions),
TypeDefinitionRegistrationOptions(TypeDefinitionRegistrationOptions),
}
impl From<bool> for TypeDefinitionProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<TypeDefinitionOptions> for TypeDefinitionProvider {
fn from(v: TypeDefinitionOptions) -> Self {
Self::TypeDefinitionOptions(v)
}
}
impl From<TypeDefinitionRegistrationOptions> for TypeDefinitionProvider {
fn from(v: TypeDefinitionRegistrationOptions) -> Self {
Self::TypeDefinitionRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TypeDefinitionResponse {
Definition(Definition),
DefinitionLinkList(Vec<DefinitionLink>),
}
impl From<Definition> for TypeDefinitionResponse {
fn from(v: Definition) -> Self {
Self::Definition(v)
}
}
impl From<Vec<DefinitionLink>> for TypeDefinitionResponse {
fn from(v: Vec<DefinitionLink>) -> Self {
Self::DefinitionLinkList(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum TypeHierarchyProvider {
Bool(bool),
TypeHierarchyOptions(TypeHierarchyOptions),
TypeHierarchyRegistrationOptions(TypeHierarchyRegistrationOptions),
}
impl From<bool> for TypeHierarchyProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<TypeHierarchyOptions> for TypeHierarchyProvider {
fn from(v: TypeHierarchyOptions) -> Self {
Self::TypeHierarchyOptions(v)
}
}
impl From<TypeHierarchyRegistrationOptions> for TypeHierarchyProvider {
fn from(v: TypeHierarchyRegistrationOptions) -> Self {
Self::TypeHierarchyRegistrationOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum WorkspaceDocumentDiagnosticReport {
WorkspaceFullDocumentDiagnosticReport(WorkspaceFullDocumentDiagnosticReport),
WorkspaceUnchangedDocumentDiagnosticReport(
WorkspaceUnchangedDocumentDiagnosticReport,
),
}
impl From<WorkspaceFullDocumentDiagnosticReport> for WorkspaceDocumentDiagnosticReport {
fn from(v: WorkspaceFullDocumentDiagnosticReport) -> Self {
Self::WorkspaceFullDocumentDiagnosticReport(v)
}
}
impl From<WorkspaceUnchangedDocumentDiagnosticReport>
for WorkspaceDocumentDiagnosticReport {
fn from(v: WorkspaceUnchangedDocumentDiagnosticReport) -> Self {
Self::WorkspaceUnchangedDocumentDiagnosticReport(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum WorkspaceFolders {
WorkspaceFolderList(Vec<WorkspaceFolder>),
Null,
}
impl From<Vec<WorkspaceFolder>> for WorkspaceFolders {
fn from(v: Vec<WorkspaceFolder>) -> Self {
Self::WorkspaceFolderList(v)
}
}
impl From<()> for WorkspaceFolders {
fn from(_: ()) -> Self {
Self::Null
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
#[serde(untagged)]
pub enum WorkspaceSymbolLocation {
Location(Location),
LocationUriOnly(LocationUriOnly),
}
impl From<Location> for WorkspaceSymbolLocation {
fn from(v: Location) -> Self {
Self::Location(v)
}
}
impl From<LocationUriOnly> for WorkspaceSymbolLocation {
fn from(v: LocationUriOnly) -> Self {
Self::LocationUriOnly(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Copy)]
#[serde(untagged)]
pub enum WorkspaceSymbolProvider {
Bool(bool),
WorkspaceSymbolOptions(WorkspaceSymbolOptions),
}
impl From<bool> for WorkspaceSymbolProvider {
fn from(v: bool) -> Self {
Self::Bool(v)
}
}
impl From<WorkspaceSymbolOptions> for WorkspaceSymbolProvider {
fn from(v: WorkspaceSymbolOptions) -> Self {
Self::WorkspaceSymbolOptions(v)
}
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)]
#[serde(untagged)]
pub enum WorkspaceSymbolResponse {
SymbolInformationList(Vec<SymbolInformation>),
WorkspaceSymbolList(Vec<WorkspaceSymbol>),
}
impl From<Vec<SymbolInformation>> for WorkspaceSymbolResponse {
fn from(v: Vec<SymbolInformation>) -> Self {
Self::SymbolInformationList(v)
}
}
impl From<Vec<WorkspaceSymbol>> for WorkspaceSymbolResponse {
fn from(v: Vec<WorkspaceSymbol>) -> Self {
Self::WorkspaceSymbolList(v)
}
}
#[derive(Debug)]
pub enum ImplementationRequest {}
impl Request for ImplementationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentImplementation;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ImplementationParams;
type Result = Option<ImplementationResponse>;
}
#[derive(Debug)]
pub enum TypeDefinitionRequest {}
impl Request for TypeDefinitionRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentTypeDefinition;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = TypeDefinitionParams;
type Result = Option<TypeDefinitionResponse>;
}
#[derive(Debug)]
pub enum WorkspaceFoldersRequest {}
impl Request for WorkspaceFoldersRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceWorkspaceFolders;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = Option<Vec<WorkspaceFolder>>;
}
#[derive(Debug)]
pub enum ConfigurationRequest {}
impl Request for ConfigurationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceConfiguration;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ConfigurationParams;
type Result = Vec<LspAny>;
}
#[derive(Debug)]
pub enum DocumentColorRequest {}
impl Request for DocumentColorRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDocumentColor;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentColorParams;
type Result = Option<Vec<ColorInformation>>;
}
#[derive(Debug)]
pub enum ColorPresentationRequest {}
impl Request for ColorPresentationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentColorPresentation;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ColorPresentationParams;
type Result = Option<Vec<ColorPresentation>>;
}
#[derive(Debug)]
pub enum FoldingRangeRequest {}
impl Request for FoldingRangeRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentFoldingRange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = FoldingRangeParams;
type Result = Option<Vec<FoldingRange>>;
}
#[derive(Debug)]
pub enum FoldingRangeRefreshRequest {}
impl Request for FoldingRangeRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceFoldingRangeRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum DeclarationRequest {}
impl Request for DeclarationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDeclaration;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DeclarationParams;
type Result = Option<DeclarationResponse>;
}
#[derive(Debug)]
pub enum SelectionRangeRequest {}
impl Request for SelectionRangeRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentSelectionRange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SelectionRangeParams;
type Result = Option<Vec<SelectionRange>>;
}
#[derive(Debug)]
pub enum WorkDoneProgressCreateRequest {}
impl Request for WorkDoneProgressCreateRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WindowWorkDoneProgressCreate;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = WorkDoneProgressCreateParams;
type Result = ();
}
#[derive(Debug)]
pub enum CallHierarchyPrepareRequest {}
impl Request for CallHierarchyPrepareRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentPrepareCallHierarchy;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CallHierarchyPrepareParams;
type Result = Option<Vec<CallHierarchyItem>>;
}
#[derive(Debug)]
pub enum CallHierarchyIncomingCallsRequest {}
impl Request for CallHierarchyIncomingCallsRequest {
const METHOD: LspRequestMethod = LspRequestMethod::CallHierarchyIncomingCalls;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CallHierarchyIncomingCallsParams;
type Result = Option<Vec<CallHierarchyIncomingCall>>;
}
#[derive(Debug)]
pub enum CallHierarchyOutgoingCallsRequest {}
impl Request for CallHierarchyOutgoingCallsRequest {
const METHOD: LspRequestMethod = LspRequestMethod::CallHierarchyOutgoingCalls;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CallHierarchyOutgoingCallsParams;
type Result = Option<Vec<CallHierarchyOutgoingCall>>;
}
#[derive(Debug)]
pub enum SemanticTokensRequest {}
impl Request for SemanticTokensRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentSemanticTokensFull;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SemanticTokensParams;
type Result = Option<SemanticTokens>;
}
#[derive(Debug)]
pub enum SemanticTokensDeltaRequest {}
impl Request for SemanticTokensDeltaRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentSemanticTokensFullDelta;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SemanticTokensDeltaParams;
type Result = Option<SemanticTokensDeltaResponse>;
}
#[derive(Debug)]
pub enum SemanticTokensRangeRequest {}
impl Request for SemanticTokensRangeRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentSemanticTokensRange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SemanticTokensRangeParams;
type Result = Option<SemanticTokens>;
}
#[derive(Debug)]
pub enum SemanticTokensRefreshRequest {}
impl Request for SemanticTokensRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceSemanticTokensRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum ShowDocumentRequest {}
impl Request for ShowDocumentRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WindowShowDocument;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ShowDocumentParams;
type Result = ShowDocumentResult;
}
#[derive(Debug)]
pub enum LinkedEditingRangeRequest {}
impl Request for LinkedEditingRangeRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentLinkedEditingRange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = LinkedEditingRangeParams;
type Result = Option<LinkedEditingRanges>;
}
#[derive(Debug)]
pub enum WillCreateFilesRequest {}
impl Request for WillCreateFilesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceWillCreateFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CreateFilesParams;
type Result = Option<WorkspaceEdit>;
}
#[derive(Debug)]
pub enum WillRenameFilesRequest {}
impl Request for WillRenameFilesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceWillRenameFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = RenameFilesParams;
type Result = Option<WorkspaceEdit>;
}
#[derive(Debug)]
pub enum WillDeleteFilesRequest {}
impl Request for WillDeleteFilesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceWillDeleteFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DeleteFilesParams;
type Result = Option<WorkspaceEdit>;
}
#[derive(Debug)]
pub enum MonikerRequest {}
impl Request for MonikerRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentMoniker;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = MonikerParams;
type Result = Option<Vec<Moniker>>;
}
#[derive(Debug)]
pub enum TypeHierarchyPrepareRequest {}
impl Request for TypeHierarchyPrepareRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentPrepareTypeHierarchy;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = TypeHierarchyPrepareParams;
type Result = Option<Vec<TypeHierarchyItem>>;
}
#[derive(Debug)]
pub enum TypeHierarchySupertypesRequest {}
impl Request for TypeHierarchySupertypesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TypeHierarchySupertypes;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = TypeHierarchySupertypesParams;
type Result = Option<Vec<TypeHierarchyItem>>;
}
#[derive(Debug)]
pub enum TypeHierarchySubtypesRequest {}
impl Request for TypeHierarchySubtypesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TypeHierarchySubtypes;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = TypeHierarchySubtypesParams;
type Result = Option<Vec<TypeHierarchyItem>>;
}
#[derive(Debug)]
pub enum InlineValueRequest {}
impl Request for InlineValueRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentInlineValue;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InlineValueParams;
type Result = Option<Vec<InlineValue>>;
}
#[derive(Debug)]
pub enum InlineValueRefreshRequest {}
impl Request for InlineValueRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceInlineValueRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum InlayHintRequest {}
impl Request for InlayHintRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentInlayHint;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InlayHintParams;
type Result = Option<Vec<InlayHint>>;
}
#[derive(Debug)]
pub enum InlayHintResolveRequest {}
impl Request for InlayHintResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::InlayHintResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InlayHint;
type Result = InlayHint;
}
#[derive(Debug)]
pub enum InlayHintRefreshRequest {}
impl Request for InlayHintRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceInlayHintRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum DocumentDiagnosticRequest {}
impl Request for DocumentDiagnosticRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDiagnostic;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentDiagnosticParams;
type Result = DocumentDiagnosticReport;
}
#[derive(Debug)]
pub enum WorkspaceDiagnosticRequest {}
impl Request for WorkspaceDiagnosticRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceDiagnostic;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WorkspaceDiagnosticParams;
type Result = WorkspaceDiagnosticReport;
}
#[derive(Debug)]
pub enum DiagnosticRefreshRequest {}
impl Request for DiagnosticRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceDiagnosticRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum InlineCompletionRequest {}
impl Request for InlineCompletionRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentInlineCompletion;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InlineCompletionParams;
type Result = Option<InlineCompletionResponse>;
}
#[derive(Debug)]
pub enum TextDocumentContentRequest {}
impl Request for TextDocumentContentRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceTextDocumentContent;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = TextDocumentContentParams;
type Result = TextDocumentContentResult;
}
#[derive(Debug)]
pub enum TextDocumentContentRefreshRequest {}
impl Request for TextDocumentContentRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceTextDocumentContentRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = TextDocumentContentRefreshParams;
type Result = ();
}
#[derive(Debug)]
pub enum RegistrationRequest {}
impl Request for RegistrationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::ClientRegisterCapability;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = RegistrationParams;
type Result = ();
}
#[derive(Debug)]
pub enum UnregistrationRequest {}
impl Request for UnregistrationRequest {
const METHOD: LspRequestMethod = LspRequestMethod::ClientUnregisterCapability;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = UnregistrationParams;
type Result = ();
}
#[derive(Debug)]
pub enum InitializeRequest {}
impl Request for InitializeRequest {
const METHOD: LspRequestMethod = LspRequestMethod::Initialize;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InitializeParams;
type Result = InitializeResult;
}
#[derive(Debug)]
pub enum ShutdownRequest {}
impl Request for ShutdownRequest {
const METHOD: LspRequestMethod = LspRequestMethod::Shutdown;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum ShowMessageRequest {}
impl Request for ShowMessageRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WindowShowMessageRequest;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ShowMessageRequestParams;
type Result = Option<MessageActionItem>;
}
#[derive(Debug)]
pub enum WillSaveTextDocumentWaitUntilRequest {}
impl Request for WillSaveTextDocumentWaitUntilRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentWillSaveWaitUntil;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WillSaveTextDocumentParams;
type Result = Option<Vec<TextEdit>>;
}
#[derive(Debug)]
pub enum CompletionRequest {}
impl Request for CompletionRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentCompletion;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CompletionParams;
type Result = Option<CompletionResponse>;
}
#[derive(Debug)]
pub enum CompletionResolveRequest {}
impl Request for CompletionResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::CompletionItemResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CompletionItem;
type Result = CompletionItem;
}
#[derive(Debug)]
pub enum HoverRequest {}
impl Request for HoverRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentHover;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = HoverParams;
type Result = Option<Hover>;
}
#[derive(Debug)]
pub enum SignatureHelpRequest {}
impl Request for SignatureHelpRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentSignatureHelp;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SignatureHelpParams;
type Result = Option<SignatureHelp>;
}
#[derive(Debug)]
pub enum DefinitionRequest {}
impl Request for DefinitionRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDefinition;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DefinitionParams;
type Result = Option<DefinitionResponse>;
}
#[derive(Debug)]
pub enum ReferencesRequest {}
impl Request for ReferencesRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentReferences;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ReferenceParams;
type Result = Option<Vec<Location>>;
}
#[derive(Debug)]
pub enum DocumentHighlightRequest {}
impl Request for DocumentHighlightRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDocumentHighlight;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentHighlightParams;
type Result = Option<Vec<DocumentHighlight>>;
}
#[derive(Debug)]
pub enum DocumentSymbolRequest {}
impl Request for DocumentSymbolRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDocumentSymbol;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentSymbolParams;
type Result = Option<DocumentSymbolResponse>;
}
#[derive(Debug)]
pub enum CodeActionRequest {}
impl Request for CodeActionRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentCodeAction;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CodeActionParams;
type Result = Option<Vec<CodeActionResponse>>;
}
#[derive(Debug)]
pub enum CodeActionResolveRequest {}
impl Request for CodeActionResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::CodeActionResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CodeAction;
type Result = CodeAction;
}
#[derive(Debug)]
pub enum WorkspaceSymbolRequest {}
impl Request for WorkspaceSymbolRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceSymbol;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WorkspaceSymbolParams;
type Result = Option<WorkspaceSymbolResponse>;
}
#[derive(Debug)]
pub enum WorkspaceSymbolResolveRequest {}
impl Request for WorkspaceSymbolResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceSymbolResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WorkspaceSymbol;
type Result = WorkspaceSymbol;
}
#[derive(Debug)]
pub enum CodeLensRequest {}
impl Request for CodeLensRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentCodeLens;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CodeLensParams;
type Result = Option<Vec<CodeLens>>;
}
#[derive(Debug)]
pub enum CodeLensResolveRequest {}
impl Request for CodeLensResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::CodeLensResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CodeLens;
type Result = CodeLens;
}
#[derive(Debug)]
pub enum CodeLensRefreshRequest {}
impl Request for CodeLensRefreshRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceCodeLensRefresh;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ();
type Result = ();
}
#[derive(Debug)]
pub enum DocumentLinkRequest {}
impl Request for DocumentLinkRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentDocumentLink;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentLinkParams;
type Result = Option<Vec<DocumentLink>>;
}
#[derive(Debug)]
pub enum DocumentLinkResolveRequest {}
impl Request for DocumentLinkResolveRequest {
const METHOD: LspRequestMethod = LspRequestMethod::DocumentLinkResolve;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentLink;
type Result = DocumentLink;
}
#[derive(Debug)]
pub enum DocumentFormattingRequest {}
impl Request for DocumentFormattingRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentFormatting;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentFormattingParams;
type Result = Option<Vec<TextEdit>>;
}
#[derive(Debug)]
pub enum DocumentRangeFormattingRequest {}
impl Request for DocumentRangeFormattingRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentRangeFormatting;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentRangeFormattingParams;
type Result = Option<Vec<TextEdit>>;
}
#[derive(Debug)]
pub enum DocumentRangesFormattingRequest {}
impl Request for DocumentRangesFormattingRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentRangesFormatting;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentRangesFormattingParams;
type Result = Option<Vec<TextEdit>>;
}
#[derive(Debug)]
pub enum DocumentOnTypeFormattingRequest {}
impl Request for DocumentOnTypeFormattingRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentOnTypeFormatting;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DocumentOnTypeFormattingParams;
type Result = Option<Vec<TextEdit>>;
}
#[derive(Debug)]
pub enum RenameRequest {}
impl Request for RenameRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentRename;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = RenameParams;
type Result = Option<WorkspaceEdit>;
}
#[derive(Debug)]
pub enum PrepareRenameRequest {}
impl Request for PrepareRenameRequest {
const METHOD: LspRequestMethod = LspRequestMethod::TextDocumentPrepareRename;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = PrepareRenameParams;
type Result = Option<PrepareRenameResult>;
}
#[derive(Debug)]
pub enum ExecuteCommandRequest {}
impl Request for ExecuteCommandRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceExecuteCommand;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ExecuteCommandParams;
type Result = Option<LspAny>;
}
#[derive(Debug)]
pub enum ApplyWorkspaceEditRequest {}
impl Request for ApplyWorkspaceEditRequest {
const METHOD: LspRequestMethod = LspRequestMethod::WorkspaceApplyEdit;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ApplyWorkspaceEditParams;
type Result = ApplyWorkspaceEditResult;
}
#[derive(Debug)]
pub enum DidChangeWorkspaceFoldersNotification {}
impl Notification for DidChangeWorkspaceFoldersNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidChangeWorkspaceFolders;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidChangeWorkspaceFoldersParams;
}
#[derive(Debug)]
pub enum WorkDoneProgressCancelNotification {}
impl Notification for WorkDoneProgressCancelNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WindowWorkDoneProgressCancel;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WorkDoneProgressCancelParams;
}
#[derive(Debug)]
pub enum DidCreateFilesNotification {}
impl Notification for DidCreateFilesNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidCreateFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = CreateFilesParams;
}
#[derive(Debug)]
pub enum DidRenameFilesNotification {}
impl Notification for DidRenameFilesNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidRenameFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = RenameFilesParams;
}
#[derive(Debug)]
pub enum DidDeleteFilesNotification {}
impl Notification for DidDeleteFilesNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidDeleteFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DeleteFilesParams;
}
#[derive(Debug)]
pub enum DidOpenNotebookDocumentNotification {}
impl Notification for DidOpenNotebookDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::NotebookDocumentDidOpen;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidOpenNotebookDocumentParams;
}
#[derive(Debug)]
pub enum DidChangeNotebookDocumentNotification {}
impl Notification for DidChangeNotebookDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::NotebookDocumentDidChange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidChangeNotebookDocumentParams;
}
#[derive(Debug)]
pub enum DidSaveNotebookDocumentNotification {}
impl Notification for DidSaveNotebookDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::NotebookDocumentDidSave;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidSaveNotebookDocumentParams;
}
#[derive(Debug)]
pub enum DidCloseNotebookDocumentNotification {}
impl Notification for DidCloseNotebookDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::NotebookDocumentDidClose;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidCloseNotebookDocumentParams;
}
#[derive(Debug)]
pub enum InitializedNotification {}
impl Notification for InitializedNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::Initialized;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = InitializedParams;
}
#[derive(Debug)]
pub enum ExitNotification {}
impl Notification for ExitNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::Exit;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = ();
}
#[derive(Debug)]
pub enum DidChangeConfigurationNotification {}
impl Notification for DidChangeConfigurationNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidChangeConfiguration;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidChangeConfigurationParams;
}
#[derive(Debug)]
pub enum ShowMessageNotification {}
impl Notification for ShowMessageNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WindowShowMessage;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = ShowMessageParams;
}
#[derive(Debug)]
pub enum LogMessageNotification {}
impl Notification for LogMessageNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WindowLogMessage;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = LogMessageParams;
}
#[derive(Debug)]
pub enum TelemetryEventNotification {}
impl Notification for TelemetryEventNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TelemetryEvent;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = LspAny;
}
#[derive(Debug)]
pub enum DidOpenTextDocumentNotification {}
impl Notification for DidOpenTextDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentDidOpen;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidOpenTextDocumentParams;
}
#[derive(Debug)]
pub enum DidChangeTextDocumentNotification {}
impl Notification for DidChangeTextDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentDidChange;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidChangeTextDocumentParams;
}
#[derive(Debug)]
pub enum DidCloseTextDocumentNotification {}
impl Notification for DidCloseTextDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentDidClose;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidCloseTextDocumentParams;
}
#[derive(Debug)]
pub enum DidSaveTextDocumentNotification {}
impl Notification for DidSaveTextDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentDidSave;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidSaveTextDocumentParams;
}
#[derive(Debug)]
pub enum WillSaveTextDocumentNotification {}
impl Notification for WillSaveTextDocumentNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentWillSave;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = WillSaveTextDocumentParams;
}
#[derive(Debug)]
pub enum DidChangeWatchedFilesNotification {}
impl Notification for DidChangeWatchedFilesNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::WorkspaceDidChangeWatchedFiles;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = DidChangeWatchedFilesParams;
}
#[derive(Debug)]
pub enum PublishDiagnosticsNotification {}
impl Notification for PublishDiagnosticsNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::TextDocumentPublishDiagnostics;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = PublishDiagnosticsParams;
}
#[derive(Debug)]
pub enum SetTraceNotification {}
impl Notification for SetTraceNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::SetTrace;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ClientToServer;
type Params = SetTraceParams;
}
#[derive(Debug)]
pub enum LogTraceNotification {}
impl Notification for LogTraceNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::LogTrace;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::ServerToClient;
type Params = LogTraceParams;
}
#[derive(Debug)]
pub enum CancelNotification {}
impl Notification for CancelNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::CancelRequest;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::Both;
type Params = CancelParams;
}
#[derive(Debug)]
pub enum ProgressNotification {}
impl Notification for ProgressNotification {
const METHOD: LspNotificationMethod = LspNotificationMethod::Progress;
const MESSAGE_DIRECTION: MessageDirection = MessageDirection::Both;
type Params = ProgressParams;
}
#[macro_export]
macro_rules! lsp_request {
("textDocument/implementation") => {
$crate::ImplementationRequest
};
("textDocument/typeDefinition") => {
$crate::TypeDefinitionRequest
};
("workspace/workspaceFolders") => {
$crate::WorkspaceFoldersRequest
};
("workspace/configuration") => {
$crate::ConfigurationRequest
};
("textDocument/documentColor") => {
$crate::DocumentColorRequest
};
("textDocument/colorPresentation") => {
$crate::ColorPresentationRequest
};
("textDocument/foldingRange") => {
$crate::FoldingRangeRequest
};
("workspace/foldingRange/refresh") => {
$crate::FoldingRangeRefreshRequest
};
("textDocument/declaration") => {
$crate::DeclarationRequest
};
("textDocument/selectionRange") => {
$crate::SelectionRangeRequest
};
("window/workDoneProgress/create") => {
$crate::WorkDoneProgressCreateRequest
};
("textDocument/prepareCallHierarchy") => {
$crate::CallHierarchyPrepareRequest
};
("callHierarchy/incomingCalls") => {
$crate::CallHierarchyIncomingCallsRequest
};
("callHierarchy/outgoingCalls") => {
$crate::CallHierarchyOutgoingCallsRequest
};
("textDocument/semanticTokens/full") => {
$crate::SemanticTokensRequest
};
("textDocument/semanticTokens/full/delta") => {
$crate::SemanticTokensDeltaRequest
};
("textDocument/semanticTokens/range") => {
$crate::SemanticTokensRangeRequest
};
("workspace/semanticTokens/refresh") => {
$crate::SemanticTokensRefreshRequest
};
("window/showDocument") => {
$crate::ShowDocumentRequest
};
("textDocument/linkedEditingRange") => {
$crate::LinkedEditingRangeRequest
};
("workspace/willCreateFiles") => {
$crate::WillCreateFilesRequest
};
("workspace/willRenameFiles") => {
$crate::WillRenameFilesRequest
};
("workspace/willDeleteFiles") => {
$crate::WillDeleteFilesRequest
};
("textDocument/moniker") => {
$crate::MonikerRequest
};
("textDocument/prepareTypeHierarchy") => {
$crate::TypeHierarchyPrepareRequest
};
("typeHierarchy/supertypes") => {
$crate::TypeHierarchySupertypesRequest
};
("typeHierarchy/subtypes") => {
$crate::TypeHierarchySubtypesRequest
};
("textDocument/inlineValue") => {
$crate::InlineValueRequest
};
("workspace/inlineValue/refresh") => {
$crate::InlineValueRefreshRequest
};
("textDocument/inlayHint") => {
$crate::InlayHintRequest
};
("inlayHint/resolve") => {
$crate::InlayHintResolveRequest
};
("workspace/inlayHint/refresh") => {
$crate::InlayHintRefreshRequest
};
("textDocument/diagnostic") => {
$crate::DocumentDiagnosticRequest
};
("workspace/diagnostic") => {
$crate::WorkspaceDiagnosticRequest
};
("workspace/diagnostic/refresh") => {
$crate::DiagnosticRefreshRequest
};
("textDocument/inlineCompletion") => {
$crate::InlineCompletionRequest
};
("workspace/textDocumentContent") => {
$crate::TextDocumentContentRequest
};
("workspace/textDocumentContent/refresh") => {
$crate::TextDocumentContentRefreshRequest
};
("client/registerCapability") => {
$crate::RegistrationRequest
};
("client/unregisterCapability") => {
$crate::UnregistrationRequest
};
("initialize") => {
$crate::InitializeRequest
};
("shutdown") => {
$crate::ShutdownRequest
};
("window/showMessageRequest") => {
$crate::ShowMessageRequest
};
("textDocument/willSaveWaitUntil") => {
$crate::WillSaveTextDocumentWaitUntilRequest
};
("textDocument/completion") => {
$crate::CompletionRequest
};
("completionItem/resolve") => {
$crate::CompletionResolveRequest
};
("textDocument/hover") => {
$crate::HoverRequest
};
("textDocument/signatureHelp") => {
$crate::SignatureHelpRequest
};
("textDocument/definition") => {
$crate::DefinitionRequest
};
("textDocument/references") => {
$crate::ReferencesRequest
};
("textDocument/documentHighlight") => {
$crate::DocumentHighlightRequest
};
("textDocument/documentSymbol") => {
$crate::DocumentSymbolRequest
};
("textDocument/codeAction") => {
$crate::CodeActionRequest
};
("codeAction/resolve") => {
$crate::CodeActionResolveRequest
};
("workspace/symbol") => {
$crate::WorkspaceSymbolRequest
};
("workspaceSymbol/resolve") => {
$crate::WorkspaceSymbolResolveRequest
};
("textDocument/codeLens") => {
$crate::CodeLensRequest
};
("codeLens/resolve") => {
$crate::CodeLensResolveRequest
};
("workspace/codeLens/refresh") => {
$crate::CodeLensRefreshRequest
};
("textDocument/documentLink") => {
$crate::DocumentLinkRequest
};
("documentLink/resolve") => {
$crate::DocumentLinkResolveRequest
};
("textDocument/formatting") => {
$crate::DocumentFormattingRequest
};
("textDocument/rangeFormatting") => {
$crate::DocumentRangeFormattingRequest
};
("textDocument/rangesFormatting") => {
$crate::DocumentRangesFormattingRequest
};
("textDocument/onTypeFormatting") => {
$crate::DocumentOnTypeFormattingRequest
};
("textDocument/rename") => {
$crate::RenameRequest
};
("textDocument/prepareRename") => {
$crate::PrepareRenameRequest
};
("workspace/executeCommand") => {
$crate::ExecuteCommandRequest
};
("workspace/applyEdit") => {
$crate::ApplyWorkspaceEditRequest
};
}
#[macro_export]
macro_rules! lsp_notification {
("workspace/didChangeWorkspaceFolders") => {
$crate::DidChangeWorkspaceFoldersNotification
};
("window/workDoneProgress/cancel") => {
$crate::WorkDoneProgressCancelNotification
};
("workspace/didCreateFiles") => {
$crate::DidCreateFilesNotification
};
("workspace/didRenameFiles") => {
$crate::DidRenameFilesNotification
};
("workspace/didDeleteFiles") => {
$crate::DidDeleteFilesNotification
};
("notebookDocument/didOpen") => {
$crate::DidOpenNotebookDocumentNotification
};
("notebookDocument/didChange") => {
$crate::DidChangeNotebookDocumentNotification
};
("notebookDocument/didSave") => {
$crate::DidSaveNotebookDocumentNotification
};
("notebookDocument/didClose") => {
$crate::DidCloseNotebookDocumentNotification
};
("initialized") => {
$crate::InitializedNotification
};
("exit") => {
$crate::ExitNotification
};
("workspace/didChangeConfiguration") => {
$crate::DidChangeConfigurationNotification
};
("window/showMessage") => {
$crate::ShowMessageNotification
};
("window/logMessage") => {
$crate::LogMessageNotification
};
("telemetry/event") => {
$crate::TelemetryEventNotification
};
("textDocument/didOpen") => {
$crate::DidOpenTextDocumentNotification
};
("textDocument/didChange") => {
$crate::DidChangeTextDocumentNotification
};
("textDocument/didClose") => {
$crate::DidCloseTextDocumentNotification
};
("textDocument/didSave") => {
$crate::DidSaveTextDocumentNotification
};
("textDocument/willSave") => {
$crate::WillSaveTextDocumentNotification
};
("workspace/didChangeWatchedFiles") => {
$crate::DidChangeWatchedFilesNotification
};
("textDocument/publishDiagnostics") => {
$crate::PublishDiagnosticsNotification
};
("$/setTrace") => {
$crate::SetTraceNotification
};
("$/logTrace") => {
$crate::LogTraceNotification
};
("$/cancelRequest") => {
$crate::CancelNotification
};
("$/progress") => {
$crate::ProgressNotification
};
}