Ejemplo n.º 1
0
        internal void UpdateMessages(IEnumerable <EslintMessage> messages)
        {
            var oldSnapshot = Factory.CurrentSnapshot;

            var markers     = ProcessMessages(messages).Select(CreateMarker);
            var newSnapshot = new LinterSnapshot(FilePath, oldSnapshot.VersionNumber + 1, markers);

            SnapToNewSnapshot(newSnapshot);
        }
Ejemplo n.º 2
0
        private void SnapToNewSnapshot(LinterSnapshot snapshot)
        {
            var factory = Factory;

            factory.UpdateMarkers(snapshot);

            _provider.UpdateAllSinks(factory);

            UpdateMarkers(_currentSnapshot, snapshot);

            Snapshot = snapshot;
        }
Ejemplo n.º 3
0
        private void UpdateMarkers(ITextSnapshot currentSnapshot, LinterSnapshot snapshot)
        {
            var oldSnapshot = Snapshot;

            var handler = TagsChanged;

            if (null == handler)
            {
                return;
            }

            var start = int.MaxValue;
            var end   = int.MinValue;

            if (null != oldSnapshot && 0 < oldSnapshot.Count)
            {
                start = oldSnapshot.Markers
                        .Select(marker => marker.Span.Start.TranslateTo(currentSnapshot, PointTrackingMode.Negative))
                        .Min();
                end = oldSnapshot.Markers
                      .Select(marker => marker.Span.End.TranslateTo(currentSnapshot, PointTrackingMode.Positive))
                      .Max();
            }

            if (0 < snapshot.Count)
            {
                start = Math.Min(start, snapshot.Markers.Select(marker => marker.Span.Start.Position)
                                 .Min());
                end = Math.Max(end, snapshot.Markers.Select(marker => marker.Span.End.Position)
                               .Max());
            }

            if (start > end)
            {
                return;
            }

            handler(this, new SnapshotSpanEventArgs(new SnapshotSpan(
                                                        currentSnapshot, Span.FromBounds(start, end))));
        }