private SyntaxNode ReformatBlockAndParent(CodeFixContext context, SyntaxNode syntaxRoot, BlockSyntax block) { var parentLastToken = block.OpenBraceToken.GetPreviousToken(); var parentEndLine = parentLastToken.GetLocation().GetLineSpan().EndLinePosition.Line; var blockStartLine = block.OpenBraceToken.GetLocation().GetLineSpan().StartLinePosition.Line; var newParentLastToken = parentLastToken; if (parentEndLine == blockStartLine) { var newTrailingTrivia = parentLastToken.TrailingTrivia .WithoutTrailingWhitespace() .Add(SyntaxFactory.CarriageReturnLineFeed); newParentLastToken = newParentLastToken.WithTrailingTrivia(newTrailingTrivia); } var newBlock = this.ReformatBlock(context, block); var rewriter = new BlockRewriter(parentLastToken, newParentLastToken, block, newBlock); var newSyntaxRoot = rewriter.Visit(syntaxRoot); return(newSyntaxRoot); }
public async Task <SyntaxNode> NormalizeWhiteSpaceHelperAsync(SyntaxNode initialSourceNode, Options options) { var modifiedSourceNode = initialSourceNode; if (TidyCSharpPackage.Instance != null) { modifiedSourceNode = Formatter.Format(modifiedSourceNode, TidyCSharpPackage.Instance.CleanupWorkingSolution.Workspace); } var blockRewriter = new BlockRewriter(modifiedSourceNode, IsReportOnlyMode, options); modifiedSourceNode = blockRewriter.Visit(modifiedSourceNode); if (IsReportOnlyMode) { CollectMessages(blockRewriter.GetReport()); } modifiedSourceNode = await RefreshResultAsync(modifiedSourceNode); if (CheckOption((int)CleanupTypes.Use_Slash_Instead_Of_Slash_Slash)) { var endoflineRewriter = new EndOFLineRewriter(modifiedSourceNode, IsReportOnlyMode, options); modifiedSourceNode = endoflineRewriter.Visit(modifiedSourceNode); modifiedSourceNode = await RefreshResultAsync(modifiedSourceNode); if (IsReportOnlyMode) { CollectMessages(endoflineRewriter.GetReport()); } } var whitespaceRewriter = new WhiteSpaceRewriter(modifiedSourceNode, IsReportOnlyMode, options); modifiedSourceNode = whitespaceRewriter.Apply(); if (IsReportOnlyMode) { CollectMessages(whitespaceRewriter.GetReport()); } if (CheckOption((int)CleanupTypes.Add_Blank_Line_Between_Statements_More_Than_One_Line)) { modifiedSourceNode = await RefreshResultAsync(modifiedSourceNode); var blRewriter = new BlankLineRewriter(modifiedSourceNode, IsReportOnlyMode, ProjectItemDetails.SemanticModel); modifiedSourceNode = blRewriter.Visit(modifiedSourceNode); if (IsReportOnlyMode) { CollectMessages(blRewriter.GetReport()); } } if (IsReportOnlyMode) { return(initialSourceNode); } return(modifiedSourceNode); }
private SyntaxNode ReformatBlockAndParent(Document document, SyntaxNode syntaxRoot, BlockSyntax block) { var parentLastToken = block.OpenBraceToken.GetPreviousToken(); var parentEndLine = parentLastToken.GetLineSpan().EndLinePosition.Line; var blockStartLine = block.OpenBraceToken.GetLineSpan().StartLinePosition.Line; var newParentLastToken = parentLastToken; if (parentEndLine == blockStartLine) { var newTrailingTrivia = parentLastToken.TrailingTrivia .WithoutTrailingWhitespace() .Add(SyntaxFactory.CarriageReturnLineFeed); newParentLastToken = newParentLastToken.WithTrailingTrivia(newTrailingTrivia); } var newBlock = this.ReformatBlock(document, block); var rewriter = new BlockRewriter(parentLastToken, newParentLastToken, block, newBlock); var newSyntaxRoot = rewriter.Visit(syntaxRoot); return newSyntaxRoot.WithoutFormatting(); }
private static SyntaxNode ReformatBlockAndParent(Document document, IndentationSettings indentationSettings, SyntaxNode syntaxRoot, BlockSyntax block) { var parentLastToken = block.OpenBraceToken.GetPreviousToken(); var parentEndLine = parentLastToken.GetEndLine(); var blockStartLine = block.OpenBraceToken.GetLine(); var newParentLastToken = parentLastToken; if (parentEndLine == blockStartLine) { var newTrailingTrivia = parentLastToken.TrailingTrivia .WithoutTrailingWhitespace() .Add(SyntaxFactory.CarriageReturnLineFeed); newParentLastToken = newParentLastToken.WithTrailingTrivia(newTrailingTrivia); } var parentNextToken = block.CloseBraceToken.GetNextToken(); var nextTokenLine = parentNextToken.GetLine(); var blockCloseLine = block.CloseBraceToken.GetEndLine(); var newParentNextToken = parentNextToken; if (nextTokenLine == blockCloseLine) { newParentNextToken = newParentNextToken.WithLeadingTrivia(parentLastToken.LeadingTrivia); } var newBlock = ReformatBlock(document, indentationSettings, block); var rewriter = new BlockRewriter(parentLastToken, newParentLastToken, block, newBlock, parentNextToken, newParentNextToken); var newSyntaxRoot = rewriter.Visit(syntaxRoot); return(newSyntaxRoot.WithoutFormatting()); }
private static SyntaxNode ReformatBlockAndParent(Document document, IndentationSettings indentationSettings, SyntaxNode syntaxRoot, BlockSyntax block) { var parentLastToken = block.OpenBraceToken.GetPreviousToken(); var parentEndLine = parentLastToken.GetEndLine(); var blockStartLine = block.OpenBraceToken.GetLine(); var newParentLastToken = parentLastToken; if (parentEndLine == blockStartLine) { var newTrailingTrivia = parentLastToken.TrailingTrivia .WithoutTrailingWhitespace() .Add(SyntaxFactory.CarriageReturnLineFeed); newParentLastToken = newParentLastToken.WithTrailingTrivia(newTrailingTrivia); } var parentNextToken = block.CloseBraceToken.GetNextToken(); var nextTokenLine = parentNextToken.GetLine(); var blockCloseLine = block.CloseBraceToken.GetEndLine(); var newParentNextToken = parentNextToken; if (nextTokenLine == blockCloseLine) { newParentNextToken = newParentNextToken.WithLeadingTrivia(parentLastToken.LeadingTrivia); } var newBlock = ReformatBlock(document, indentationSettings, block); var rewriter = new BlockRewriter(parentLastToken, newParentLastToken, block, newBlock, parentNextToken, newParentNextToken); var newSyntaxRoot = rewriter.Visit(syntaxRoot); return newSyntaxRoot.WithoutFormatting(); }