1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct TextDocumentIdentifier {
10 pub uri: String,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct Position {
16 pub line: u32,
17 pub character: u32,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct Range {
23 pub start: Position,
24 pub end: Position,
25}
26
27#[derive(Debug, Clone, Deserialize, Serialize)]
28pub struct TextDocumentItem {
29 pub uri: String,
30 #[serde(rename = "languageId")]
31 pub language_id: Option<String>,
32 pub version: i32,
33 pub text: String,
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize)]
37pub struct DidOpenTextDocumentParams {
38 #[serde(rename = "textDocument")]
39 pub text_document: TextDocumentItem,
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct VersionedTextDocumentIdentifier {
44 pub uri: String,
45 pub version: Option<i32>,
46}
47
48#[derive(Debug, Clone, Deserialize, Serialize)]
49pub struct TextDocumentContentChangeEvent {
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub range: Option<Range>,
52 pub text: String,
53}
54
55#[derive(Debug, Clone, Deserialize, Serialize)]
56pub struct DidChangeTextDocumentParams {
57 #[serde(rename = "textDocument")]
58 pub text_document: VersionedTextDocumentIdentifier,
59 #[serde(rename = "contentChanges")]
60 pub content_changes: Vec<TextDocumentContentChangeEvent>,
61}
62
63#[derive(Debug, Clone, Deserialize, Serialize)]
64pub struct DidCloseTextDocumentParams {
65 #[serde(rename = "textDocument")]
66 pub text_document: TextDocumentIdentifier,
67}