fix(generate_method): correct method indentation inside generated impl
@@ -174,10 +174,11 @@ fn add_func_to_accumulator(
label: String,
) -> Option<()> {
acc.add(AssistId("generate_function", AssistKind::Generate), label, text_range, |builder| {
- let function_template = function_builder.render();
+ let indent = IndentLevel::from_node(function_builder.target.syntax());
+ let function_template = function_builder.render(adt_name.is_some());
let mut func = function_template.to_string(ctx.config.snippet_cap);
if let Some(name) = adt_name {
- func = format!("\nimpl {} {{\n{}\n}}", name, func);
+ func = format!("\n{}impl {} {{\n{}\n{}}}", indent, name, func, indent);
}
builder.edit_file(file);
match ctx.config.snippet_cap {
@@ -307,7 +308,7 @@ impl FunctionBuilder {
})
}
- fn render(self) -> FunctionTemplate {
+ fn render(self, is_method: bool) -> FunctionTemplate {
let placeholder_expr = make::ext::expr_todo();
let fn_body = make::block_expr(vec![], Some(placeholder_expr));
let visibility = if self.needs_pub { Some(make::visibility_pub_crate()) } else { None };
@@ -325,8 +326,14 @@ impl FunctionBuilder {
match self.target {
GeneratedFunctionTarget::BehindItem(it) => {
- let indent = IndentLevel::from_node(&it);
+ let mut indent = IndentLevel::from_node(&it);
+ if is_method {
+ indent = indent + 1;
+ leading_ws = format!("{}", indent);
+ } else {
leading_ws = format!("\n\n{}", indent);
+ }
+
fn_def = fn_def.indent(indent);
trailing_ws = String::new();
}
@@ -1470,8 +1477,6 @@ fn foo() {S.bar$0();}
struct S;
fn foo() {S.bar();}
impl S {
-
-
fn bar(&self) ${0:-> _} {
todo!()
}
@@ -1517,8 +1522,6 @@ fn foo() {s::S.bar$0();}
mod s {
pub struct S;
impl S {
-
-
pub(crate) fn bar(&self) ${0:-> _} {
todo!()
}
@@ -1550,8 +1553,6 @@ mod s {
}
}
impl S {
-
-
fn bar(&self) ${0:-> _} {
todo!()
}
@@ -1573,8 +1574,6 @@ fn foo() {$0S.bar();}
struct S;
fn foo() {S.bar();}
impl S {
-
-
fn bar(&self) ${0:-> _} {
todo!()
}
@@ -1595,8 +1594,6 @@ fn foo() {S::bar$0();}
struct S;
fn foo() {S::bar();}
impl S {
-
-
fn bar() ${0:-> _} {
todo!()
}
@@ -1642,8 +1639,6 @@ fn foo() {s::S::bar$0();}
mod s {
pub struct S;
impl S {
-
-
pub(crate) fn bar() ${0:-> _} {
todo!()
}
@@ -1666,8 +1661,6 @@ fn foo() {$0S::bar();}
struct S;
fn foo() {S::bar();}
impl S {
-
-
fn bar() ${0:-> _} {
todo!()
}
@@ -1845,8 +1838,6 @@ fn main() {
Foo::new();
}
impl Foo {
-
-
fn new() ${0:-> _} {
todo!()
}
