Example #1
0
            public IEnumerable <ITagSpan <IClassificationTag> > GetTags(NormalizedSnapshotSpanCollection spans)
            {
                using (Logger.LogBlock(FunctionId.Tagger_SyntacticClassification_TagComputer_GetTags, CancellationToken.None))
                {
                    if (!_cachedTaggableStatus.HasValue)
                    {
                        if (!_isClassificationOnlyWorkspace)
                        {
                            _cachedTaggableStatus = true;
                        }
                        else
                        {
                            var wpfTextViews = _associatedViewService.GetAssociatedTextViews(_subjectBuffer);
                            if (wpfTextViews.Any())
                            {
                                _cachedTaggableStatus = _viewSupportsClassificationServiceOpt?.CanClassifyViews(wpfTextViews.Cast <ITextView>()) ?? true;
                            }
                        }
                    }

                    if (_cachedTaggableStatus == false)
                    {
                        return(SpecializedCollections.EmptyEnumerable <ITagSpan <IClassificationTag> >());
                    }

                    if (spans.Count > 0)
                    {
                        var classifiedSpans = ClassificationUtilities.GetOrCreateClassifiedSpanList();

                        foreach (var span in spans)
                        {
                            AddClassifiedSpans(_editorClassificationService, span, classifiedSpans);
                        }

                        return(ClassificationUtilities.ConvertAndReturnList(_typeMap, spans[0].Snapshot, classifiedSpans));
                    }

                    return(SpecializedCollections.EmptyEnumerable <ITagSpan <IClassificationTag> >());
                }
            }