diff options
Diffstat (limited to 'crates/ra_assists/src/handlers/add_function.rs')
-rw-r--r-- | crates/ra_assists/src/handlers/add_function.rs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/crates/ra_assists/src/handlers/add_function.rs b/crates/ra_assists/src/handlers/add_function.rs index fc4e82309..a11bc2551 100644 --- a/crates/ra_assists/src/handlers/add_function.rs +++ b/crates/ra_assists/src/handlers/add_function.rs | |||
@@ -13,7 +13,7 @@ use rustc_hash::{FxHashMap, FxHashSet}; | |||
13 | use crate::{ | 13 | use crate::{ |
14 | assist_config::SnippetCap, | 14 | assist_config::SnippetCap, |
15 | utils::{render_snippet, Cursor}, | 15 | utils::{render_snippet, Cursor}, |
16 | AssistContext, AssistId, Assists, | 16 | AssistContext, AssistId, AssistKind, Assists, |
17 | }; | 17 | }; |
18 | 18 | ||
19 | // Assist: add_function | 19 | // Assist: add_function |
@@ -62,15 +62,21 @@ pub(crate) fn add_function(acc: &mut Assists, ctx: &AssistContext) -> Option<()> | |||
62 | let function_builder = FunctionBuilder::from_call(&ctx, &call, &path, target_module)?; | 62 | let function_builder = FunctionBuilder::from_call(&ctx, &call, &path, target_module)?; |
63 | 63 | ||
64 | let target = call.syntax().text_range(); | 64 | let target = call.syntax().text_range(); |
65 | acc.add(AssistId("add_function"), "Add function", target, |builder| { | 65 | acc.add( |
66 | let function_template = function_builder.render(); | 66 | AssistId("add_function"), |
67 | builder.edit_file(function_template.file); | 67 | AssistKind::RefactorExtract, |
68 | let new_fn = function_template.to_string(ctx.config.snippet_cap); | 68 | "Add function", |
69 | match ctx.config.snippet_cap { | 69 | target, |
70 | Some(cap) => builder.insert_snippet(cap, function_template.insert_offset, new_fn), | 70 | |builder| { |
71 | None => builder.insert(function_template.insert_offset, new_fn), | 71 | let function_template = function_builder.render(); |
72 | } | 72 | builder.edit_file(function_template.file); |
73 | }) | 73 | let new_fn = function_template.to_string(ctx.config.snippet_cap); |
74 | match ctx.config.snippet_cap { | ||
75 | Some(cap) => builder.insert_snippet(cap, function_template.insert_offset, new_fn), | ||
76 | None => builder.insert(function_template.insert_offset, new_fn), | ||
77 | } | ||
78 | }, | ||
79 | ) | ||
74 | } | 80 | } |
75 | 81 | ||
76 | struct FunctionTemplate { | 82 | struct FunctionTemplate { |