mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +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 {
|
fn pretty_print_macro_expansion(expn: SyntaxNode) -> String {
|
||||||
let mut res = String::new();
|
let mut res = String::new();
|
||||||
let mut prev_kind = SyntaxKind::EOF;
|
let mut prev_kind = SyntaxKind::EOF;
|
||||||
|
let mut indent_level = 0;
|
||||||
for token in iter::successors(expn.first_token(), |t| t.next_token()) {
|
for token in iter::successors(expn.first_token(), |t| t.next_token()) {
|
||||||
let curr_kind = token.kind();
|
let curr_kind = token.kind();
|
||||||
let space = match (prev_kind, curr_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);
|
res.push_str(space);
|
||||||
|
if space == "\n" && curr_kind != T!['}'] {
|
||||||
|
res.push_str(&" ".repeat(indent_level));
|
||||||
|
}
|
||||||
prev_kind = curr_kind;
|
prev_kind = curr_kind;
|
||||||
format_to!(res, "{}", token)
|
format_to!(res, "{}", token)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue