public static LintError CloneAndTranslateTo(LintError error, ITextSnapshot newSnapshot) { var newSpan = error.Span.TranslateTo(newSnapshot, SpanTrackingMode.EdgeExclusive); // We want to only translate the error if the length of the error span did not change (if it did change, it would imply that // there was some text edit inside the error and, therefore, that the error is no longer valid). return((newSpan.Length == error.Span.Length) ? new LintError(newSpan, error.LintWarning, error.Project) : null); }
private void OnBufferChange(object sender, TextContentChangedEventArgs e) { _currentSnapshot = e.After; // Translate all of the old dirty spans to the new snapshot. NormalizedSnapshotSpanCollection newDirtySpans = _dirtySpans.CloneAndTrackTo(e.After, SpanTrackingMode.EdgeInclusive); // Dirty all the spans that changed. foreach (var change in e.Changes) { newDirtySpans = NormalizedSnapshotSpanCollection.Union(newDirtySpans, new NormalizedSnapshotSpanCollection(e.After, change.NewSpan)); } // Translate all the linting errors to the new snapshot (and remove anything that is a dirty region since we will need to check that again). var oldErrors = this.Factory.CurrentSnapshot; var newErrors = new LintingErrorsSnapshot(oldErrors.Document, oldErrors.VersionNumber + 1); // Copy all of the old errors to the new errors unless the error was affected by the text change foreach (var error in oldErrors.Errors) { Debug.Assert(error.NextIndex == -1); var newError = LintError.CloneAndTranslateTo(error, e.After); if (newError != null) { Debug.Assert(newError.Span.Length == error.Span.Length); error.NextIndex = newErrors.Errors.Count; newErrors.Errors.Add(newError); } } this.UpdateLintingErrors(newErrors); _dirtySpans = newDirtySpans; // Start processing the dirty spans (which no-ops if we're already doing it). if (_dirtySpans.Count != 0) { this.RunLinter(); } }
public LintSuppressAction(LintError error) { this.error = error; }
public LintFixAction(LintError lintError, Fix fix) { this._lintError = lintError; this._fix = fix; }
public SuggestionPreview(LintError lintError) : this() { this.DataContext = lintError; }
public static LintError Clone(LintError error) { return(new LintError(error.Span, error.LintWarning, error.Project)); }
public LintSuppressBy(LintError error, Method suppressionMethod) { this._error = error; this._suppressionMethod = suppressionMethod; }