lsp_types/
document_highlight.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{
4    DynamicRegistrationClientCapabilities, PartialResultParams, Range, TextDocumentPositionParams,
5    WorkDoneProgressParams,
6};
7
8pub type DocumentHighlightClientCapabilities = DynamicRegistrationClientCapabilities;
9
10#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
11#[serde(rename_all = "camelCase")]
12pub struct DocumentHighlightParams {
13    #[serde(flatten)]
14    pub text_document_position_params: TextDocumentPositionParams,
15
16    #[serde(flatten)]
17    pub work_done_progress_params: WorkDoneProgressParams,
18
19    #[serde(flatten)]
20    pub partial_result_params: PartialResultParams,
21}
22
23/// A document highlight is a range inside a text document which deserves
24/// special attention. Usually a document highlight is visualized by changing
25/// the background color of its range.
26#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
27pub struct DocumentHighlight {
28    /// The range this highlight applies to.
29    pub range: Range,
30
31    /// The highlight kind, default is DocumentHighlightKind.Text.
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub kind: Option<DocumentHighlightKind>,
34}
35
36/// A document highlight kind.
37#[derive(Eq, PartialEq, Copy, Clone, Deserialize, Serialize)]
38#[serde(transparent)]
39pub struct DocumentHighlightKind(i32);
40lsp_enum! {
41impl DocumentHighlightKind {
42    /// A textual occurrence.
43    pub const TEXT: DocumentHighlightKind = DocumentHighlightKind(1);
44
45    /// Read-access of a symbol, like reading a variable.
46    pub const READ: DocumentHighlightKind = DocumentHighlightKind(2);
47
48    /// Write-access of a symbol, like writing to a variable.
49    pub const WRITE: DocumentHighlightKind = DocumentHighlightKind(3);
50}
51}