Пример #1
0
        public FrugalList <SnapshotPoint> MapInsertionPointToSourceSnapshots(IElisionSnapshot elisionSnapshot, int exposedPosition)
        {
            FrugalList <SnapshotPoint> points = new FrugalList <SnapshotPoint>();

            this.root.MapInsertionPointToSourceSnapshots(elisionSnapshot, exposedPosition, 0, points);
            return(points);
        }
Пример #2
0
        private Span MapNullSpansToSourceSnapshots(IElisionSnapshot elisionSnapshot, Span span, FrugalList <SnapshotSpan> result)
        {
            // TODO: this is identical to projection snapshot; can it be shared?
            FrugalList <SnapshotPoint> points = MapInsertionPointToSourceSnapshots(elisionSnapshot, span.Start);

            for (int p = 0; p < points.Count; ++p)
            {
                SnapshotPoint point      = points[p];
                SnapshotSpan  mappedSpan = new SnapshotSpan(point.Snapshot, point.Position, 0);
                if (result.Count == 0 || mappedSpan != result[result.Count - 1])
                {
                    result.Add(mappedSpan);
                }
            }
            return(span);
        }
Пример #3
0
        public void MapToSourceSnapshots(IElisionSnapshot elisionSnapshot, Span span, FrugalList <SnapshotSpan> result)
        {
            if (span.Length == 0)
            {
                span = MapNullSpansToSourceSnapshots(elisionSnapshot, span, result);
            }
            else
            {
                this.root.MapToSourceSnapshots(elisionSnapshot.SourceSnapshot, span, 0, result);
            }

#if DEBUG
            int length = 0;
            foreach (SnapshotSpan ss in result)
            {
                length += ss.Length;
            }
            Debug.Assert(length == span.Length);
#endif
        }
Пример #4
0
 public static IEnumerable <Tuple <ITextSnapshotLine, ITextSnapshotLine> > GetSnapshotLinesAndSourceLines(this IElisionSnapshot snapshot, ITextBuffer source)
 {
     return((from editLine in snapshot.Lines
             let position = snapshot.MapToSourceSnapshot(editLine.Start.Position)
                            select new { editLine, dataLine = source.CurrentSnapshot.GetLineFromPosition(position) }).Select(x => Tuple.Create <ITextSnapshotLine, ITextSnapshotLine>(x.editLine, x.dataLine)).ToList <Tuple <ITextSnapshotLine, ITextSnapshotLine> >());
 }