示例#1
0
        internal HighFidelityTrackingPoint(ITextVersion version, int position, PointTrackingMode trackingMode, TrackingFidelityMode fidelity)
            : base(version, position, trackingMode)
        {
            if (fidelity != TrackingFidelityMode.UndoRedo && fidelity != TrackingFidelityMode.Backward)
            {
                throw new ArgumentOutOfRangeException(nameof(fidelity));
            }
            List <VersionNumberPosition> initialHistory = null;

            if (fidelity == TrackingFidelityMode.UndoRedo && version.VersionNumber > 0)
            {
                // The system may perform undo operations that reach prior to the initial version; if any of
                // those transitions are noninvertible, then redoing back to the initial version will give the
                // wrong answer. Thus we save the state of the point for the initial version, unless the
                // initial version happens to be version zero (in which case we could not undo past it).

                initialHistory = new List <VersionNumberPosition>();

                if (version.VersionNumber != version.ReiteratedVersionNumber)
                {
                    Debug.Assert(version.ReiteratedVersionNumber < version.VersionNumber);
                    // If the current version and reiterated version differ, also remember the position
                    // using the reiterated version number, since when undoing back to this point it
                    // will be the key that is used.
                    initialHistory.Add(new VersionNumberPosition(version.ReiteratedVersionNumber, position));
                }

                initialHistory.Add(new VersionNumberPosition(version.VersionNumber, position));
            }
            this.cachedPosition = new VersionPositionHistory(version, position, initialHistory);
            this.fidelity       = fidelity;
        }
 public MockTrackingPoint(MockTextSnapshot snapshot, int position, PointTrackingMode mode = PointTrackingMode.Positive, TrackingFidelityMode fidelity = TrackingFidelityMode.Forward)
 {
     _position = position;
     _snapshot = snapshot;
     _mode     = mode;
     _fidelity = fidelity;
 }
示例#3
0
        private SnapshotPoint?CheckedMapUpToBuffer(SnapshotPoint point, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match, PositionAffinity affinity)
        {
            if (point.Snapshot == null)
            {
                throw new ArgumentNullException("point");
            }
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException("trackingMode");
            }
            if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor)
            {
                throw new ArgumentOutOfRangeException("affinity");
            }

            if (!this.importingProjectionBufferMap.ContainsKey(point.Snapshot.TextBuffer))
            {
                return(null);
            }
            else
            {
                SnapshotPoint currentPoint = point.TranslateTo(point.Snapshot.TextBuffer.CurrentSnapshot, trackingMode);
                return(MapUpToBufferGuts(currentPoint, affinity, match));
            }
        }
示例#4
0
        public CustomTrackingSpan WithEndTrackingMode(PointTrackingMode endTrackingMode)
        {
            var snapshot = TextBuffer.CurrentSnapshot;
            var newEnd   = snapshot.CreateTrackingPoint(end.GetPosition(snapshot), endTrackingMode);

            return(new CustomTrackingSpan(start, newEnd));
        }
示例#5
0
        public SnapshotPoint?MapDownToInsertionPoint(SnapshotPoint position, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match)
        {
            var snapshot = position.Snapshot;
            var buffer   = snapshot.TextBuffer;
            int pos      = position.TranslateTo(snapshot, trackingMode);

            while (!match(snapshot))
            {
                var projBuffer = buffer as IProjectionBufferBase;
                if (projBuffer == null)
                {
                    return(null);
                }
                var projSnapshot = projBuffer.CurrentSnapshot;
                if (projSnapshot.SourceSnapshots.Count == 0)
                {
                    return(null);
                }
                var pt = projSnapshot.MapToSourceSnapshot(pos);
                pos      = pt.Position;
                snapshot = pt.Snapshot;
                buffer   = snapshot.TextBuffer;
            }
            return(new SnapshotPoint(snapshot, pos));
        }
示例#6
0
        public TrackingPointMock(ITextBuffer textBuffer, int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
        {
            _position = position;

            TextBuffer       = textBuffer;
            TrackingFidelity = trackingFidelity;
            TrackingMode     = trackingMode;
        }
示例#7
0
 public IMappingPoint CreateMappingPoint(SnapshotPoint point, PointTrackingMode trackingMode)
 {
     if (point.Snapshot is null)
     {
         throw new ArgumentException();
     }
     return(new MappingPoint(this, point, trackingMode));
 }
示例#8
0
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
 {
     if (trackingFidelity == TrackingFidelityMode.UndoRedo)
     {
         throw new NotSupportedException();
     }
     return(new TrackingPoint(this, position, trackingMode, trackingFidelity));
 }
 public TrackingPointMock(ITextBuffer textBuffer, int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
 {
     _position = position;
     
     TextBuffer = textBuffer;
     TrackingFidelity = trackingFidelity;
     TrackingMode = trackingMode;
 }
示例#10
0
 public SnapshotPoint?MapUpToFirstMatch(SnapshotPoint point, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match, PositionAffinity affinity)
 {
     if (match == null)
     {
         throw new ArgumentNullException("match");
     }
     return(CheckedMapUpToBuffer(point, trackingMode, match, affinity));
 }
        public VersionedPosition TranslateTo(ITextImageVersion other, PointTrackingMode mode)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            return(new VersionedPosition(other, other.TrackTo(this, mode)));
        }
示例#12
0
 public MappingPoint(SnapshotPoint snapshotPoint, PointTrackingMode trackingMode)
 {
     if (snapshotPoint.Snapshot == null)
     {
         throw new ArgumentException();
     }
     this.snapshotPoint = snapshotPoint;
     this.trackingMode  = trackingMode;
 }
示例#13
0
		public MappingPoint(IBufferGraph bufferGraph, SnapshotPoint snapshotPoint, PointTrackingMode trackingMode) {
			if (bufferGraph == null)
				throw new ArgumentNullException(nameof(bufferGraph));
			if (snapshotPoint.Snapshot == null)
				throw new ArgumentException();
			BufferGraph = bufferGraph;
			this.snapshotPoint = snapshotPoint;
			this.trackingMode = trackingMode;
		}
示例#14
0
        public SnapshotPoint?MapDownToFirstMatch(SnapshotPoint position, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match, PositionAffinity affinity)
        {
            var buffer = _buffers.FirstOrDefault(b => match(b.CurrentSnapshot));

            if (buffer != null)
            {
                return(position.TranslateTo(buffer.CurrentSnapshot, trackingMode));
            }
            return(null);
        }
示例#15
0
 public MappingPoint(IBufferGraph bufferGraph, SnapshotPoint snapshotPoint, PointTrackingMode trackingMode)
 {
     if (snapshotPoint.Snapshot == null)
     {
         throw new ArgumentException();
     }
     BufferGraph        = bufferGraph ?? throw new ArgumentNullException(nameof(bufferGraph));
     this.snapshotPoint = snapshotPoint;
     this.trackingMode  = trackingMode;
 }
示例#16
0
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
 {
     if (trackingFidelity == TrackingFidelityMode.Forward)
     {
         return(new ForwardFidelityTrackingPoint(this, position, trackingMode));
     }
     else
     {
         return(new HighFidelityTrackingPoint(this, position, trackingMode, trackingFidelity));
     }
 }
示例#17
0
		public SnapshotPoint? MapDownToSnapshot(SnapshotPoint position, PointTrackingMode trackingMode, ITextSnapshot targetSnapshot, PositionAffinity affinity) {
			if (position.Snapshot == null)
				throw new ArgumentException();
			if (targetSnapshot == null)
				throw new ArgumentNullException(nameof(targetSnapshot));

			var res = MapDownToBuffer(position, trackingMode, targetSnapshot.TextBuffer, affinity);
			if (res == null)
				return null;
			return res.Value.TranslateTo(targetSnapshot, trackingMode);
		}
示例#18
0
		public TrackingPoint(ITextVersion textVersion, int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity) {
			if (textVersion == null)
				throw new ArgumentNullException(nameof(textVersion));
			if ((uint)position > (uint)textVersion.Length)
				throw new ArgumentOutOfRangeException(nameof(position));
			TextBuffer = textVersion.TextBuffer;
			TrackingMode = trackingMode;
			TrackingFidelity = trackingFidelity;
			this.textVersion = textVersion;
			this.position = position;
		}
示例#19
0
		public SnapshotPoint? MapDownToBuffer(SnapshotPoint position, PointTrackingMode trackingMode, ITextBuffer targetBuffer, PositionAffinity affinity) {
			if (position.Snapshot == null)
				throw new ArgumentException();
			if (targetBuffer == null)
				throw new ArgumentNullException(nameof(targetBuffer));

			if (position.Snapshot.TextBuffer != TopBuffer)
				return null;
			if (TopBuffer != targetBuffer)
				return null;
			return position.TranslateTo(targetBuffer.CurrentSnapshot, trackingMode);
		}
示例#20
0
        public static int TrackPositionBackwardInTime(PointTrackingMode trackingMode,
                                                      int currentPosition,
                                                      ITextImageVersion currentVersion,
                                                      ITextImageVersion targetVersion)
        {
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException("trackingMode");
            }
            if (currentVersion == null)
            {
                throw new ArgumentNullException("currentVersion");
            }
            if (targetVersion == null)
            {
                throw new ArgumentNullException("targetVersion");
            }
            if (targetVersion.Identifier != currentVersion.Identifier)
            {
                throw new ArgumentException("currentVersion and targetVersion must be from the same ITextImage");
            }
            if (targetVersion.VersionNumber > currentVersion.VersionNumber)
            {
                throw new ArgumentOutOfRangeException("targetVersion");
            }
            if (currentPosition < 0 || currentPosition > currentVersion.Length)
            {
                throw new ArgumentOutOfRangeException("currentPosition");
            }

            // track backwards in time
            INormalizedTextChangeCollection[] textChangesStack = new INormalizedTextChangeCollection[currentVersion.VersionNumber - targetVersion.VersionNumber];
            int top = 0;

            {
                ITextImageVersion roverVersion = targetVersion;
                while (roverVersion != currentVersion)
                {
                    textChangesStack[top++] = roverVersion.Changes;
                    roverVersion            = roverVersion.Next;
                }
            }

            while (top > 0)
            {
                currentPosition = TrackPositionBackwardInTime(trackingMode,
                                                              currentPosition,
                                                              textChangesStack[--top]);
            }

            return(currentPosition);
        }
示例#21
0
        public SnapshotPoint?MapUpToBuffer(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextBuffer targetBuffer)
        {
            int position = 0;

            for (int i = 0; i < _buffers.Count; i++)
            {
                if (_buffers[i] == targetBuffer)
                {
                    return(new SnapshotPoint(point.Snapshot, position + point.Position));
                }
                position += _buffers[i].CurrentSnapshot.Length;
            }
            return(null);
        }
示例#22
0
 public int TrackTo(VersionedPosition other, PointTrackingMode mode)
 {
     if (other.Version == null)
     {
         throw new ArgumentException(nameof(other));
     }
     if (other.Version.VersionNumber == VersionNumber)
     {
         return(other.Position);
     }
     if (other.Version.VersionNumber > VersionNumber)
     {
         return(Tracking.TrackPositionForwardInTime(mode, other.Position, this, other.Version));
     }
     return(Tracking.TrackPositionBackwardInTime(mode, other.Position, this, other.Version));
 }
示例#23
0
 public TrackingPoint(ITextVersion textVersion, int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
 {
     if (textVersion == null)
     {
         throw new ArgumentNullException(nameof(textVersion));
     }
     if ((uint)position > (uint)textVersion.Length)
     {
         throw new ArgumentOutOfRangeException(nameof(position));
     }
     TextBuffer       = textVersion.TextBuffer;
     TrackingMode     = trackingMode;
     TrackingFidelity = trackingFidelity;
     this.textVersion = textVersion;
     this.position    = position;
 }
示例#24
0
        public SnapshotPoint?MapUpToSnapshot(SnapshotPoint position, PointTrackingMode trackingMode, PositionAffinity affinity, ITextSnapshot targetSnapshot)
        {
            if (targetSnapshot == null)
            {
                throw new ArgumentNullException("targetSnapshot");
            }

            SnapshotPoint?result = MapUpToBuffer(position, trackingMode, affinity, targetSnapshot.TextBuffer);

            if (result.HasValue && (result.Value.Snapshot != targetSnapshot))
            {
                result = result.Value.TranslateTo(targetSnapshot, trackingMode);
            }

            return(result);
        }
示例#25
0
        protected TrackingPoint(ITextVersion version, int position, PointTrackingMode trackingMode)
        {
            if (version == null)
            {
                throw new ArgumentNullException(nameof(version));
            }
            if (position <0 | position> version.Length)
            {
                throw new ArgumentOutOfRangeException(nameof(position));
            }
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException(nameof(trackingMode));
            }

            this.trackingMode = trackingMode;
        }
示例#26
0
        public SnapshotPoint?MapDownToFirstMatch(SnapshotPoint position, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match, PositionAffinity affinity)
        {
            if (position.Snapshot == null)
            {
                throw new ArgumentNullException("position");
            }
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException("trackingMode");
            }
            if (match == null)
            {
                throw new ArgumentNullException("match");
            }
            if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor)
            {
                throw new ArgumentOutOfRangeException("affinity");
            }
            if (!this.importingProjectionBufferMap.ContainsKey(position.Snapshot.TextBuffer))
            {
                return(null);
            }

            ITextBuffer   currentBuffer   = position.Snapshot.TextBuffer;
            ITextSnapshot currentSnapshot = currentBuffer.CurrentSnapshot;
            int           currentPosition = position.TranslateTo(currentSnapshot, trackingMode).Position;

            while (!match(currentSnapshot))
            {
                IProjectionBufferBase projBuffer = currentBuffer as IProjectionBufferBase;
                if (projBuffer == null)
                {
                    return(null);
                }
                IProjectionSnapshot projSnap = projBuffer.CurrentSnapshot;
                if (projSnap.SourceSnapshots.Count == 0)
                {
                    return(null);
                }
                SnapshotPoint currentPoint = projSnap.MapToSourceSnapshot(currentPosition, affinity);
                currentPosition = currentPoint.Position;
                currentSnapshot = currentPoint.Snapshot;
                currentBuffer   = currentSnapshot.TextBuffer;
            }
            return(new SnapshotPoint(currentSnapshot, currentPosition));
        }
示例#27
0
 public MappingPoint(SnapshotPoint anchorPoint, PointTrackingMode trackingMode, IBufferGraph bufferGraph)
 {
     if (anchorPoint.Snapshot == null)
     {
         throw new ArgumentNullException("anchorPoint");
     }
     if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
     {
         throw new ArgumentOutOfRangeException("trackingMode");
     }
     if (bufferGraph == null)
     {
         throw new ArgumentNullException("bufferGraph");
     }
     this.anchorPoint  = anchorPoint;
     this.trackingMode = trackingMode;
     this.bufferGraph  = bufferGraph;
 }
        private MappingPointSnapshot(ITextSnapshot root, SnapshotPoint anchor, PointTrackingMode trackingMode, IBufferGraph graph)
        {
            //Anchor and root are expected to be from concurrent snapshots
            ITextSnapshot correspondingAnchorSnapshot = MappingHelper.FindCorrespondingSnapshot(root, anchor.Snapshot.TextBuffer);

            _root = root;
            if (correspondingAnchorSnapshot != null)
            {
                _anchor = anchor.TranslateTo(correspondingAnchorSnapshot, trackingMode);
            }
            else
            {
                _anchor     = anchor;
                _unmappable = true;
            }
            _trackingMode = trackingMode;
            _graph        = graph;
        }
示例#29
0
        public SnapshotPoint?MapUpToSnapshot(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextSnapshot targetSnapshot)
        {
            if (point.Snapshot is null)
            {
                throw new ArgumentException();
            }
            if (targetSnapshot is null)
            {
                throw new ArgumentNullException(nameof(targetSnapshot));
            }

            var res = MapUpToBuffer(point, trackingMode, affinity, targetSnapshot.TextBuffer);

            if (res is null)
            {
                return(null);
            }
            return(res.Value.TranslateTo(targetSnapshot, trackingMode));
        }
示例#30
0
        public SnapshotPoint?MapDownToBuffer(SnapshotPoint position, PointTrackingMode trackingMode, ITextBuffer targetBuffer, PositionAffinity affinity)
        {
            if (position.Snapshot == null)
            {
                throw new ArgumentNullException("position");
            }
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException("trackingMode");
            }
            if (targetBuffer == null)
            {
                throw new ArgumentNullException("targetBuffer");
            }
            if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor)
            {
                throw new ArgumentOutOfRangeException("affinity");
            }

            ITextBuffer   currentBuffer   = position.Snapshot.TextBuffer;
            ITextSnapshot currentSnapshot = currentBuffer.CurrentSnapshot;
            int           currentPosition = position.TranslateTo(currentSnapshot, trackingMode).Position;

            while (currentBuffer != targetBuffer)
            {
                IProjectionBufferBase projBuffer = currentBuffer as IProjectionBufferBase;
                if (projBuffer == null)
                {
                    return(null);
                }
                IProjectionSnapshot projSnap = projBuffer.CurrentSnapshot;
                if (projSnap.SourceSnapshots.Count == 0)
                {
                    return(null);
                }
                SnapshotPoint currentPoint = projSnap.MapToSourceSnapshot(currentPosition, affinity);
                currentPosition = currentPoint.Position;
                currentSnapshot = currentPoint.Snapshot;
                currentBuffer   = currentSnapshot.TextBuffer;
            }

            return(new SnapshotPoint(currentSnapshot, currentPosition));
        }
示例#31
0
        public static int TrackPositionForwardInTime(PointTrackingMode trackingMode,
                                                     int currentPosition,
                                                     ITextImageVersion currentVersion,
                                                     ITextImageVersion targetVersion)
        {
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException("trackingMode");
            }
            if (currentVersion == null)
            {
                throw new ArgumentNullException("currentVersion");
            }
            if (targetVersion == null)
            {
                throw new ArgumentNullException("targetVersion");
            }
            if (targetVersion.Identifier != currentVersion.Identifier)
            {
                throw new ArgumentException("currentVersion and targetVersion must be from the same ITextImage");
            }
            if (targetVersion.VersionNumber < currentVersion.VersionNumber)
            {
                throw new ArgumentOutOfRangeException("targetVersion");
            }
            if (currentPosition < 0 || currentPosition > currentVersion.Length)
            {
                throw new ArgumentOutOfRangeException("currentPosition");
            }

            // track forward in time
            while (currentVersion != targetVersion)
            {
                currentPosition = TrackPositionForwardInTime(trackingMode,
                                                             currentPosition,
                                                             currentVersion.Changes);

                currentVersion = currentVersion.Next;
            }

            Debug.Assert(currentPosition >= 0 && currentPosition <= currentVersion.Length);
            return(currentPosition);
        }
示例#32
0
        internal TrackingPoint(ITextVersion version, int position, PointTrackingMode trackingMode)
        {
            if (version == null)
            {
                throw new ArgumentNullException(nameof(version));
            }
            if (position < 0 || position > version.Length)
            {
                throw new ArgumentOutOfRangeException(nameof(position));
            }
            if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative)
            {
                throw new ArgumentOutOfRangeException(nameof(trackingMode));
            }

            _textVersion = version;
            _position    = position;
            TextBuffer   = version.TextBuffer;
            TrackingMode = trackingMode;
        }
示例#33
0
 public SnapshotPoint? MapDownToInsertionPoint(SnapshotPoint position, PointTrackingMode trackingMode, Predicate<ITextSnapshot> match) {
     var snapshot = position.Snapshot;
     var buffer = snapshot.TextBuffer;
     int pos = position.TranslateTo(snapshot, trackingMode);
     while (!match(snapshot)) {
         var projBuffer = buffer as IProjectionBufferBase;
         if (projBuffer == null) {
             return null;
         }
         var projSnapshot = projBuffer.CurrentSnapshot;
         if (projSnapshot.SourceSnapshots.Count == 0) {
             return null;
         }
         var pt = projSnapshot.MapToSourceSnapshot(pos);
         pos = pt.Position;
         snapshot = pt.Snapshot;
         buffer = snapshot.TextBuffer;
     }
     return new SnapshotPoint(snapshot, pos);
 }
示例#34
0
        public SnapshotPoint?MapDownToInsertionPoint(SnapshotPoint position, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match)
        {
            if (position.Snapshot is null)
            {
                throw new ArgumentException();
            }
            if (match is null)
            {
                throw new ArgumentNullException(nameof(match));
            }

            if (position.Snapshot.TextBuffer != TopBuffer)
            {
                return(null);
            }
            if (!match(TopBuffer.CurrentSnapshot))
            {
                return(null);
            }
            return(position.TranslateTo(TopBuffer.CurrentSnapshot, trackingMode));
        }
示例#35
0
        public SnapshotPoint?MapUpToFirstMatch(SnapshotPoint point, PointTrackingMode trackingMode, Predicate <ITextSnapshot> match, PositionAffinity affinity)
        {
            if (point.Snapshot is null)
            {
                throw new ArgumentException();
            }
            if (match is null)
            {
                throw new ArgumentNullException(nameof(match));
            }

            if (point.Snapshot.TextBuffer != TopBuffer)
            {
                return(null);
            }
            if (!match(TopBuffer.CurrentSnapshot))
            {
                return(null);
            }
            return(point.TranslateTo(TopBuffer.CurrentSnapshot, trackingMode));
        }
示例#36
0
        public SnapshotPoint?MapDownToBuffer(SnapshotPoint position, PointTrackingMode trackingMode, ITextBuffer targetBuffer, PositionAffinity affinity)
        {
            if (position.Snapshot is null)
            {
                throw new ArgumentException();
            }
            if (targetBuffer is null)
            {
                throw new ArgumentNullException(nameof(targetBuffer));
            }

            if (position.Snapshot.TextBuffer != TopBuffer)
            {
                return(null);
            }
            if (TopBuffer != targetBuffer)
            {
                return(null);
            }
            return(position.TranslateTo(targetBuffer.CurrentSnapshot, trackingMode));
        }
示例#37
0
 public IMappingPoint CreateMappingPoint(SnapshotPoint point, PointTrackingMode trackingMode) {
     throw new NotImplementedException();
 }
示例#38
0
 public SnapshotPoint? MapUpToSnapshot(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextSnapshot targetSnapshot) {
     throw new NotImplementedException();
 }
示例#39
0
 public SnapshotPoint? MapUpToBuffer(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextBuffer targetBuffer) {
     return point;
 }
示例#40
0
 public SnapshotPoint? MapDownToInsertionPoint(SnapshotPoint position, PointTrackingMode trackingMode, Predicate<ITextSnapshot> match) {
     throw new NotImplementedException();
 }
示例#41
0
		public IMappingPoint CreateMappingPoint(SnapshotPoint point, PointTrackingMode trackingMode) {
			if (point.Snapshot == null)
				throw new ArgumentException();
			return new MappingPoint(this, point, trackingMode);
		}
示例#42
0
		public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity) =>
			Version.CreateTrackingPoint(position, trackingMode, trackingFidelity);
示例#43
0
		public SnapshotPoint? MapDownToFirstMatch(SnapshotPoint position, PointTrackingMode trackingMode, Predicate<ITextSnapshot> match, PositionAffinity affinity) {
			if (position.Snapshot == null)
				throw new ArgumentException();
			if (match == null)
				throw new ArgumentNullException(nameof(match));

			if (position.Snapshot.TextBuffer != TopBuffer)
				return null;
			if (!match(TopBuffer.CurrentSnapshot))
				return null;
			return position.TranslateTo(TopBuffer.CurrentSnapshot, trackingMode);
		}
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode) {
     return new MockTrackingPoint(this, position);
 }
示例#45
0
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity)
 {
     throw new NotImplementedException();
 }
 public ITrackingPoint CreateTrackingPoint(Int32 position, PointTrackingMode trackingMode)
 {
     throw new NotImplementedException();
 }
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode, TrackingFidelityMode trackingFidelity) {
     return new MockTrackingPoint(this, position, trackingMode, trackingFidelity);
 }
示例#48
0
 public SnapshotPoint? MapDownToSnapshot(SnapshotPoint position, PointTrackingMode trackingMode, ITextSnapshot targetSnapshot, PositionAffinity affinity) {
     return position;
 }
示例#49
0
 public SnapshotPoint? MapDownToBuffer(SnapshotPoint position, PointTrackingMode trackingMode, ITextBuffer targetBuffer, PositionAffinity affinity) {
     throw new NotImplementedException();
 }
示例#50
0
 public CustomTrackingSpan(ITextSnapshot snapshot, Span span, PointTrackingMode startTracking, PointTrackingMode endTracking) {
     _start = snapshot.CreateTrackingPoint(span.Start, startTracking);
     _end = snapshot.CreateTrackingPoint(span.End, endTracking);
 }
示例#51
0
 public SnapshotPoint? MapDownToFirstMatch(SnapshotPoint position, PointTrackingMode trackingMode, Predicate<ITextSnapshot> match, PositionAffinity affinity) {
     return position;
 }
示例#52
0
		public SnapshotPoint GetNearestPointInVisualSnapshot(SnapshotPoint editBufferPoint, ITextSnapshot targetVisualSnapshot, PointTrackingMode trackingMode) =>
			editBufferPoint.TranslateTo(targetVisualSnapshot, trackingMode);
示例#53
0
		public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode) =>
			Version.CreateTrackingPoint(position, trackingMode);
示例#54
0
 public ITrackingPoint CreateTrackingPoint(int position, PointTrackingMode trackingMode)
 {
     return TextBuffer.CurrentSnapshot.CreateTrackingPoint(position, trackingMode);
 }
 public CustomTrackingSpan(ITextSnapshot snapshot, Span span, PointTrackingMode startTrackingMode, PointTrackingMode endTrackingMode) {
     _buffer = snapshot.TextBuffer;
     _start = snapshot.CreateTrackingPoint(span.Start, startTrackingMode);
     _end = snapshot.CreateTrackingPoint(span.End, endTrackingMode);
 }
示例#56
0
 public SnapshotPoint? MapUpToBuffer(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextBuffer targetBuffer) {
     int position = 0;
     for (int i = 0; i < _buffers.Count; i++) {
         if (_buffers[i] == targetBuffer) {
             return new SnapshotPoint(point.Snapshot, position + point.Position);
         }
         position += _buffers[i].CurrentSnapshot.Length;
     }
     return null;
 }
 public SnapshotPoint GetNearestPointInVisualSnapshot(SnapshotPoint editBufferPoint, ITextSnapshot targetVisualSnapshot, PointTrackingMode trackingMode) {
     throw new NotImplementedException();
 }
示例#58
0
 public SnapshotPoint? MapUpToFirstMatch(SnapshotPoint point, PointTrackingMode trackingMode, Predicate<ITextSnapshot> match, PositionAffinity affinity) {
     throw new NotImplementedException();
 }
示例#59
0
 public SnapshotPoint? MapUpToSnapshot(SnapshotPoint point, PointTrackingMode trackingMode, PositionAffinity affinity, ITextSnapshot targetSnapshot) {
     return point;
 }
示例#60
0
 public ReplSpan WithEndTrackingMode(PointTrackingMode endTrackingMode)
 {
     return new ReplSpan(((CustomTrackingSpan)this.Span).WithEndTrackingMode(endTrackingMode), this.Kind);
 }