private void AddBlockIndentationOperation(List <IndentBlockOperation> list, SyntaxNode node, OptionSet optionSet) { var bracePair = node.GetBracePair(); // don't put block indentation operation if the block only contains label statement if (node.BlockContainsOnlyLabel() || !bracePair.IsValidBracePair()) { return; } if (IsExpressionWithBraces(node)) { var option = IndentBlockOption.RelativePosition; if (node.IsLambdaBodyBlock() || node is InitializerExpressionSyntax) { option = IndentBlockOption.RelativeToFirstTokenOnBaseTokenLine; } AddIndentBlockOperation(list, GetBaseTokenForRelativeIndentation(node, bracePair.Item1, optionSet), bracePair.Item1.GetNextToken(includeZeroWidth: true), bracePair.Item2.GetPreviousToken(includeZeroWidth: true), option); return; } AddIndentBlockOperation(list, bracePair.Item1.GetNextToken(includeZeroWidth: true), bracePair.Item2.GetPreviousToken(includeZeroWidth: true)); }
private void AddAndRemoveBlockIndentationOperation(List <IndentBlockOperation> list, SyntaxNode node, OptionSet optionSet) { var bracePair = node.GetBracePair(); // don't put block indentation operation if the block only contains label statement or it is lambda expression body block if (node.IsLambdaBodyBlock() || node.BlockContainsOnlyLabel() || !bracePair.IsValidBracePair()) { return; } if (node is BlockSyntax && optionSet.GetOption(CSharpFormattingOptions.OpenCloseBracesIndent)) { AddIndentBlockOperation(list, bracePair.Item1, bracePair.Item1, bracePair.Item1.Span); AddIndentBlockOperation(list, bracePair.Item2, bracePair.Item2, bracePair.Item2.Span); } if (node is BlockSyntax && !optionSet.GetOption(CSharpFormattingOptions.IndentBlock)) { var startToken = bracePair.Item1.GetNextToken(includeZeroWidth: true); var endToken = bracePair.Item2.GetPreviousToken(includeZeroWidth: true); RemoveIndentBlockOperation(list, startToken, endToken); } if (node is SwitchStatementSyntax && !optionSet.GetOption(CSharpFormattingOptions.IndentSwitchSection)) { var startToken = bracePair.Item1.GetNextToken(includeZeroWidth: true); var endToken = bracePair.Item2.GetPreviousToken(includeZeroWidth: true); RemoveIndentBlockOperation(list, startToken, endToken); } }