Exemple #1
0
        public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
        {
            var session = _session;

            if (session == null)
            {
                span = default;
                return(false);
            }

            return(session.TryGetSpan(id, source, out span));
        }
        public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
        {
            Assert.Equal(id.DocumentId, _documentId);

            var spanOpt = TrackingSpans[id.Ordinal];
            if (spanOpt != null)
            {
                span = spanOpt.Value;
                return true;
            }

            span = default(TextSpan);
            return false;
        }
        public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
        {
            Assert.Equal(id.DocumentId, _documentId);

            var spanOpt = TrackingSpans[id.Ordinal];

            if (spanOpt != null)
            {
                span = spanOpt.Value;
                return(true);
            }

            span = default;
            return(false);
        }
        public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
        {
            if (Spans == null)
            {
                span = default;
                return(false);
            }

            var spans = Spans[id.DocumentId][id.Ordinal];

            if (spans != null)
            {
                span = spans.Value;
                return(true);
            }

            span = default;
            return(false);
        }
            public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
            {
                lock (_trackingSpans)
                {
                    if (_trackingSpans.TryGetValue(id.DocumentId, out var documentSpans) && documentSpans != null)
                    {
                        var trackingSpan = documentSpans[id.Ordinal];
                        var snapshot     = source.FindCorrespondingEditorTextSnapshot();

                        if (snapshot != null && snapshot.TextBuffer == trackingSpan.TextBuffer)
                        {
                            span = trackingSpan.GetSpan(snapshot).Span.ToTextSpan();
                            return(true);
                        }
                    }
                }

                span = default;
                return(false);
            }
Exemple #6
0
            public void UpdateActiveStatementSpans(SourceText source, IEnumerable <KeyValuePair <ActiveStatementId, TextSpan> > spans)
            {
                bool leafUpdated = false;
                bool updated     = false;

                ITrackingSpan[] documentSpans;
                lock (_trackingSpans)
                {
                    foreach (var span in spans)
                    {
                        ActiveStatementId id = span.Key;
                        if (_trackingSpans.TryGetValue(id.DocumentId, out documentSpans) && documentSpans != null)
                        {
                            var snapshot = source.FindCorrespondingEditorTextSnapshot();

                            // Avoid updating spans if the buffer has changed.
                            // Buffer change is handled by DocumentOpened event.
                            if (snapshot != null && snapshot.TextBuffer == documentSpans[id.Ordinal].TextBuffer)
                            {
                                documentSpans[id.Ordinal] = snapshot.CreateTrackingSpan(span.Value.ToSpan(), SpanTrackingMode.EdgeExclusive);

                                if (!leafUpdated)
                                {
                                    var baseStatements = _editSession.BaseActiveStatements[id.DocumentId];
                                    leafUpdated = (baseStatements[id.Ordinal].Flags & ActiveStatementFlags.LeafFrame) != 0;
                                }

                                updated = true;
                            }
                        }
                    }
                }

                if (updated)
                {
                    _service.OnTrackingSpansChanged(leafUpdated);
                }
            }
Exemple #7
0
 public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
 => _trackingService.TryGetSpan(id, source, out span);