diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-11 17:30:53 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-11 17:30:53 +0000 |
commit | b356ab46f2b7482bf1ae0c0f6cd5a87ece8742bf (patch) | |
tree | 094055dc8b24154fb8525c5910ae6dde4b4f4fe9 /crates/ra_assists/src/flip_comma.rs | |
parent | 77ccac74f94fbe387fc587d46f9d93f04fce3644 (diff) | |
parent | 5c9c0d3ae2735b4b32a44742bac800ca616fdde8 (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.rs | 8 |
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 | ||
7 | use crate::{AssistCtx, Assist, non_trivia_sibling}; | 7 | use crate::{AssistCtx, Assist, non_trivia_sibling}; |
8 | 8 | ||
9 | pub(crate) fn flip_comma(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 9 | pub(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)] |