lsp_types/
document_link.rs1use crate::{
2 PartialResultParams, Range, TextDocumentIdentifier, WorkDoneProgressOptions,
3 WorkDoneProgressParams,
4};
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7use url::Url;
8
9#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct DocumentLinkClientCapabilities {
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub dynamic_registration: Option<bool>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub tooltip_support: Option<bool>,
19}
20
21#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
22#[serde(rename_all = "camelCase")]
23pub struct DocumentLinkOptions {
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub resolve_provider: Option<bool>,
27
28 #[serde(flatten)]
29 pub work_done_progress_options: WorkDoneProgressOptions,
30}
31
32#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
33#[serde(rename_all = "camelCase")]
34pub struct DocumentLinkParams {
35 pub text_document: TextDocumentIdentifier,
37
38 #[serde(flatten)]
39 pub work_done_progress_params: WorkDoneProgressParams,
40
41 #[serde(flatten)]
42 pub partial_result_params: PartialResultParams,
43}
44
45#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
48pub struct DocumentLink {
49 pub range: Range,
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub target: Option<Url>,
54
55 #[serde(skip_serializing_if = "Option::is_none")]
61 pub tooltip: Option<String>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
66 pub data: Option<Value>,
67}