aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/assist_ctx.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-05-06 15:39:11 +0100
committerAleksey Kladov <[email protected]>2020-05-06 15:39:11 +0100
commit020ca6695f4d58f651984c4fbe2227d891896bb3 (patch)
tree5189803adf9b8d89cb4823362e568748de039396 /crates/ra_assists/src/assist_ctx.rs
parent4d50709a96f92f3927b3ac59110d593b49c53008 (diff)
Simplify
Diffstat (limited to 'crates/ra_assists/src/assist_ctx.rs')
-rw-r--r--crates/ra_assists/src/assist_ctx.rs22
1 files changed, 9 insertions, 13 deletions
diff --git a/crates/ra_assists/src/assist_ctx.rs b/crates/ra_assists/src/assist_ctx.rs
index af6756d17..871671de2 100644
--- a/crates/ra_assists/src/assist_ctx.rs
+++ b/crates/ra_assists/src/assist_ctx.rs
@@ -13,7 +13,7 @@ use ra_syntax::{
13}; 13};
14use ra_text_edit::TextEditBuilder; 14use ra_text_edit::TextEditBuilder;
15 15
16use crate::{AssistFile, AssistId, AssistLabel, GroupLabel, ResolvedAssist}; 16use crate::{AssistId, AssistLabel, GroupLabel, ResolvedAssist};
17 17
18#[derive(Clone, Debug)] 18#[derive(Clone, Debug)]
19pub(crate) struct Assist(pub(crate) Vec<AssistInfo>); 19pub(crate) struct Assist(pub(crate) Vec<AssistInfo>);
@@ -107,7 +107,7 @@ impl<'a> AssistCtx<'a> {
107 let source_change = { 107 let source_change = {
108 let mut edit = ActionBuilder::new(&self); 108 let mut edit = ActionBuilder::new(&self);
109 f(&mut edit); 109 f(&mut edit);
110 edit.build(change_label, self.frange.file_id) 110 edit.build(change_label)
111 }; 111 };
112 info = info.resolved(source_change) 112 info = info.resolved(source_change)
113 }; 113 };
@@ -166,7 +166,7 @@ impl<'a> AssistGroup<'a> {
166 let source_change = { 166 let source_change = {
167 let mut edit = ActionBuilder::new(&self.ctx); 167 let mut edit = ActionBuilder::new(&self.ctx);
168 f(&mut edit); 168 f(&mut edit);
169 edit.build(change_label, self.ctx.frange.file_id) 169 edit.build(change_label)
170 }; 170 };
171 info = info.resolved(source_change) 171 info = info.resolved(source_change)
172 }; 172 };
@@ -186,7 +186,7 @@ impl<'a> AssistGroup<'a> {
186pub(crate) struct ActionBuilder<'a, 'b> { 186pub(crate) struct ActionBuilder<'a, 'b> {
187 edit: TextEditBuilder, 187 edit: TextEditBuilder,
188 cursor_position: Option<TextSize>, 188 cursor_position: Option<TextSize>,
189 file: AssistFile, 189 file: FileId,
190 ctx: &'a AssistCtx<'b>, 190 ctx: &'a AssistCtx<'b>,
191} 191}
192 192
@@ -195,7 +195,7 @@ impl<'a, 'b> ActionBuilder<'a, 'b> {
195 Self { 195 Self {
196 edit: TextEditBuilder::default(), 196 edit: TextEditBuilder::default(),
197 cursor_position: None, 197 cursor_position: None,
198 file: AssistFile::default(), 198 file: ctx.frange.file_id,
199 ctx, 199 ctx,
200 } 200 }
201 } 201 }
@@ -254,20 +254,16 @@ impl<'a, 'b> ActionBuilder<'a, 'b> {
254 algo::diff(&node, &new).into_text_edit(&mut self.edit) 254 algo::diff(&node, &new).into_text_edit(&mut self.edit)
255 } 255 }
256 256
257 pub(crate) fn set_file(&mut self, assist_file: AssistFile) { 257 pub(crate) fn set_file(&mut self, assist_file: FileId) {
258 self.file = assist_file 258 self.file = assist_file;
259 } 259 }
260 260
261 fn build(self, change_label: String, current_file: FileId) -> SourceChange { 261 fn build(self, change_label: String) -> SourceChange {
262 let edit = self.edit.finish(); 262 let edit = self.edit.finish();
263 if edit.is_empty() && self.cursor_position.is_none() { 263 if edit.is_empty() && self.cursor_position.is_none() {
264 panic!("Only call `add_assist` if the assist can be applied") 264 panic!("Only call `add_assist` if the assist can be applied")
265 } 265 }
266 let file = match self.file {
267 AssistFile::CurrentFile => current_file,
268 AssistFile::TargetFile(it) => it,
269 };
270 SingleFileChange { label: change_label, edit, cursor_position: self.cursor_position } 266 SingleFileChange { label: change_label, edit, cursor_position: self.cursor_position }
271 .into_source_change(file) 267 .into_source_change(self.file)
272 } 268 }
273} 269}