mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 14:51:48 +00:00
indent macro output when pprinting
This commit is contained in:
parent
a0d9e78ec3
commit
6407e2e789
2 changed files with 16 additions and 6 deletions
|
@ -98,6 +98,7 @@ fn reindent(indent: IndentLevel, pp: String) -> String {
|
|||
fn pretty_print_macro_expansion(expn: SyntaxNode) -> String {
|
||||
let mut res = String::new();
|
||||
let mut prev_kind = SyntaxKind::EOF;
|
||||
let mut indent_level = 0;
|
||||
for token in iter::successors(expn.first_token(), |t| t.next_token()) {
|
||||
let curr_kind = token.kind();
|
||||
let space = match (prev_kind, curr_kind) {
|
||||
|
@ -113,7 +114,16 @@ fn pretty_print_macro_expansion(expn: SyntaxNode) -> String {
|
|||
_ => "",
|
||||
};
|
||||
|
||||
match prev_kind {
|
||||
T!['{'] => indent_level += 1,
|
||||
T!['}'] => indent_level -= 1,
|
||||
_ => (),
|
||||
}
|
||||
|
||||
res.push_str(space);
|
||||
if space == "\n" && curr_kind != T!['}'] {
|
||||
res.push_str(&" ".repeat(indent_level));
|
||||
}
|
||||
prev_kind = curr_kind;
|
||||
format_to!(res, "{}", token)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue