示例#1
0
        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);
        }
示例#2
0
        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);
        }
        public static SyntaxNode NormalizeWhiteSpaceHelper(SyntaxNode initialSourceNode)
        {
            if (GeeksProductivityToolsPackage.Instance != null)
            {
                initialSourceNode = Formatter.Format(initialSourceNode, GeeksProductivityToolsPackage.Instance.CleanupWorkingSolution.Workspace);
            }

            initialSourceNode = new BlockRewriter(initialSourceNode).Visit(initialSourceNode);
            initialSourceNode = new WhitespaceRewriter(initialSourceNode).Visit(initialSourceNode);
            return(initialSourceNode);
        }
        public static SyntaxNode NormalizeWhiteSpaceHelper(SyntaxNode initialSourceNode, Options options)
        {
            if (TidyCSharpPackage.Instance != null)
            {
                initialSourceNode = Formatter.Format(initialSourceNode, TidyCSharpPackage.Instance.CleanupWorkingSolution.Workspace);
            }

            initialSourceNode = new BlockRewriter(initialSourceNode, options).Visit(initialSourceNode);
            initialSourceNode = new WhitespaceRewriter(initialSourceNode, options).Apply();
            return(initialSourceNode);
        }
        public SyntaxNode NormalizeWhiteSpaceHelper(SyntaxNode initialSourceNode, Options options)
        {
            if (TidyCSharpPackage.Instance != null)
            {
                initialSourceNode = Formatter.Format(initialSourceNode, TidyCSharpPackage.Instance.CleanupWorkingSolution.Workspace);
            }

            initialSourceNode = new BlockRewriter(initialSourceNode, options).Visit(initialSourceNode);
            initialSourceNode = RefreshResult(initialSourceNode);
            initialSourceNode = new WhitespaceRewriter(initialSourceNode, options).Apply();
            if (CheckOption((int)CleanupTypes.Add_blank_line_between_statements_more_than_one_line))
            {
                initialSourceNode = RefreshResult(initialSourceNode);
                initialSourceNode = new BlankLineRewriter(this.ProjectItemDetails.SemanticModel).Visit(initialSourceNode);
            }
            return(initialSourceNode);
        }
        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();
        }