예제 #1
0
        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));
        }
예제 #2
0
        /// <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);
        }