aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-12-21 08:24:16 +0000
committerAleksey Kladov <[email protected]>2018-12-21 08:52:32 +0000
commit0063f03e86f4222a5027720142eb20db4adc485d (patch)
tree888c4de1eaa96cccb0b1870464e095679c5290b1
parent164d53b22f345e50c67781af545310d2193e8a5c (diff)
hide atom edits a bit
-rw-r--r--crates/ra_analysis/src/imp.rs2
-rw-r--r--crates/ra_analysis/src/lib.rs4
-rw-r--r--crates/ra_lsp_server/src/conv.rs15
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs11
-rw-r--r--crates/ra_text_edit/src/text_edit.rs4
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
21use rustc_hash::FxHashMap; 21use rustc_hash::FxHashMap;
22use ra_syntax::{SourceFileNode, TextRange, TextUnit}; 22use ra_syntax::{SourceFileNode, TextRange, TextUnit};
23use ra_text_edit::AtomTextEdit; 23use ra_text_edit::TextEdit;
24use rayon::prelude::*; 24use rayon::prelude::*;
25use relative_path::RelativePathBuf; 25use relative_path::RelativePathBuf;
26 26
@@ -167,7 +167,7 @@ pub struct SourceChange {
167#[derive(Debug)] 167#[derive(Debug)]
168pub struct SourceFileEdit { 168pub 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
107impl ConvWith for AtomTextEdit { 107impl<'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
43impl TextEdit { 43impl 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 {