aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/flip_comma.rs
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-02-11 17:30:53 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-02-11 17:30:53 +0000
commitb356ab46f2b7482bf1ae0c0f6cd5a87ece8742bf (patch)
tree094055dc8b24154fb8525c5910ae6dde4b4f4fe9 /crates/ra_assists/src/flip_comma.rs
parent77ccac74f94fbe387fc587d46f9d93f04fce3644 (diff)
parent5c9c0d3ae2735b4b32a44742bac800ca616fdde8 (diff)
Merge #781
781: Refactor to allow for multiple assists r=matklad a=eulerdisk This is necessary to allow assist "providers" (which currently are simple free function) to produce multiple assists. I'm not sure this is the best possible refactoring tough. Co-authored-by: Andrea Pretto <[email protected]>
Diffstat (limited to 'crates/ra_assists/src/flip_comma.rs')
-rw-r--r--crates/ra_assists/src/flip_comma.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/ra_assists/src/flip_comma.rs b/crates/ra_assists/src/flip_comma.rs
index 33da58f17..08644d720 100644
--- a/crates/ra_assists/src/flip_comma.rs
+++ b/crates/ra_assists/src/flip_comma.rs
@@ -6,15 +6,17 @@ use ra_syntax::{
6 6
7use crate::{AssistCtx, Assist, non_trivia_sibling}; 7use crate::{AssistCtx, Assist, non_trivia_sibling};
8 8
9pub(crate) fn flip_comma(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 9pub(crate) fn flip_comma(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
10 let comma = ctx.leaf_at_offset().find(|leaf| leaf.kind() == COMMA)?; 10 let comma = ctx.leaf_at_offset().find(|leaf| leaf.kind() == COMMA)?;
11 let prev = non_trivia_sibling(comma, Direction::Prev)?; 11 let prev = non_trivia_sibling(comma, Direction::Prev)?;
12 let next = non_trivia_sibling(comma, Direction::Next)?; 12 let next = non_trivia_sibling(comma, Direction::Next)?;
13 ctx.build("flip comma", |edit| { 13 ctx.add_action("flip comma", |edit| {
14 edit.target(comma.range()); 14 edit.target(comma.range());
15 edit.replace(prev.range(), next.text()); 15 edit.replace(prev.range(), next.text());
16 edit.replace(next.range(), prev.text()); 16 edit.replace(next.range(), prev.text());
17 }) 17 });
18
19 ctx.build()
18} 20}
19 21
20#[cfg(test)] 22#[cfg(test)]