lsp_text_document/
macros.rs1#[macro_export]
2macro_rules! position {
3 ($line:expr, $character:expr) => {{
4 Position::new($line as u32, $character as u32)
5 }};
6}
7
8#[macro_export]
9macro_rules! range_at {
10 ($doc:expr, $sub:expr) => {{
11 let index = $doc.text.find($sub).unwrap();
12 lsp_types::Range::new(
13 $doc.position_at(index as u32),
14 $doc.position_at(index as u32 + $sub.len() as u32),
15 )
16 }};
17}
18
19#[macro_export]
20macro_rules! range_after {
21 ($doc:expr, $sub:expr ) => {{
22 let index = $doc.text.find($sub).unwrap() + $sub.len();
23 lsp_types::Range::new(
24 $doc.position_at(index as u32),
25 $doc.position_at(index as u32),
26 )
27 }};
28}
29#[macro_export]
30macro_rules! ie {
32 ($text:expr, $doc:expr, $sub_str:expr) => {
33 {
34 TextDocumentContentChangeEvent {
35 text: $text.into(),
36 range: Some(range_after!($doc, $sub_str)),
37 range_length: None,
38 }
39 }
40 };
41}
42#[macro_export]
43macro_rules! re {
44 ($text:expr, $doc:expr, $sub_str:expr) => {
45 {
46 TextDocumentContentChangeEvent {
47 text: $text.into(),
48 range: Some(range_at!($doc, $sub_str)),
49 range_length: None,
50 }
51 }
52 };
53}
54
55#[macro_export]
56macro_rules! range {
57 ($a:expr, $b:expr, $c:expr, $d:expr) => {
58 lsp_types::Range {
59 start: position!($a, $b),
60 end: position!($c, $d)
61 }
62 }
63
64}
65
66#[macro_export]
67macro_rules! event {
68 ($text:expr, $range:expr) => {
69 lsp_types::TextDocumentContentChangeEvent {
70 text: $text.to_string(),
71 range: Some($range),
72 range_length: None
73 }
74 }
75
76}