diff options
Diffstat (limited to 'src/Text/Impl/TextModel/Projection')
8 files changed, 75 insertions, 71 deletions
diff --git a/src/Text/Impl/TextModel/Projection/BaseProjectionBuffer.cs b/src/Text/Impl/TextModel/Projection/BaseProjectionBuffer.cs index 5dbdfc3..4a3572c 100644 --- a/src/Text/Impl/TextModel/Projection/BaseProjectionBuffer.cs +++ b/src/Text/Impl/TextModel/Projection/BaseProjectionBuffer.cs @@ -17,6 +17,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation using Microsoft.VisualStudio.Text.Differencing; using Microsoft.VisualStudio.Text.Utilities; using System.Collections.ObjectModel; + using System.Globalization; internal abstract class BaseProjectionBuffer : BaseBuffer, IProjectionBufferBase { @@ -184,7 +185,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation #endregion #region Debug support - [Conditional("_DEBUG")] + [Conditional("DEBUG")] protected void DumpPendingChanges(List<Tuple<ITextBuffer, List<TextChange>>> pendingSourceChanges) { if (BufferGroup.Tracing) @@ -203,7 +204,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation } } - [Conditional("_DEBUG")] + [Conditional("DEBUG")] protected void DumpPendingContentChangedEventArgs() { if (BufferGroup.Tracing) @@ -213,7 +214,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { sb.Append(TextUtilities.GetTag(args.Before.TextBuffer)); sb.Append(" V"); - sb.AppendLine(args.After.Version.VersionNumber.ToString()); + sb.AppendLine(args.After.Version.VersionNumber.ToString(CultureInfo.InvariantCulture)); foreach (var change in args.Changes) { sb.AppendLine(change.ToString()); diff --git a/src/Text/Impl/TextModel/Projection/BufferGraph.cs b/src/Text/Impl/TextModel/Projection/BufferGraph.cs index 87f42e8..da4d4eb 100644 --- a/src/Text/Impl/TextModel/Projection/BufferGraph.cs +++ b/src/Text/Impl/TextModel/Projection/BufferGraph.cs @@ -29,11 +29,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (topBuffer == null) { - throw new ArgumentNullException("topBuffer"); + throw new ArgumentNullException(nameof(topBuffer)); } if (guardedOperations == null) { - throw new ArgumentNullException("guardedOperations"); + throw new ArgumentNullException(nameof(guardedOperations)); } this.topBuffer = topBuffer; @@ -69,7 +69,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } FrugalList<ITextBuffer> buffers = new FrugalList<ITextBuffer>(); foreach (ITextBuffer buffer in this.importingProjectionBufferMap.Keys) @@ -100,19 +100,19 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position.Snapshot == null) { - throw new ArgumentNullException("position"); + throw new ArgumentNullException(nameof(position)); } if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } if (!this.importingProjectionBufferMap.ContainsKey(position.Snapshot.TextBuffer)) { @@ -146,15 +146,15 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position.Snapshot == null) { - throw new ArgumentNullException("position"); + throw new ArgumentNullException(nameof(position)); } if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } ITextBuffer currentBuffer = position.Snapshot.TextBuffer; @@ -184,19 +184,19 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position.Snapshot == null) { - throw new ArgumentNullException("position"); + throw new ArgumentNullException(nameof(position)); } if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } if (targetBuffer == null) { - throw new ArgumentNullException("targetBuffer"); + throw new ArgumentNullException(nameof(targetBuffer)); } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } ITextBuffer currentBuffer = position.Snapshot.TextBuffer; @@ -228,7 +228,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (targetSnapshot == null) { - throw new ArgumentNullException("targetSnapshot"); + throw new ArgumentNullException(nameof(targetSnapshot)); } SnapshotPoint? result = MapDownToBuffer(position, trackingMode, targetSnapshot.TextBuffer, affinity); @@ -250,7 +250,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (targetSnapshot == null) { - throw new ArgumentNullException("targetSnapshot"); + throw new ArgumentNullException(nameof(targetSnapshot)); } SnapshotPoint? result = MapUpToBuffer(position, trackingMode, affinity, targetSnapshot.TextBuffer); @@ -266,7 +266,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } return CheckedMapUpToBuffer(point, trackingMode, match, affinity); } @@ -275,15 +275,15 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (point.Snapshot == null) { - throw new ArgumentNullException("point"); + throw new ArgumentNullException(nameof(point)); } if (trackingMode < PointTrackingMode.Positive || trackingMode > PointTrackingMode.Negative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } if (!this.importingProjectionBufferMap.ContainsKey(point.Snapshot.TextBuffer)) @@ -328,15 +328,15 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (span.Snapshot == null) { - throw new ArgumentNullException("span"); + throw new ArgumentNullException(nameof(span)); } if (trackingMode < SpanTrackingMode.EdgeExclusive || trackingMode > SpanTrackingMode.EdgeNegative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } if (!this.importingProjectionBufferMap.ContainsKey(span.Snapshot.TextBuffer)) @@ -372,7 +372,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (targetBuffer == null) { - throw new ArgumentNullException("targetBuffer"); + throw new ArgumentNullException(nameof(targetBuffer)); } if (!this.importingProjectionBufferMap.ContainsKey(targetBuffer)) @@ -389,7 +389,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (targetSnapshot == null) { - throw new ArgumentNullException("targetSnapshot"); + throw new ArgumentNullException(nameof(targetSnapshot)); } NormalizedSnapshotSpanCollection results = MapDownToBuffer(span, trackingMode, targetSnapshot.TextBuffer); @@ -411,7 +411,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (targetSnapshot == null) { - throw new ArgumentNullException("targetSnapshot"); + throw new ArgumentNullException(nameof(targetSnapshot)); } NormalizedSnapshotSpanCollection results = MapUpToBuffer(span, trackingMode, targetSnapshot.TextBuffer); @@ -482,7 +482,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } return CheckedMapUpToBuffer(span, trackingMode, match); } @@ -491,11 +491,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (span.Snapshot == null) { - throw new ArgumentNullException("span"); + throw new ArgumentNullException(nameof(span)); } if (trackingMode < SpanTrackingMode.EdgeExclusive || trackingMode > SpanTrackingMode.EdgeNegative) { - throw new ArgumentOutOfRangeException("trackingMode"); + throw new ArgumentOutOfRangeException(nameof(trackingMode)); } ITextBuffer buffer = span.Snapshot.TextBuffer; if (!this.importingProjectionBufferMap.ContainsKey(buffer)) diff --git a/src/Text/Impl/TextModel/Projection/BufferGraphFactoryService.cs b/src/Text/Impl/TextModel/Projection/BufferGraphFactoryService.cs index 7c47c06..f4b1cc1 100644 --- a/src/Text/Impl/TextModel/Projection/BufferGraphFactoryService.cs +++ b/src/Text/Impl/TextModel/Projection/BufferGraphFactoryService.cs @@ -21,7 +21,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (textBuffer == null) { - throw new ArgumentNullException("textBuffer"); + throw new ArgumentNullException(nameof(textBuffer)); } return textBuffer.Properties.GetOrCreateSingletonProperty<BufferGraph>(() => (new BufferGraph(textBuffer, GuardedOperations))); } diff --git a/src/Text/Impl/TextModel/Projection/ElisionBuffer.cs b/src/Text/Impl/TextModel/Projection/ElisionBuffer.cs index f47748e..6d30821 100644 --- a/src/Text/Impl/TextModel/Projection/ElisionBuffer.cs +++ b/src/Text/Impl/TextModel/Projection/ElisionBuffer.cs @@ -123,6 +123,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation this.sourceBuffer = sourceBuffer; this.sourceSnapshot = sourceBuffer.CurrentSnapshot; + Debug.Assert(sourceBuffer is BaseBuffer); BaseBuffer baseSourceBuffer = (BaseBuffer)sourceBuffer; this.eventHook = new WeakEventHook(this, baseSourceBuffer); @@ -219,11 +220,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if ((spansToElide.Count > 0) && (spansToElide[spansToElide.Count - 1].End > this.elBuffer.sourceSnapshot.Length)) { - throw new ArgumentOutOfRangeException("spansToElide"); + throw new ArgumentOutOfRangeException(nameof(spansToElide)); } if ((spansToExpand.Count > 0) && (spansToExpand[spansToExpand.Count - 1].End > this.elBuffer.sourceSnapshot.Length)) { - throw new ArgumentOutOfRangeException("spansToExpand"); + throw new ArgumentOutOfRangeException(nameof(spansToExpand)); } ElisionSourceSpansChangedEventArgs args = this.elBuffer.ApplySpanChanges(spansToElide, spansToExpand); if (args != null) @@ -251,7 +252,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (spansToElide == null) { - throw new ArgumentNullException("spansToElide"); + throw new ArgumentNullException(nameof(spansToElide)); } return ModifySpans(spansToElide, null); } @@ -260,7 +261,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (spansToExpand == null) { - throw new ArgumentNullException("spansToExpand"); + throw new ArgumentNullException(nameof(spansToExpand)); } return ModifySpans(null, spansToExpand); } diff --git a/src/Text/Impl/TextModel/Projection/ElisionSnapshot.cs b/src/Text/Impl/TextModel/Projection/ElisionSnapshot.cs index 36b0779..8c70f24 100644 --- a/src/Text/Impl/TextModel/Projection/ElisionSnapshot.cs +++ b/src/Text/Impl/TextModel/Projection/ElisionSnapshot.cs @@ -91,7 +91,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (textBuffer == null) { - throw new ArgumentNullException("textBuffer"); + throw new ArgumentNullException(nameof(textBuffer)); } return this.sourceSnapshot.TextBuffer == textBuffer ? this.sourceSnapshot : null; } @@ -100,7 +100,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (textBuffer == null) { - throw new ArgumentNullException("textBuffer"); + throw new ArgumentNullException(nameof(textBuffer)); } if (this.sourceSnapshot.TextBuffer == textBuffer) @@ -121,7 +121,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } if (match(this.sourceSnapshot.TextBuffer)) @@ -142,11 +142,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (startSpanIndex < 0) { - throw new ArgumentOutOfRangeException("startSpanIndex"); + throw new ArgumentOutOfRangeException(nameof(startSpanIndex)); } if (count < 0 || startSpanIndex + count > SpanCount) { - throw new ArgumentOutOfRangeException("count"); + throw new ArgumentOutOfRangeException(nameof(count)); } return new ReadOnlyCollection<SnapshotSpan>(this.content.GetSourceSpans(this.sourceSnapshot, startSpanIndex, count)); } @@ -162,7 +162,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.totalLength) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } FrugalList<SnapshotPoint> points = this.content.MapInsertionPointToSourceSnapshots(this, position); if (points.Count == 1) @@ -183,11 +183,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.totalLength) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } return this.content.MapToSourceSnapshot(this.sourceSnapshot, position, affinity); } @@ -200,7 +200,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } return this.content.MapFromSourceSnapshot(this, point.Position); } @@ -209,7 +209,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (span.End > this.totalLength) { - throw new ArgumentOutOfRangeException("span"); + throw new ArgumentOutOfRangeException(nameof(span)); } FrugalList<SnapshotSpan> result = new FrugalList<SnapshotSpan>(); if (fillIn) diff --git a/src/Text/Impl/TextModel/Projection/ProjectionBuffer.cs b/src/Text/Impl/TextModel/Projection/ProjectionBuffer.cs index 67b747e..368db2f 100644 --- a/src/Text/Impl/TextModel/Projection/ProjectionBuffer.cs +++ b/src/Text/Impl/TextModel/Projection/ProjectionBuffer.cs @@ -554,10 +554,8 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { foreach (object spanToInsert in this.RawSpansToInsert) { - if (spanToInsert == null) - { - throw new ArgumentNullException("spansToInsert"); - } + Requires.NotNull(spanToInsert, nameof(spanToInsert)); + ITrackingSpan trackingSpanToInsert = spanToInsert as ITrackingSpan; if (trackingSpanToInsert != null) { @@ -731,15 +729,15 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.projBuffer.sourceSpans.Count) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } if (spansToReplace < 0 || position + spansToReplace > this.projBuffer.sourceSpans.Count) { - throw new ArgumentOutOfRangeException("spansToReplace"); + throw new ArgumentOutOfRangeException(nameof(spansToReplace)); } if (spansToInsert == null) { - throw new ArgumentNullException("spansToInsert"); + throw new ArgumentNullException(nameof(spansToInsert)); } this.spanManager = new SpanManager(this.projBuffer, position, spansToReplace, spansToInsert, true, (this.projBuffer.bufferOptions & ProjectionBufferOptions.WritableLiteralSpans) != 0); @@ -1596,12 +1594,15 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation } } +#pragma warning disable CA1801 // Review unused parameters private StringRebuilder InsertionLiesInCustomSpan(ITextSnapshot afterSourceSnapshot, int spanPosition, ITextChange incomingChange, HashSet<SnapshotPoint> urPoints, int accumulatedDelta) { +#pragma warning disable CA1801 // Review unused parameters + // just evaluate the new span and see if it overlaps the insertion. ITrackingSpan sourceTrackingSpan = this.sourceSpans[spanPosition]; SnapshotSpan afterSpan = sourceTrackingSpan.GetSpan(afterSourceSnapshot); diff --git a/src/Text/Impl/TextModel/Projection/ProjectionSnapshot.cs b/src/Text/Impl/TextModel/Projection/ProjectionSnapshot.cs index 5414af1..67a4473 100644 --- a/src/Text/Impl/TextModel/Projection/ProjectionSnapshot.cs +++ b/src/Text/Impl/TextModel/Projection/ProjectionSnapshot.cs @@ -17,6 +17,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation using Microsoft.VisualStudio.Text.Utilities; using Strings = Microsoft.VisualStudio.Text.Implementation.Strings; + using System.Globalization; internal partial class ProjectionSnapshot : BaseProjectionSnapshot, IProjectionSnapshot { @@ -192,7 +193,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (textBuffer == null) { - throw new ArgumentNullException("textBuffer"); + throw new ArgumentNullException(nameof(textBuffer)); } foreach (ITextSnapshot snappy in this.sourceSnapshotMap.Keys) { @@ -208,7 +209,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (textBuffer == null) { - throw new ArgumentNullException("textBuffer"); + throw new ArgumentNullException(nameof(textBuffer)); } foreach (ITextSnapshot snappy in this.sourceSnapshotMap.Keys) { @@ -233,7 +234,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (match == null) { - throw new ArgumentNullException("match"); + throw new ArgumentNullException(nameof(match)); } foreach (ITextSnapshot snappy in this.sourceSnapshotMap.Keys) { @@ -263,11 +264,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (startSpanIndex < 0 || startSpanIndex > this.SpanCount) { - throw new ArgumentOutOfRangeException("startSpanIndex"); + throw new ArgumentOutOfRangeException(nameof(startSpanIndex)); } if (count < 0 || startSpanIndex + count > this.SpanCount) { - throw new ArgumentOutOfRangeException("count"); + throw new ArgumentOutOfRangeException(nameof(count)); } // better using iterator or explicit successor func eventually @@ -290,7 +291,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (span.End > this.Length) { - throw new ArgumentOutOfRangeException("span"); + throw new ArgumentOutOfRangeException(nameof(span)); } FrugalList<SnapshotSpan> mappedSpans = new FrugalList<SnapshotSpan>(); @@ -464,7 +465,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.totalLength) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } ReadOnlyCollection<SnapshotPoint> points = this.MapInsertionPointToSourceSnapshots(position, this.projectionBuffer.literalBuffer); // should this be conditional on writable literal buffer? if (points.Count == 1) @@ -485,11 +486,11 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.Length) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } int rover = affinity == PositionAffinity.Predecessor ? FindLowestSpanIndexOfPosition(position) @@ -508,7 +509,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (affinity < PositionAffinity.Predecessor || affinity > PositionAffinity.Successor) { - throw new ArgumentOutOfRangeException("affinity"); + throw new ArgumentOutOfRangeException(nameof(affinity)); } List<InvertedSource> orderedSources; @@ -576,7 +577,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation { if (position < 0 || position > this.Length) { - throw new ArgumentOutOfRangeException("position"); + throw new ArgumentOutOfRangeException(nameof(position)); } int rover = FindLowestSpanIndexOfPosition(position); @@ -740,7 +741,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation "{0,12} {1,10} {2,4} {3,12} {4}\r\n", new Span(cumulativeLength, sourceSpan.Length), TextUtilities.GetTagOrContentType(sourceSpan.Snapshot.TextBuffer), - "V" + sourceSpan.Snapshot.Version.VersionNumber.ToString(), + "V" + sourceSpan.Snapshot.Version.VersionNumber.ToString(CultureInfo.InvariantCulture), sourceSpan.Span, TextUtilities.Escape(sourceSpan.GetText())); cumulativeLength += sourceSpan.Length; diff --git a/src/Text/Impl/TextModel/Projection/ProjectionSpanToChangeConverter.cs b/src/Text/Impl/TextModel/Projection/ProjectionSpanToChangeConverter.cs index 06b0306..9e62620 100644 --- a/src/Text/Impl/TextModel/Projection/ProjectionSpanToChangeConverter.cs +++ b/src/Text/Impl/TextModel/Projection/ProjectionSpanToChangeConverter.cs @@ -48,7 +48,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation private void ConstructChanges() { - IDifferenceCollection<SnapshotSpan> diffs = differ.GetDifferences(); + var diffs = differ.GetDifferences(); List<TextChange> changes = new List<TextChange>(); int pos = this.textPosition; @@ -56,10 +56,10 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation // each difference generates a text change foreach (Difference diff in diffs) { - pos += GetMatchSize(differ.DeletedSpans, diff.Before); + pos += GetMatchSize(diffs.LeftSequence, diff.Before); TextChange change = TextChange.Create(pos, - BufferFactoryService.StringRebuilderFromSnapshotSpans(differ.DeletedSpans, diff.Left), - BufferFactoryService.StringRebuilderFromSnapshotSpans(differ.InsertedSpans, diff.Right), + BufferFactoryService.StringRebuilderFromSnapshotSpans(diffs.LeftSequence, diff.Left), + BufferFactoryService.StringRebuilderFromSnapshotSpans(diffs.RightSequence, diff.Right), this.currentSnapshot); changes.Add(change); pos += change.OldLength; @@ -67,7 +67,7 @@ namespace Microsoft.VisualStudio.Text.Projection.Implementation this.normalizedChanges = NormalizedTextChangeCollection.Create(changes); } - private static int GetMatchSize(ReadOnlyCollection<SnapshotSpan> spans, Match match) + private static int GetMatchSize(IList<SnapshotSpan> spans, Match match) { int size = 0; if (match != null) |