public SnapshotPoint?GetInsertionPoint(Predicate <ITextBuffer> match) => throw new NotImplementedException(); //TODO: public override string ToString() => nameof(IMappingPoint) + "@" + snapshotPoint.ToString();
internal static SourceLocation TranslateIndex(int index, ITextSnapshot fromSnapshot, ModuleAnalysis toAnalysisSnapshot) { SnapshotCookie snapshotCookie; // TODO: buffers differ in the REPL window case, in the future we should handle this better if (toAnalysisSnapshot != null && fromSnapshot != null && (snapshotCookie = toAnalysisSnapshot.AnalysisCookie as SnapshotCookie) != null && snapshotCookie.Snapshot != null && snapshotCookie.Snapshot.TextBuffer == fromSnapshot.TextBuffer) { var fromPoint = new SnapshotPoint(fromSnapshot, index); var fromLine = fromPoint.GetContainingLine(); var toPoint = fromPoint.TranslateTo(snapshotCookie.Snapshot, PointTrackingMode.Negative); var toLine = toPoint.GetContainingLine(); Debug.Assert(fromLine != null, "Unable to get 'from' line from " + fromPoint.ToString()); Debug.Assert(toLine != null, "Unable to get 'to' line from " + toPoint.ToString()); return new SourceLocation( toPoint.Position, (toLine != null ? toLine.LineNumber : fromLine != null ? fromLine.LineNumber : 0) + 1, index - (fromLine != null ? fromLine.Start.Position : 0) + 1 ); } else if (fromSnapshot != null) { var fromPoint = new SnapshotPoint(fromSnapshot, index); var fromLine = fromPoint.GetContainingLine(); return new SourceLocation( index, fromLine.LineNumber + 1, index - fromLine.Start.Position + 1 ); } else { return new SourceLocation(index, 1, 1); } }