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); }
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); }