private static Span GetErrorSpan(ITextSnapshot snapshot, JSLintErrorTask error) { var line = snapshot.GetLineFromLineNumber(error.Line); var text = line.GetText(); if (text.Length < error.Column) { return(new Span(line.End.Position, 1)); } var start = line.Start.Position + error.Column; var length = line.End.Position - start; var match = WordBoundaryPattern.Match(text, error.Column); if (match.Success) { length = match.Index - error.Column; } return(new Span(start, length)); }
/// <summary> /// Adds the JSLint errors to the collection. /// </summary> /// <param name="fileName">The file name.</param> /// <param name="jsLintErrors">The JSLint errors.</param> /// <param name="output">The output type.</param> /// <param name="hierarchy">The hierarchy.</param> public void AddJSLintErrors(string fileName, IEnumerable <IJSLintWarning> jsLintErrors, Output?output, IVsHierarchy hierarchy) { Action batch = () => { var existing = this.GetExistingErrors(fileName); TaskErrorCategory category; Enum.TryParse(output.ToString(), out category); foreach (var jsLintError in jsLintErrors) { if (!existing.Any(x => ErrorsEqual(x, jsLintError))) { var error = new JSLintErrorTask(fileName, jsLintError, category, hierarchy); error.Navigate += this.OnTaskNavigate; this.Tasks.Add(error); } } }; this.BatchAction(ErrorListAction.AddFile, new string[] { fileName }, batch); }
/// <summary> /// Adds the JSLint errors to the collection. /// </summary> /// <param name="fileName">The file name.</param> /// <param name="jsLintErrors">The JSLint errors.</param> /// <param name="output">The output type.</param> /// <param name="hierarchy">The hierarchy.</param> public void AddJSLintErrors(string fileName, IEnumerable<IJSLintError> jsLintErrors, Output? output, IVsHierarchy hierarchy) { Action batch = () => { var existing = this.GetExistingErrors(fileName); TaskErrorCategory category; Enum.TryParse(output.ToString(), out category); foreach (var jsLintError in jsLintErrors) { if (!existing.Any(x => ErrorsEqual(x, jsLintError))) { var error = new JSLintErrorTask(fileName, jsLintError, category, hierarchy); error.Navigate += this.OnTaskNavigate; this.Tasks.Add(error); } } }; this.BatchAction(ErrorListAction.AddFile, new string[] { fileName }, batch); }