private void AddRegion(List <Region> list, VSSnapshot snapshot, SyntaxTree tree, int startModifier, SyntaxNode startNode, SyntaxNode endNode) { int start = startNode.Span.GetSpan(snapshot).End + startModifier; int end = endNode.Span.GetSpan(snapshot).End; SourceLine startLine = snapshot.GetLineFromPosition(startNode.Span.GetSpan(snapshot).End); SourceLine endLine = snapshot.GetLineFromPosition(end); if (startLine.LineNumber == endLine.LineNumber) { return; } string text; if (endLine.LineNumber - startLine.LineNumber > 10) { int textStart = snapshot.GetLineFromLineNumber(startLine.LineNumber).Span.Start; int textEnd = snapshot.GetLineFromLineNumber(startLine.LineNumber + 10).Span.End; text = snapshot.GetText(textStart, textEnd - textStart); } else { text = snapshot.GetText(startLine.Span.Start, endLine.Span.End - startLine.Span.Start).Trim('\r', '\n'); } GLSL.Text.Span span = GLSL.Text.Span.Create(start, end); list.Add(new Region(snapshot.CreateTrackingSpan(span), text)); }
public override TrackingSpan CreateTrackingSpan(GLSL.Text.Span span) { if (span == null) { throw new ArgumentNullException(nameof(span)); } return(new VSTrackingSpan(this.TextSnapshot.CreateTrackingSpan(span.ToVSSpan(), SpanTrackingMode.EdgeExclusive))); }
public static SnapshotSpan GetSnapshotSpan(this Snapshot snapshot, GLSL.Text.Span span) { VSSnapshot vs = snapshot as VSSnapshot; if (vs == null) { throw new ArgumentException("snapshot must be a VSSnapshot"); } return(new SnapshotSpan(vs.TextSnapshot, span.ToVSSpan())); }
public GLSLSignature(Definition definition, TrackingSpan trackingSpan, Snapshot snapshot, ITextView textView, ISignatureHelpSession session) { GLSL.Text.Span span = trackingSpan.GetSpan(snapshot); this.ApplicableToSpan = snapshot.CreateTrackingSpan(GLSL.Text.Span.Create(span.Start, span.End - 1)).ToITrackingSpan(); this.Content = definition.ToString(); this.Documentation = definition.Documentation; this.Parameters = new ReadOnlyCollection <IParameter>(definition.GetParameters(this)); this.textView = textView; this.session = session; this.textView.TextBuffer.Changed += this.TextBufferChanged; this.textView.Caret.PositionChanged += this.CaretPositionChanged; this.session.Dismissed += this.OnDismissed; this.ComputeCurrentParamter(this.textView.TextBuffer.CurrentSnapshot); }
public static List <Run> ToRunsInSpan(this SyntaxNode node, Snapshot snapshot, GLSL.Text.Span span, IClassificationFormatMap formatMap, IClassificationTypeRegistryService typeRegistry) { List <Run> runs = new List <Run>(); foreach (SyntaxToken token in node.GetSyntaxTokens()) { if (span.Contains(token.Span.GetSpan(snapshot))) { runs.AddRange(token.ToRuns(formatMap, typeRegistry)); } } return(runs); }