private void OnSpansChanged(object sender, SpansChangedEventArgs eventArgs) { IEnumerable <System.Web.Razor.Parser.SyntaxTree.Span> arg_8C_0 = eventArgs.Spans; Microsoft.VisualStudio.Text.Span?span = null; ITextSnapshot currentSnapshot = _diskBuffer.CurrentSnapshot; if (_spansToClassify.Count > 0) { SnapshotPoint startPoint = _spansToClassify[0].TrackingSpan.GetStartPoint(currentSnapshot); SnapshotPoint endPoint = _spansToClassify[_spansToClassify.Count - 1].TrackingSpan.GetEndPoint(currentSnapshot); span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(startPoint.Position, endPoint.Position)); } _spansToClassify = new List <ClassificationData>(); IClassificationType classificationType = null; foreach (System.Web.Razor.Parser.SyntaxTree.Span current in arg_8C_0) { switch (current.Kind) { case SpanKind.Transition: case SpanKind.MetaCode: classificationType = _razorDelimiterClassificationType; break; case SpanKind.Comment: classificationType = _razorCommentClassificationType; break; } if (classificationType != null) { Microsoft.VisualStudio.Text.Span span2 = new Microsoft.VisualStudio.Text.Span(current.Start.AbsoluteIndex, current.Length); ClassificationData item = new ClassificationData(currentSnapshot.CreateTrackingSpan(span2, SpanTrackingMode.EdgeExclusive), classificationType); _spansToClassify.Add(item); classificationType = null; } } if (_spansToClassify.Count > 0) { SnapshotPoint startPoint2 = _spansToClassify[0].TrackingSpan.GetStartPoint(currentSnapshot); SnapshotPoint endPoint2 = _spansToClassify[_spansToClassify.Count - 1].TrackingSpan.GetEndPoint(currentSnapshot); if (!span.HasValue) { span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(startPoint2.Position, endPoint2.Position)); } else { span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(Math.Min(span.Value.Start, startPoint2.Position), Math.Max(span.Value.End, endPoint2.Position))); } } if (span.HasValue) { EventHandler <ClassificationChangedEventArgs> classificationChanged = ClassificationChanged; if (classificationChanged != null) { SnapshotSpan changeSpan = new SnapshotSpan(currentSnapshot, span.Value); classificationChanged(this, new ClassificationChangedEventArgs(changeSpan)); } } }
private void OnSpansChanged(object sender, SpansChangedEventArgs eventArgs) { IEnumerable<System.Web.Razor.Parser.SyntaxTree.Span> arg_8C_0 = eventArgs.Spans; Microsoft.VisualStudio.Text.Span? span = null; ITextSnapshot currentSnapshot = _diskBuffer.CurrentSnapshot; if (_spansToClassify.Count > 0) { SnapshotPoint startPoint = _spansToClassify[0].TrackingSpan.GetStartPoint(currentSnapshot); SnapshotPoint endPoint = _spansToClassify[_spansToClassify.Count - 1].TrackingSpan.GetEndPoint(currentSnapshot); span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(startPoint.Position, endPoint.Position)); } _spansToClassify = new List<ClassificationData>(); IClassificationType classificationType = null; foreach (System.Web.Razor.Parser.SyntaxTree.Span current in arg_8C_0) { switch (current.Kind) { case SpanKind.Transition: case SpanKind.MetaCode: classificationType = _razorDelimiterClassificationType; break; case SpanKind.Comment: classificationType = _razorCommentClassificationType; break; } if (classificationType != null) { Microsoft.VisualStudio.Text.Span span2 = new Microsoft.VisualStudio.Text.Span(current.Start.AbsoluteIndex, current.Length); ClassificationData item = new ClassificationData(currentSnapshot.CreateTrackingSpan(span2, SpanTrackingMode.EdgeExclusive), classificationType); _spansToClassify.Add(item); classificationType = null; } } if (_spansToClassify.Count > 0) { SnapshotPoint startPoint2 = _spansToClassify[0].TrackingSpan.GetStartPoint(currentSnapshot); SnapshotPoint endPoint2 = _spansToClassify[_spansToClassify.Count - 1].TrackingSpan.GetEndPoint(currentSnapshot); if (!span.HasValue) { span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(startPoint2.Position, endPoint2.Position)); } else { span = new Microsoft.VisualStudio.Text.Span?(Microsoft.VisualStudio.Text.Span.FromBounds(Math.Min(span.Value.Start, startPoint2.Position), Math.Max(span.Value.End, endPoint2.Position))); } } if (span.HasValue) { EventHandler<ClassificationChangedEventArgs> classificationChanged = ClassificationChanged; if (classificationChanged != null) { SnapshotSpan changeSpan = new SnapshotSpan(currentSnapshot, span.Value); classificationChanged(this, new ClassificationChangedEventArgs(changeSpan)); } } }