aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-02-19 11:49:52 +0000
committerGitHub <[email protected]>2020-02-19 11:49:52 +0000
commit624a9978e25c7c6cee7fd88afd1559f1f143fe4e (patch)
tree56160520062feb9d9b55e49051060bd3b2248ec7 /crates/ra_assists/src/handlers
parenteb804261dce7f13056566377148a41f460feed28 (diff)
parent312a7796105ae33f8f73e77291c0c4d46f6202d5 (diff)
Merge #3231
3231: Add `remove_mut` assist r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_assists/src/handlers')
-rw-r--r--crates/ra_assists/src/handlers/remove_mut.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/crates/ra_assists/src/handlers/remove_mut.rs b/crates/ra_assists/src/handlers/remove_mut.rs
new file mode 100644
index 000000000..6884830eb
--- /dev/null
+++ b/crates/ra_assists/src/handlers/remove_mut.rs
@@ -0,0 +1,32 @@
1use ra_syntax::{SyntaxKind, TextRange, T};
2
3use crate::{Assist, AssistCtx, AssistId};
4
5// Assist: remove_mut
6//
7// Removes the `mut` keyword.
8//
9// ```
10// impl Walrus {
11// fn feed(&mut<|> self, amount: u32) {}
12// }
13// ```
14// ->
15// ```
16// impl Walrus {
17// fn feed(&self, amount: u32) {}
18// }
19// ```
20pub(crate) fn remove_mut(ctx: AssistCtx) -> Option<Assist> {
21 let mut_token = ctx.find_token_at_offset(T![mut])?;
22 let delete_from = mut_token.text_range().start();
23 let delete_to = match mut_token.next_token() {
24 Some(it) if it.kind() == SyntaxKind::WHITESPACE => it.text_range().end(),
25 _ => mut_token.text_range().end(),
26 };
27
28 ctx.add_assist(AssistId("remove_mut"), "Remove `mut` keyword", |edit| {
29 edit.set_cursor(delete_from);
30 edit.delete(TextRange::from_to(delete_from, delete_to));
31 })
32}