private List <SuppressOperation>?GetInitialSuppressOperations( SyntaxToken token, SuppressOption mask ) { var startNode = token.Parent; var startPosition = token.SpanStart; // starting from given token, move up to root until the first meaningful // operation has found var list = new List <SuppressOperation>(); bool predicate(SuppressOperation o) { if (o == null) { return(true); } if (!o.TextSpan.Contains(startPosition)) { return(true); } if ( o.ContainsElasticTrivia(_tokenStream) && !o.Option.IsOn(SuppressOption.IgnoreElasticWrapping) ) { return(true); } if (!o.Option.IsMaskOn(mask)) { return(true); } return(false); } var currentIndentationNode = startNode; while (currentIndentationNode != null) { _formattingRules.AddSuppressOperations(list, currentIndentationNode); list.RemoveAll(predicate); if (list.Count > 0) { return(list); } currentIndentationNode = currentIndentationNode.Parent; } return(null); }
private List <SuppressOperation>?GetInitialSuppressOperations( SyntaxToken startToken, SyntaxToken endToken, SuppressOption mask ) { var startList = this.GetInitialSuppressOperations(startToken, mask); var endList = this.GetInitialSuppressOperations(endToken, mask); return(startList.Combine(endList)); }
internal SuppressOperation(SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, SuppressOption option) { Contract.ThrowIfTrue(textSpan.Start < 0 || textSpan.Length < 0); Contract.ThrowIfTrue(startToken.RawKind == 0); Contract.ThrowIfTrue(endToken.RawKind == 0); this.TextSpan = textSpan; this.Option = option; this.StartToken = startToken; this.EndToken = endToken; }
protected static void AddSuppressAllOperationIfOnMultipleLine( List <SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption extraOption = SuppressOption.None ) => AddSuppressOperation( list, startToken, endToken, SuppressOption.NoSpacingIfOnMultipleLine | SuppressOption.NoWrapping | extraOption );
protected static void AddSuppressWrappingIfOnSingleLineOperation( List <SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption extraOption = SuppressOption.None ) => AddSuppressOperation( list, startToken, endToken, SuppressOption.NoWrappingIfOnSingleLine | extraOption );
protected static void AddSuppressOperation( List <SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption option ) { if (startToken.Kind() == SyntaxKind.None || endToken.Kind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateSuppressOperation(startToken, endToken, option)); }
internal SuppressOperation( SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, SuppressOption option ) { Contract.ThrowIfTrue(textSpan.Start < 0 || textSpan.Length < 0); Contract.ThrowIfTrue(startToken.RawKind == 0); Contract.ThrowIfTrue(endToken.RawKind == 0); this.TextSpan = textSpan; this.Option = option; this.StartToken = startToken; this.EndToken = endToken; }
/// <summary> /// create suppress region around the given text span /// </summary> private static SuppressOperation CreateSuppressOperation(SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, SuppressOption option) { return(new SuppressOperation(startToken, endToken, textSpan, option)); }
private List<SuppressOperation> GetInitialSuppressOperations(SyntaxToken token, SuppressOption mask) { var startNode = token.Parent; var startPosition = token.SpanStart; // starting from given token, move up to root until the first meaningful // operation has found var list = new List<SuppressOperation>(); Predicate<SuppressOperation> predicate = o => { if (o == null) { return true; } if (o.ContainsElasticTrivia(this.tokenStream) && !o.Option.IsOn(SuppressOption.IgnoreElastic)) { return true; } if (!o.TextSpan.Contains(startPosition)) { return true; } if (!o.Option.IsMaskOn(mask)) { return true; } return false; }; var currentIndentationNode = startNode; while (currentIndentationNode != null) { this.formattingRules.AddSuppressOperations(list, currentIndentationNode); list.RemoveAll(predicate); if (list.Count > 0) { return list; } currentIndentationNode = currentIndentationNode.Parent; } return null; }
protected void AddSuppressWrappingIfOnSingleLineOperation(List<SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption extraOption = SuppressOption.None) { AddSuppressOperation(list, startToken, endToken, SuppressOption.NoWrappingIfOnSingleLine | extraOption); }
/// <summary> /// create suppress region around start and end token /// </summary> public static SuppressOperation CreateSuppressOperation(SyntaxToken startToken, SyntaxToken endToken, SuppressOption option) { return(CreateSuppressOperation(startToken, endToken, TextSpan.FromBounds(startToken.SpanStart, endToken.Span.End), option)); }
public static SuppressOption RemoveFlag(this SuppressOption option, SuppressOption flag) { return(option & ~flag); }
public static bool IsOn(this SuppressOption option, SuppressOption flag) { return((option & flag) == flag); }
public static bool IsOn(this SuppressOption option, SuppressOption flag) => (option & flag) == flag;
public static bool IsMaskOn(this SuppressOption option, SuppressOption mask) { return((option & mask) != 0x0); }
public static bool IsMaskOn(this SuppressOption option, SuppressOption mask) => (option & mask) != 0x0;
public static SuppressOption RemoveFlag(this SuppressOption option, SuppressOption flag) => option & ~flag;
protected void AddSuppressAllOperationIfOnMultipleLine(List<SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption extraOption = SuppressOption.None) { AddSuppressOperation(list, startToken, endToken, SuppressOption.NoSpacingIfOnMultipleLine | SuppressOption.NoWrapping | extraOption); }
private List<SuppressOperation> GetInitialSuppressOperations(SyntaxToken startToken, SyntaxToken endToken, SuppressOption mask) { var startList = this.GetInitialSuppressOperations(startToken, mask); var endList = this.GetInitialSuppressOperations(endToken, mask); return startList.Combine(endList); }
/// <summary> /// create suppress region around the given text span /// </summary> private static SuppressOperation CreateSuppressOperation(SyntaxToken startToken, SyntaxToken endToken, TextSpan textSpan, SuppressOption option) { return new SuppressOperation(startToken, endToken, textSpan, option); }
/// <summary> /// create suppress region around start and end token /// </summary> public static SuppressOperation CreateSuppressOperation(SyntaxToken startToken, SyntaxToken endToken, SuppressOption option) { return CreateSuppressOperation(startToken, endToken, TextSpan.FromBounds(startToken.SpanStart, endToken.Span.End), option); }
protected void AddSuppressOperation(List<SuppressOperation> list, SyntaxToken startToken, SyntaxToken endToken, SuppressOption option) { if (startToken.CSharpKind() == SyntaxKind.None || endToken.CSharpKind() == SyntaxKind.None) { return; } list.Add(FormattingOperations.CreateSuppressOperation(startToken, endToken, option)); }