From 312a7796105ae33f8f73e77291c0c4d46f6202d5 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 19 Feb 2020 12:44:20 +0100 Subject: Add `remove_mut` assist --- crates/ra_assists/src/handlers/remove_mut.rs | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 crates/ra_assists/src/handlers/remove_mut.rs (limited to 'crates/ra_assists/src/handlers/remove_mut.rs') 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 @@ +use ra_syntax::{SyntaxKind, TextRange, T}; + +use crate::{Assist, AssistCtx, AssistId}; + +// Assist: remove_mut +// +// Removes the `mut` keyword. +// +// ``` +// impl Walrus { +// fn feed(&mut<|> self, amount: u32) {} +// } +// ``` +// -> +// ``` +// impl Walrus { +// fn feed(&self, amount: u32) {} +// } +// ``` +pub(crate) fn remove_mut(ctx: AssistCtx) -> Option { + let mut_token = ctx.find_token_at_offset(T![mut])?; + let delete_from = mut_token.text_range().start(); + let delete_to = match mut_token.next_token() { + Some(it) if it.kind() == SyntaxKind::WHITESPACE => it.text_range().end(), + _ => mut_token.text_range().end(), + }; + + ctx.add_assist(AssistId("remove_mut"), "Remove `mut` keyword", |edit| { + edit.set_cursor(delete_from); + edit.delete(TextRange::from_to(delete_from, delete_to)); + }) +} -- cgit v1.2.3