private SnapshotSpan MapTo(SnapshotSpan span, ITextSnapshot snapshot, SpanTrackingMode spanTrackingMode) { if (span.Snapshot.TextBuffer == snapshot.TextBuffer) { return(span.TranslateTo(snapshot, spanTrackingMode)); } IBufferGraph graph = _bufferGraphFactoryService.CreateBufferGraph(snapshot.TextBuffer); IMappingSpan mappingSpan = graph.CreateMappingSpan(span, spanTrackingMode); NormalizedSnapshotSpanCollection mapped = mappingSpan.GetSpans(snapshot); if (mapped.Count == 1) { return(mapped[0]); } return(new SnapshotSpan(mapped[0].Start, mapped[mapped.Count - 1].End)); }
private SnapshotSpan MapTo(SnapshotSpan span, ITextSnapshot snapshot, SpanTrackingMode spanTrackingMode) { if (span.Snapshot.TextBuffer == snapshot.TextBuffer) return span.TranslateTo(snapshot, spanTrackingMode); IBufferGraph graph = _bufferGraphFactoryService.CreateBufferGraph(snapshot.TextBuffer); IMappingSpan mappingSpan = graph.CreateMappingSpan(span, spanTrackingMode); NormalizedSnapshotSpanCollection mapped = mappingSpan.GetSpans(snapshot); if (mapped.Count == 1) return mapped[0]; return new SnapshotSpan(mapped[0].Start, mapped[mapped.Count - 1].End); }