Esempio n. 1
0
        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));
         }
     }
 }