示例#1
0
        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));
        }
示例#2
0
        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)));
        }
示例#3
0
        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()));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }