aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers/add_impl.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-03-28 10:01:25 +0000
committerAleksey Kladov <[email protected]>2020-03-28 10:01:25 +0000
commitb764c38436fcb9426eb7da3be4f5fbcd63b316f5 (patch)
treea599f1ffff953040a0c2bb635b33b0f6a57e5e59 /crates/ra_assists/src/handlers/add_impl.rs
parenta1fea0d34ee8f3436aefd87d4c133a7ff50ffbb0 (diff)
Start stdx
This crate will hold everything to small to be worth publishing
Diffstat (limited to 'crates/ra_assists/src/handlers/add_impl.rs')
-rw-r--r--crates/ra_assists/src/handlers/add_impl.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/crates/ra_assists/src/handlers/add_impl.rs b/crates/ra_assists/src/handlers/add_impl.rs
index afae7d385..6622eadb2 100644
--- a/crates/ra_assists/src/handlers/add_impl.rs
+++ b/crates/ra_assists/src/handlers/add_impl.rs
@@ -1,9 +1,8 @@
1use format_buf::format;
2use join_to_string::join;
3use ra_syntax::{ 1use ra_syntax::{
4 ast::{self, AstNode, NameOwner, TypeParamsOwner}, 2 ast::{self, AstNode, NameOwner, TypeParamsOwner},
5 TextUnit, 3 TextUnit,
6}; 4};
5use stdx::{format_to, SepBy};
7 6
8use crate::{Assist, AssistCtx, AssistId}; 7use crate::{Assist, AssistCtx, AssistId};
9 8
@@ -36,7 +35,7 @@ pub(crate) fn add_impl(ctx: AssistCtx) -> Option<Assist> {
36 let mut buf = String::new(); 35 let mut buf = String::new();
37 buf.push_str("\n\nimpl"); 36 buf.push_str("\n\nimpl");
38 if let Some(type_params) = &type_params { 37 if let Some(type_params) = &type_params {
39 format!(buf, "{}", type_params.syntax()); 38 format_to!(buf, "{}", type_params.syntax());
40 } 39 }
41 buf.push_str(" "); 40 buf.push_str(" ");
42 buf.push_str(name.text().as_str()); 41 buf.push_str(name.text().as_str());
@@ -47,7 +46,9 @@ pub(crate) fn add_impl(ctx: AssistCtx) -> Option<Assist> {
47 .map(|it| it.text().clone()); 46 .map(|it| it.text().clone());
48 let type_params = 47 let type_params =
49 type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone()); 48 type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone());
50 join(lifetime_params.chain(type_params)).surround_with("<", ">").to_buf(&mut buf); 49
50 let generic_params = lifetime_params.chain(type_params).sep_by(", ");
51 format_to!(buf, "<{}>", generic_params)
51 } 52 }
52 buf.push_str(" {\n"); 53 buf.push_str(" {\n");
53 edit.set_cursor(start_offset + TextUnit::of_str(&buf)); 54 edit.set_cursor(start_offset + TextUnit::of_str(&buf));