fix(generate_method): correct method indentation inside generated impl
This commit is contained in:
parent
2b61be2975
commit
d0f2db3bf4
@ -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 @@ fn from_method_call(
|
||||
})
|
||||
}
|
||||
|
||||
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 @@ fn render(self) -> FunctionTemplate {
|
||||
|
||||
match self.target {
|
||||
GeneratedFunctionTarget::BehindItem(it) => {
|
||||
let indent = IndentLevel::from_node(&it);
|
||||
leading_ws = format!("\n\n{}", indent);
|
||||
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,11 +1477,9 @@ fn create_method() {
|
||||
struct S;
|
||||
fn foo() {S.bar();}
|
||||
impl S {
|
||||
|
||||
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
@ -1516,14 +1521,12 @@ mod s {
|
||||
r"
|
||||
mod s {
|
||||
pub struct S;
|
||||
impl S {
|
||||
|
||||
|
||||
pub(crate) fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
impl S {
|
||||
pub(crate) fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fn foo() {s::S.bar();}
|
||||
",
|
||||
)
|
||||
@ -1550,11 +1553,9 @@ fn foo() {
|
||||
}
|
||||
}
|
||||
impl S {
|
||||
|
||||
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
",
|
||||
@ -1573,11 +1574,9 @@ fn create_method_with_cursor_anywhere_on_call_expresion() {
|
||||
struct S;
|
||||
fn foo() {S.bar();}
|
||||
impl S {
|
||||
|
||||
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn bar(&self) ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
@ -1595,11 +1594,9 @@ fn create_static_method() {
|
||||
struct S;
|
||||
fn foo() {S::bar();}
|
||||
impl S {
|
||||
|
||||
|
||||
fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
@ -1641,14 +1638,12 @@ mod s {
|
||||
r"
|
||||
mod s {
|
||||
pub struct S;
|
||||
impl S {
|
||||
|
||||
|
||||
pub(crate) fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
impl S {
|
||||
pub(crate) fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fn foo() {s::S::bar();}
|
||||
",
|
||||
)
|
||||
@ -1666,11 +1661,9 @@ fn create_static_method_with_cursor_anywhere_on_call_expresion() {
|
||||
struct S;
|
||||
fn foo() {S::bar();}
|
||||
impl S {
|
||||
|
||||
|
||||
fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn bar() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
@ -1845,11 +1838,9 @@ fn main() {
|
||||
Foo::new();
|
||||
}
|
||||
impl Foo {
|
||||
|
||||
|
||||
fn new() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
fn new() ${0:-> _} {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user