aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api_light/src/line_index_utils.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-02-08 11:49:43 +0000
committerAleksey Kladov <[email protected]>2019-02-08 11:49:43 +0000
commit12e3b4c70b5ef23b2fdfc197296d483680e125f9 (patch)
tree71baa0e0a62f9f6b61450501c5f821f67badf9e4 /crates/ra_ide_api_light/src/line_index_utils.rs
parent5cb1d41a30d25cbe136402644bf5434dd667f1e5 (diff)
reformat the world
Diffstat (limited to 'crates/ra_ide_api_light/src/line_index_utils.rs')
-rw-r--r--crates/ra_ide_api_light/src/line_index_utils.rs51
1 files changed, 9 insertions, 42 deletions
diff --git a/crates/ra_ide_api_light/src/line_index_utils.rs b/crates/ra_ide_api_light/src/line_index_utils.rs
index 5d9ab6fd2..799a920ad 100644
--- a/crates/ra_ide_api_light/src/line_index_utils.rs
+++ b/crates/ra_ide_api_light/src/line_index_utils.rs
@@ -17,11 +17,7 @@ struct LineIndexStepIter<'a> {
17 17
18impl<'a> LineIndexStepIter<'a> { 18impl<'a> LineIndexStepIter<'a> {
19 fn from(line_index: &LineIndex) -> LineIndexStepIter { 19 fn from(line_index: &LineIndex) -> LineIndexStepIter {
20 let mut x = LineIndexStepIter { 20 let mut x = LineIndexStepIter { line_index, next_newline_idx: 0, utf16_chars: None };
21 line_index,
22 next_newline_idx: 0,
23 utf16_chars: None,
24 };
25 // skip first newline since it's not real 21 // skip first newline since it's not real
26 x.next(); 22 x.next();
27 x 23 x
@@ -35,10 +31,7 @@ impl<'a> Iterator for LineIndexStepIter<'a> {
35 .as_mut() 31 .as_mut()
36 .and_then(|(newline, x)| { 32 .and_then(|(newline, x)| {
37 let x = x.next()?; 33 let x = x.next()?;
38 Some(Step::Utf16Char(TextRange::from_to( 34 Some(Step::Utf16Char(TextRange::from_to(*newline + x.start, *newline + x.end)))
39 *newline + x.start,
40 *newline + x.end,
41 )))
42 }) 35 })
43 .or_else(|| { 36 .or_else(|| {
44 let next_newline = *self.line_index.newlines.get(self.next_newline_idx)?; 37 let next_newline = *self.line_index.newlines.get(self.next_newline_idx)?;
@@ -113,11 +106,7 @@ struct Edits<'a> {
113 106
114impl<'a> Edits<'a> { 107impl<'a> Edits<'a> {
115 fn from_text_edit(text_edit: &'a TextEdit) -> Edits<'a> { 108 fn from_text_edit(text_edit: &'a TextEdit) -> Edits<'a> {
116 let mut x = Edits { 109 let mut x = Edits { edits: text_edit.as_atoms(), current: None, acc_diff: 0 };
117 edits: text_edit.as_atoms(),
118 current: None,
119 acc_diff: 0,
120 };
121 x.advance_edit(); 110 x.advance_edit();
122 x 111 x
123 } 112 }
@@ -127,11 +116,7 @@ impl<'a> Edits<'a> {
127 Some((next, rest)) => { 116 Some((next, rest)) => {
128 let delete = self.translate_range(next.delete); 117 let delete = self.translate_range(next.delete);
129 let diff = next.insert.len() as i64 - next.delete.len().to_usize() as i64; 118 let diff = next.insert.len() as i64 - next.delete.len().to_usize() as i64;
130 self.current = Some(TranslatedEdit { 119 self.current = Some(TranslatedEdit { delete, insert: &next.insert, diff });
131 delete,
132 insert: &next.insert,
133 diff,
134 });
135 self.edits = rest; 120 self.edits = rest;
136 } 121 }
137 None => { 122 None => {
@@ -142,10 +127,7 @@ impl<'a> Edits<'a> {
142 127
143 fn next_inserted_steps(&mut self) -> Option<OffsetStepIter<'a>> { 128 fn next_inserted_steps(&mut self) -> Option<OffsetStepIter<'a>> {
144 let cur = self.current.as_ref()?; 129 let cur = self.current.as_ref()?;
145 let res = Some(OffsetStepIter { 130 let res = Some(OffsetStepIter { offset: cur.delete.start(), text: &cur.insert });
146 offset: cur.delete.start(),
147 text: &cur.insert,
148 });
149 self.advance_edit(); 131 self.advance_edit();
150 res 132 res
151 } 133 }
@@ -160,18 +142,12 @@ impl<'a> Edits<'a> {
160 if step_pos <= edit.delete.start() { 142 if step_pos <= edit.delete.start() {
161 NextSteps::Use 143 NextSteps::Use
162 } else if step_pos <= edit.delete.end() { 144 } else if step_pos <= edit.delete.end() {
163 let iter = OffsetStepIter { 145 let iter = OffsetStepIter { offset: edit.delete.start(), text: &edit.insert };
164 offset: edit.delete.start(),
165 text: &edit.insert,
166 };
167 // empty slice to avoid returning steps again 146 // empty slice to avoid returning steps again
168 edit.insert = &edit.insert[edit.insert.len()..]; 147 edit.insert = &edit.insert[edit.insert.len()..];
169 NextSteps::ReplaceMany(iter) 148 NextSteps::ReplaceMany(iter)
170 } else { 149 } else {
171 let iter = OffsetStepIter { 150 let iter = OffsetStepIter { offset: edit.delete.start(), text: &edit.insert };
172 offset: edit.delete.start(),
173 text: &edit.insert,
174 };
175 // empty slice to avoid returning steps again 151 // empty slice to avoid returning steps again
176 edit.insert = &edit.insert[edit.insert.len()..]; 152 edit.insert = &edit.insert[edit.insert.len()..];
177 self.advance_edit(); 153 self.advance_edit();
@@ -222,11 +198,7 @@ struct RunningLineCol {
222 198
223impl RunningLineCol { 199impl RunningLineCol {
224 fn new() -> RunningLineCol { 200 fn new() -> RunningLineCol {
225 RunningLineCol { 201 RunningLineCol { line: 0, last_newline: TextUnit::from(0), col_adjust: TextUnit::from(0) }
226 line: 0,
227 last_newline: TextUnit::from(0),
228 col_adjust: TextUnit::from(0),
229 }
230 } 202 }
231 203
232 fn to_line_col(&self, offset: TextUnit) -> LineCol { 204 fn to_line_col(&self, offset: TextUnit) -> LineCol {
@@ -339,12 +311,7 @@ mod test {
339 let edited_text = x.edit.apply(&x.text); 311 let edited_text = x.edit.apply(&x.text);
340 let arb_offset = arb_offset(&edited_text); 312 let arb_offset = arb_offset(&edited_text);
341 (Just(x), Just(edited_text), arb_offset).prop_map(|(x, edited_text, offset)| { 313 (Just(x), Just(edited_text), arb_offset).prop_map(|(x, edited_text, offset)| {
342 ArbTextWithEditAndOffset { 314 ArbTextWithEditAndOffset { text: x.text, edit: x.edit, edited_text, offset }
343 text: x.text,
344 edit: x.edit,
345 edited_text,
346 offset,
347 }
348 }) 315 })
349 }) 316 })
350 .boxed() 317 .boxed()