1use serde::{Deserialize, Serialize};
2
3use crate::index::TextRange;
4
5#[allow(dead_code)]
6pub mod completion_kind {
7 pub const CLASS: u32 = 7;
8 pub const FUNCTION: u32 = 3;
9 pub const FIELD: u32 = 5;
10 pub const VARIABLE: u32 = 6;
11 pub const MODULE: u32 = 9;
12 pub const PROPERTY: u32 = 10;
13 pub const VALUE: u32 = 12;
14 pub const KEYWORD: u32 = 14;
15 pub const SNIPPET: u32 = 15;
16 pub const REFERENCE: u32 = 18;
17 pub const TYPE_PARAMETER: u32 = 25;
18}
19
20#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct CompletionItem {
23 pub label: String,
24 pub kind: Option<u32>,
25 pub detail: Option<String>,
26 pub documentation: Option<String>,
27 pub sort_text: Option<String>,
28 pub filter_text: Option<String>,
29 pub insert_text: Option<String>,
30 pub insert_text_format: Option<u32>,
31 pub text_edit: Option<TextEdit>,
32}
33
34#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
35pub struct CompletionList {
36 pub items: Vec<CompletionItem>,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub struct Hover {
41 pub contents: String,
42 pub range: Option<TextRange>,
43}
44
45#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct DocumentSymbol {
48 pub name: String,
49 pub detail: Option<String>,
50 pub kind: u32,
51 pub range: TextRange,
52 pub selection_range: TextRange,
53 pub children: Option<Vec<DocumentSymbol>>,
54}
55
56#[allow(dead_code)]
57pub mod symbol_kind {
58 pub const MODULE: u32 = 2;
59 pub const NAMESPACE: u32 = 3;
60 pub const CLASS: u32 = 5;
61 pub const PROPERTY: u32 = 7;
62 pub const EVENT: u32 = 24;
63 pub const TYPE_PARAMETER: u32 = 26;
64 pub const FUNCTION: u32 = 12;
65 pub const VARIABLE: u32 = 13;
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
69pub struct Diagnostic {
70 pub range: TextRange,
71 pub severity: Option<u32>,
72 pub source: Option<String>,
73 pub message: String,
74}
75
76pub mod diagnostic_severity {
77 pub const ERROR: u32 = 1;
78}
79
80#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
81pub struct Location {
82 pub uri: String,
83 pub range: TextRange,
84}
85
86#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
87#[serde(rename_all = "camelCase")]
88pub struct TextEdit {
89 pub range: TextRange,
90 pub new_text: String,
91}
92
93#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94pub struct WorkspaceEdit {
95 pub changes: Vec<DocumentEdit>,
96}
97
98#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
99pub struct DocumentEdit {
100 pub uri: String,
101 pub edits: Vec<TextEdit>,
102}
103
104#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
105#[serde(rename_all = "camelCase")]
106pub struct WorkspaceSymbol {
107 pub name: String,
108 pub kind: u32,
109 pub location: Location,
110 pub container_name: Option<String>,
111}
112
113#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
114#[serde(rename_all = "camelCase")]
115pub struct DocumentHighlight {
116 pub range: TextRange,
117 pub kind: Option<u32>,
118}
119
120#[allow(dead_code)]
121pub mod document_highlight_kind {
122 pub const TEXT: u32 = 1;
123 pub const READ: u32 = 2;
124 pub const WRITE: u32 = 3;
125}
126
127#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
128#[serde(rename_all = "camelCase")]
129pub struct FoldingRange {
130 pub start_line: u32,
131 pub start_character: Option<u32>,
132 pub end_line: u32,
133 pub end_character: Option<u32>,
134 pub kind: Option<String>,
135}
136
137#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
138pub struct SelectionRange {
139 pub range: TextRange,
140 pub parent: Option<Box<SelectionRange>>,
141}
142
143#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
144#[serde(rename_all = "camelCase")]
145pub struct SemanticToken {
146 pub line: u32,
147 pub start: u32,
148 pub length: u32,
149 pub token_type: u32,
150 pub modifiers: u32,
151}
152
153#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
154pub struct SemanticTokens {
155 pub data: Vec<SemanticToken>,
156}
157
158#[allow(dead_code)]
159pub mod semantic_token_type {
160 pub const NAMESPACE: u32 = 0;
161 pub const TYPE: u32 = 1;
162 pub const CLASS: u32 = 2;
163 pub const PARAMETER: u32 = 3;
164 pub const VARIABLE: u32 = 4;
165 pub const PROPERTY: u32 = 5;
166 pub const FUNCTION: u32 = 6;
167 pub const KEYWORD: u32 = 7;
168 pub const COMMENT: u32 = 8;
169 pub const STRING: u32 = 9;
170 pub const NUMBER: u32 = 10;
171 pub const OPERATOR: u32 = 11;
172 pub const MACRO: u32 = 12;
173}
174
175#[allow(dead_code)]
176pub mod semantic_token_modifier {
177 pub const DECLARATION: u32 = 1;
178 pub const DEFINITION: u32 = 1 << 1;
179 pub const READONLY: u32 = 1 << 2;
180 pub const DEPRECATED: u32 = 1 << 3;
181}
182
183#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
184#[serde(rename_all = "camelCase")]
185pub struct PrepareRename {
186 pub range: TextRange,
187 pub placeholder: String,
188}
189
190#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
191#[serde(rename_all = "camelCase")]
192pub struct CodeAction {
193 pub title: String,
194 pub kind: Option<String>,
195}
196
197#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
198pub struct SignatureHelp {
199 pub signatures: Vec<SignatureInformation>,
200 pub active_signature: Option<u32>,
201 pub active_parameter: Option<u32>,
202}
203
204#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
205#[serde(rename_all = "camelCase")]
206pub struct SignatureInformation {
207 pub label: String,
208 pub documentation: Option<String>,
209 pub parameters: Vec<ParameterInformation>,
210}
211
212#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
213pub struct ParameterInformation {
214 pub label: String,
215 pub documentation: Option<String>,
216}
217
218#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
219#[serde(rename_all = "camelCase")]
220pub struct InlayHint {
221 pub position: crate::index::TextPosition,
222 pub label: String,
223 pub kind: Option<u32>,
224}