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