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); }
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); } }
public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span) => _trackingService.TryGetSpan(id, source, out span);