aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers/add_function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/handlers/add_function.rs')
-rw-r--r--crates/ra_assists/src/handlers/add_function.rs26
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};
13use crate::{ 13use 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
76struct FunctionTemplate { 82struct FunctionTemplate {