| use crate::{ |
| PartialResultParams, Range, TextDocumentIdentifier, WorkDoneProgressOptions, |
| WorkDoneProgressParams, |
| }; |
| use serde::{Deserialize, Serialize}; |
| use serde_json::Value; |
| use url::Url; |
| |
| #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] |
| #[serde(rename_all = "camelCase")] |
| pub struct DocumentLinkClientCapabilities { |
| /// Whether document link supports dynamic registration. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub dynamic_registration: Option<bool>, |
| |
| /// Whether the client support the `tooltip` property on `DocumentLink`. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub tooltip_support: Option<bool>, |
| } |
| |
| #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] |
| #[serde(rename_all = "camelCase")] |
| pub struct DocumentLinkOptions { |
| /// Document links have a resolve provider as well. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub resolve_provider: Option<bool>, |
| |
| #[serde(flatten)] |
| pub work_done_progress_options: WorkDoneProgressOptions, |
| } |
| |
| #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] |
| #[serde(rename_all = "camelCase")] |
| pub struct DocumentLinkParams { |
| /// The document to provide document links for. |
| pub text_document: TextDocumentIdentifier, |
| |
| #[serde(flatten)] |
| pub work_done_progress_params: WorkDoneProgressParams, |
| |
| #[serde(flatten)] |
| pub partial_result_params: PartialResultParams, |
| } |
| |
| /// A document link is a range in a text document that links to an internal or external resource, like another |
| /// text document or a web site. |
| #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] |
| pub struct DocumentLink { |
| /// The range this link applies to. |
| pub range: Range, |
| /// The uri this link points to. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub target: Option<Url>, |
| |
| /// The tooltip text when you hover over this link. |
| /// |
| /// If a tooltip is provided, is will be displayed in a string that includes instructions on how to |
| /// trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS, |
| /// user settings, and localization. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub tooltip: Option<String>, |
| |
| /// A data entry field that is preserved on a document link between a DocumentLinkRequest |
| /// and a DocumentLinkResolveRequest. |
| #[serde(skip_serializing_if = "Option::is_none")] |
| pub data: Option<Value>, |
| } |