internal IndentBlockOperation( SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, int indentationDelta, IndentBlockOption option ) { Contract.ThrowIfFalse(option.IsMaskOn(IndentBlockOption.PositionMask)); Contract.ThrowIfFalse(option.IsMaskOn(IndentBlockOption.RelativePositionMask)); Contract.ThrowIfFalse(baseToken.Span.End <= textSpan.Start); Contract.ThrowIfTrue(textSpan.Start < 0 || textSpan.Length < 0); Contract.ThrowIfTrue(startToken.RawKind == 0); Contract.ThrowIfTrue(endToken.RawKind == 0); this.BaseToken = baseToken; this.TextSpan = textSpan; this.Option = option; this.StartToken = startToken; this.EndToken = endToken; this.IsRelativeIndentation = true; this.IndentationDeltaOrPosition = indentationDelta; }
protected void SetAlignmentBlockOperation( List <IndentBlockOperation> list, SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.RelativePosition) { list.Add(FormattingOperations.CreateRelativeIndentBlockOperation(baseToken, startToken, endToken, indentationDelta: 0, option: option)); }
protected void AddIndentBlockOperation( List<IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.RelativePosition) { if (startToken.CSharpKind() == SyntaxKind.None || endToken.CSharpKind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, indentationDelta: 1, option: option)); }
protected void AddAbsoluteZeroIndentBlockOperation( List <IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.AbsolutePosition) { if (startToken.CSharpKind() == SyntaxKind.None || endToken.CSharpKind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, indentationDelta: 0, option: option)); }
protected void AddIndentBlockOperation( List <IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.RelativePosition) { if (startToken.Kind() == SyntaxKind.None || endToken.Kind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, indentationDelta: 1, option: option)); }
protected void AddAbsoluteZeroIndentBlockOperation( List<IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.AbsolutePosition) { if (startToken.Kind() == SyntaxKind.None || endToken.Kind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, indentationDelta: 0, option: option)); }
internal IndentBlockOperation(SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, int indentationDelta, IndentBlockOption option) { Contract.ThrowIfFalse(option.IsMaskOn(IndentBlockOption.PositionMask)); Contract.ThrowIfTrue(textSpan.Start < 0 || textSpan.Length < 0); Contract.ThrowIfTrue(startToken.RawKind == 0); Contract.ThrowIfTrue(endToken.RawKind == 0); this.BaseToken = default(SyntaxToken); this.TextSpan = textSpan; this.Option = option; this.StartToken = startToken; this.EndToken = endToken; this.IsRelativeIndentation = false; this.IndentationDeltaOrPosition = indentationDelta; }
protected static void AddUnindentBlockOperation( List <IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, bool includeTriviaAtEnd = false, IndentBlockOption option = IndentBlockOption.RelativePosition ) { if (startToken.Kind() == SyntaxKind.None || endToken.Kind() == SyntaxKind.None) { return; } if (includeTriviaAtEnd) { list.Add( FormattingOperations.CreateIndentBlockOperation( startToken, endToken, indentationDelta: -1, option: option ) ); } else { var startPosition = CommonFormattingHelpers.GetStartPositionOfSpan(startToken); var endPosition = endToken.Span.End; list.Add( FormattingOperations.CreateIndentBlockOperation( startToken, endToken, TextSpan.FromBounds(startPosition, endPosition), indentationDelta: -1, option: option ) ); } }
protected void AddUnindentBlockOperation( List<IndentBlockOperation> list, SyntaxToken startToken, SyntaxToken endToken, bool includeTriviaAtEnd = false, IndentBlockOption option = IndentBlockOption.RelativePosition) { if (startToken.CSharpKind() == SyntaxKind.None || endToken.CSharpKind() == SyntaxKind.None) { return; } if (includeTriviaAtEnd) { list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, indentationDelta: -1, option: option)); } else { var startPosition = CommonFormattingHelpers.GetStartPositionOfSpan(startToken); var endPosition = endToken.Span.End; list.Add(FormattingOperations.CreateIndentBlockOperation(startToken, endToken, TextSpan.FromBounds(startPosition, endPosition), indentationDelta: -1, option: option)); } }
/// <summary> /// create indent block region around the given text span with the given indentation delta added to the column of the base token /// </summary> public static IndentBlockOperation CreateRelativeIndentBlockOperation(SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, int indentationDelta, IndentBlockOption option) { return new IndentBlockOperation(baseToken, startToken, endToken, textSpan, indentationDelta, option); }
public static bool IsMaskOn(this IndentBlockOption option, IndentBlockOption mask) { return((option & mask) != 0x0); }
/// <summary> /// create indent block region around the given text span with the given indentation delta added to the existing indentation at the position of the start token /// </summary> public static IndentBlockOperation CreateIndentBlockOperation(SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, int indentationDelta, IndentBlockOption option) => new IndentBlockOperation(startToken, endToken, textSpan, indentationDelta, option);
public static bool IsOn(this IndentBlockOption option, IndentBlockOption flag) { return((option & flag) == flag); }
public static bool IsMaskOn(this IndentBlockOption option, IndentBlockOption mask) => (option & mask) != 0x0;
protected void SetAlignmentBlockOperation( List<IndentBlockOperation> list, SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, IndentBlockOption option = IndentBlockOption.RelativePosition) { list.Add(FormattingOperations.CreateRelativeIndentBlockOperation(baseToken, startToken, endToken, indentationDelta: 0, option: option)); }
/// <summary> /// create indent block region around the start and end token with the given indentation delta added to the column of the base token /// </summary> public static IndentBlockOperation CreateRelativeIndentBlockOperation(SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, int indentationDelta, IndentBlockOption option) { var span = CommonFormattingHelpers.GetSpanIncludingTrailingAndLeadingTriviaOfAdjacentTokens(startToken, endToken); return(CreateRelativeIndentBlockOperation(baseToken, startToken, endToken, span, indentationDelta, option)); }
/// <summary> /// create indent block region around the start and end token with the given indentation delta added to the column of the base token /// </summary> public static IndentBlockOperation CreateRelativeIndentBlockOperation(SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, int indentationDelta, IndentBlockOption option) { var span = CommonFormattingHelpers.GetSpanIncludingTrailingAndLeadingTriviaOfAdjacentTokens(startToken, endToken); return CreateRelativeIndentBlockOperation(baseToken, startToken, endToken, span, indentationDelta, option); }
/// <summary> /// create indent block region around the given text span with the given indentation delta added to the column of the base token /// </summary> public static IndentBlockOperation CreateRelativeIndentBlockOperation(SyntaxToken baseToken, SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, int indentationDelta, IndentBlockOption option) { return(new IndentBlockOperation(baseToken, startToken, endToken, textSpan, indentationDelta, option)); }
public static bool IsOn(this IndentBlockOption option, IndentBlockOption flag) => (option & flag) == flag;