I am trying to learn roslyn and I want to change all whitespaces in my methods to same length.
For example I want to change this:
private void Method()
{
int a=2;
int b=4;
int c;
if (b != 0)
{
c = (a / b);
}
}
To something like this (I want to ignore braces):
private void Method()
{
int a=2;
int b=4;
int c;
if (b != 0)
{
c = (a / b);
}
}
I tried to VisitBlock and then change leadingTrivia of every statement.
I have my statements in IEnumerable Inteface and I have list for new statements
IEnumerable<StatementSyntax> statements = node.Statements.OfType<StatementSyntax>();
var newStatements = new SyntaxList<SyntaxNode>();
Then i am creating new whitespace trivia
Next I am making new statements in loop and finally I am creating new block.
foreach (var statement in statements)
{
StatementSyntax newStatement = statement.WithLeadingTrivia(newWhiteSpace);
newStatements = newStatements.Insert(newStatements.Count, newStatement);
}
var newBlock = SyntaxFactory.Block(newStatements)
node = node.ReplaceNode(node, newBlock);
This works almost fine for me but when I have statemenets bigger than 1 line, only 1st line is changed.