示例#1
0
        public IEnumerable <SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken)
        {
            var list = new List <SuggestedActionSet>();

            if (_section != null)
            {
                var removeDuplicate = new RemoveDuplicatePropertiesAction(_section, _view);
                if (removeDuplicate.IsEnabled)
                {
                    list.AddRange(CreateActionSet(removeDuplicate));
                }

                var sortProperties    = new SortPropertiesAction(_section, _view);
                var sortAllProperties = new SortAllPropertiesAction(_document, _view);
                list.AddRange(CreateActionSet(sortProperties, sortAllProperties));

                var deleteSection = new DeleteSectionAction(range.Snapshot.TextBuffer, _section);
                list.AddRange(CreateActionSet(deleteSection));

                // Suppressions
                IEnumerable <ParseItem> items = _document.ItemsInSpan(range).Where(p => p.HasErrors);
                if (items.Any())
                {
                    IEnumerable <DisplayError> errors = items.SelectMany(i => i.Errors);
                    var actions = new List <SuppressErrorAction>();

                    foreach (DisplayError error in errors)
                    {
                        var action = new SuppressErrorAction(_document, error.Name);

                        if (action.IsEnabled)
                        {
                            actions.Add(action);
                        }
                    }
                    list.AddRange(CreateActionSet(actions.ToArray()));
                }

                // Missing rules
                List <Keyword> missingRules = AddMissingRulesAction.FindMissingRulesAll(_document.GetAllIncludedRules());
                if (missingRules.Count() != 0)
                {
                    var addMissingRules = new AddMissingRulesAction(missingRules, _document, _view);
                    list.AddRange(CreateActionSet(addMissingRules));
                }
            }

            return(list);
        }
        public IEnumerable <ITagSpan <IErrorTag> > GetTags(NormalizedSnapshotSpanCollection spans)
        {
            var tags = new List <ITagSpan <IErrorTag> >();

            if (_document.IsParsing || _validator.IsValidating || !_hasLoaded || !spans.Any() || spans[0].IsEmpty)
            {
                return(tags);
            }

            ITextSnapshotLine       line  = spans[0].Start.GetContainingLine();
            IEnumerable <ParseItem> items = _document.ItemsInSpan(line.Extent);

            foreach (ParseItem item in items)
            {
                tags.AddRange(CreateError(item));
            }

            return(tags);
        }
示例#3
0
        public IList <ClassificationSpan> GetClassificationSpans(SnapshotSpan span)
        {
            var list = new List <ClassificationSpan>();

            if (_document.IsParsing)
            {
                return(list);
            }

            IEnumerable <ParseItem> parseItems = _document.ItemsInSpan(span);

            foreach (ParseItem item in parseItems)
            {
                if (_map.ContainsKey(item.ItemType))
                {
                    var snapshotSpan = new SnapshotSpan(span.Snapshot, item.Span);
                    list.Add(new ClassificationSpan(snapshotSpan, _map[item.ItemType]));
                }
            }

            return(list);
        }