From 5c9c0d3ae2735b4b32a44742bac800ca616fdde8 Mon Sep 17 00:00:00 2001 From: Andrea Pretto Date: Mon, 11 Feb 2019 18:07:21 +0100 Subject: ra_assists: assist "providers" can produce multiple assists --- crates/ra_assists/src/change_visibility.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'crates/ra_assists/src/change_visibility.rs') diff --git a/crates/ra_assists/src/change_visibility.rs b/crates/ra_assists/src/change_visibility.rs index 6d9a4eec2..c2ba897a4 100644 --- a/crates/ra_assists/src/change_visibility.rs +++ b/crates/ra_assists/src/change_visibility.rs @@ -14,7 +14,7 @@ pub(crate) fn change_visibility(ctx: AssistCtx) -> Option) -> Option { +fn add_vis(mut ctx: AssistCtx) -> Option { let item_keyword = ctx.leaf_at_offset().find(|leaf| match leaf.kind() { FN_KW | MOD_KW | STRUCT_KW | ENUM_KW | TRAIT_KW => true, _ => false, @@ -41,11 +41,13 @@ fn add_vis(ctx: AssistCtx) -> Option { (vis_offset(field.syntax()), ident.range()) }; - ctx.build("make pub(crate)", |edit| { + ctx.add_action("make pub(crate)", |edit| { edit.target(target); edit.insert(offset, "pub(crate) "); edit.set_cursor(offset); - }) + }); + + ctx.build() } fn vis_offset(node: &SyntaxNode) -> TextUnit { @@ -59,20 +61,24 @@ fn vis_offset(node: &SyntaxNode) -> TextUnit { .unwrap_or(node.range().start()) } -fn change_vis(ctx: AssistCtx, vis: &ast::Visibility) -> Option { +fn change_vis(mut ctx: AssistCtx, vis: &ast::Visibility) -> Option { if vis.syntax().text() == "pub" { - return ctx.build("change to pub(crate)", |edit| { + ctx.add_action("change to pub(crate)", |edit| { edit.target(vis.syntax().range()); edit.replace(vis.syntax().range(), "pub(crate)"); - edit.set_cursor(vis.syntax().range().start()); + edit.set_cursor(vis.syntax().range().start()) }); + + return ctx.build(); } if vis.syntax().text() == "pub(crate)" { - return ctx.build("change to pub", |edit| { + ctx.add_action("change to pub", |edit| { edit.target(vis.syntax().range()); edit.replace(vis.syntax().range(), "pub"); edit.set_cursor(vis.syntax().range().start()); }); + + return ctx.build(); } None } -- cgit v1.2.3