diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_analysis/src/imp.rs | 2 | ||||
-rw-r--r-- | crates/ra_analysis/src/lib.rs | 4 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/conv.rs | 15 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop/handlers.rs | 11 | ||||
-rw-r--r-- | crates/ra_text_edit/src/text_edit.rs | 4 |
5 files changed, 24 insertions, 12 deletions
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index cefe5a748..a7be56f5a 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs | |||
@@ -520,7 +520,7 @@ impl SourceChange { | |||
520 | pub(crate) fn from_local_edit(file_id: FileId, label: &str, edit: LocalEdit) -> SourceChange { | 520 | pub(crate) fn from_local_edit(file_id: FileId, label: &str, edit: LocalEdit) -> SourceChange { |
521 | let file_edit = SourceFileEdit { | 521 | let file_edit = SourceFileEdit { |
522 | file_id, | 522 | file_id, |
523 | edits: edit.edit.into_atoms(), | 523 | edit: edit.edit, |
524 | }; | 524 | }; |
525 | SourceChange { | 525 | SourceChange { |
526 | label: label.to_string(), | 526 | label: label.to_string(), |
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index d5725ef2e..2fb11365c 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs | |||
@@ -20,7 +20,7 @@ use std::{fmt, sync::Arc}; | |||
20 | 20 | ||
21 | use rustc_hash::FxHashMap; | 21 | use rustc_hash::FxHashMap; |
22 | use ra_syntax::{SourceFileNode, TextRange, TextUnit}; | 22 | use ra_syntax::{SourceFileNode, TextRange, TextUnit}; |
23 | use ra_text_edit::AtomTextEdit; | 23 | use ra_text_edit::TextEdit; |
24 | use rayon::prelude::*; | 24 | use rayon::prelude::*; |
25 | use relative_path::RelativePathBuf; | 25 | use relative_path::RelativePathBuf; |
26 | 26 | ||
@@ -167,7 +167,7 @@ pub struct SourceChange { | |||
167 | #[derive(Debug)] | 167 | #[derive(Debug)] |
168 | pub struct SourceFileEdit { | 168 | pub struct SourceFileEdit { |
169 | pub file_id: FileId, | 169 | pub file_id: FileId, |
170 | pub edits: Vec<AtomTextEdit>, | 170 | pub edit: TextEdit, |
171 | } | 171 | } |
172 | 172 | ||
173 | #[derive(Debug)] | 173 | #[derive(Debug)] |
diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs index 198dbfc49..3531b727e 100644 --- a/crates/ra_lsp_server/src/conv.rs +++ b/crates/ra_lsp_server/src/conv.rs | |||
@@ -97,21 +97,21 @@ impl ConvWith for TextEdit { | |||
97 | type Output = Vec<languageserver_types::TextEdit>; | 97 | type Output = Vec<languageserver_types::TextEdit>; |
98 | 98 | ||
99 | fn conv_with(self, line_index: &LineIndex) -> Vec<languageserver_types::TextEdit> { | 99 | fn conv_with(self, line_index: &LineIndex) -> Vec<languageserver_types::TextEdit> { |
100 | self.into_atoms() | 100 | self.as_atoms() |
101 | .into_iter() | 101 | .into_iter() |
102 | .map_conv_with(line_index) | 102 | .map_conv_with(line_index) |
103 | .collect() | 103 | .collect() |
104 | } | 104 | } |
105 | } | 105 | } |
106 | 106 | ||
107 | impl ConvWith for AtomTextEdit { | 107 | impl<'a> ConvWith for &'a AtomTextEdit { |
108 | type Ctx = LineIndex; | 108 | type Ctx = LineIndex; |
109 | type Output = languageserver_types::TextEdit; | 109 | type Output = languageserver_types::TextEdit; |
110 | 110 | ||
111 | fn conv_with(self, line_index: &LineIndex) -> languageserver_types::TextEdit { | 111 | fn conv_with(self, line_index: &LineIndex) -> languageserver_types::TextEdit { |
112 | languageserver_types::TextEdit { | 112 | languageserver_types::TextEdit { |
113 | range: self.delete.conv_with(line_index), | 113 | range: self.delete.conv_with(line_index), |
114 | new_text: self.insert, | 114 | new_text: self.insert.clone(), |
115 | } | 115 | } |
116 | } | 116 | } |
117 | } | 117 | } |
@@ -199,7 +199,7 @@ impl TryConvWith for SourceChange { | |||
199 | .source_file_edits | 199 | .source_file_edits |
200 | .iter() | 200 | .iter() |
201 | .find(|it| it.file_id == pos.file_id) | 201 | .find(|it| it.file_id == pos.file_id) |
202 | .map(|it| it.edits.as_slice()) | 202 | .map(|it| it.edit.as_atoms()) |
203 | .unwrap_or(&[]); | 203 | .unwrap_or(&[]); |
204 | let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits); | 204 | let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits); |
205 | let position = | 205 | let position = |
@@ -265,7 +265,12 @@ impl TryConvWith for SourceFileEdit { | |||
265 | version: None, | 265 | version: None, |
266 | }; | 266 | }; |
267 | let line_index = world.analysis().file_line_index(self.file_id); | 267 | let line_index = world.analysis().file_line_index(self.file_id); |
268 | let edits = self.edits.into_iter().map_conv_with(&line_index).collect(); | 268 | let edits = self |
269 | .edit | ||
270 | .as_atoms() | ||
271 | .iter() | ||
272 | .map_conv_with(&line_index) | ||
273 | .collect(); | ||
269 | Ok(TextDocumentEdit { | 274 | Ok(TextDocumentEdit { |
270 | text_document, | 275 | text_document, |
271 | edits, | 276 | edits, |
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index 801966304..1751d7fa8 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -107,9 +107,16 @@ pub fn handle_on_type_formatting( | |||
107 | }; | 107 | }; |
108 | let edits = match world.analysis().on_eq_typed(position) { | 108 | let edits = match world.analysis().on_eq_typed(position) { |
109 | None => return Ok(None), | 109 | None => return Ok(None), |
110 | Some(mut action) => action.source_file_edits.pop().unwrap().edits, | 110 | Some(mut action) => action |
111 | .source_file_edits | ||
112 | .pop() | ||
113 | .unwrap() | ||
114 | .edit | ||
115 | .as_atoms() | ||
116 | .iter() | ||
117 | .map_conv_with(&line_index) | ||
118 | .collect(), | ||
111 | }; | 119 | }; |
112 | let edits = edits.into_iter().map_conv_with(&line_index).collect(); | ||
113 | Ok(Some(edits)) | 120 | Ok(Some(edits)) |
114 | } | 121 | } |
115 | 122 | ||
diff --git a/crates/ra_text_edit/src/text_edit.rs b/crates/ra_text_edit/src/text_edit.rs index fb46f046d..392968d63 100644 --- a/crates/ra_text_edit/src/text_edit.rs +++ b/crates/ra_text_edit/src/text_edit.rs | |||
@@ -41,8 +41,8 @@ impl TextEditBuilder { | |||
41 | } | 41 | } |
42 | 42 | ||
43 | impl TextEdit { | 43 | impl TextEdit { |
44 | pub fn into_atoms(self) -> Vec<AtomTextEdit> { | 44 | pub fn as_atoms(&self) -> &[AtomTextEdit] { |
45 | self.atoms | 45 | &self.atoms |
46 | } | 46 | } |
47 | 47 | ||
48 | pub fn apply(&self, text: &str) -> String { | 48 | pub fn apply(&self, text: &str) -> String { |