示例#1
0
        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;
        }
示例#2
0
 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));
 }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        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));
        }
示例#6
0
        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));
        }
示例#7
0
        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;
        }
示例#8
0
        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);
 }
示例#11
0
 public static bool IsMaskOn(this IndentBlockOption option, IndentBlockOption mask)
 {
     return((option & mask) != 0x0);
 }
示例#12
0
 /// <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);
示例#13
0
 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;
示例#15
0
 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));
 }
示例#16
0
        /// <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);
        }
示例#18
0
 /// <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;