Пример #1
0
        protected override async Task GetTagsAsync(GetTagsState state, NormalizedSnapshotSpanCollection spans)
        {
            if (spans.Count == 0)
            {
                return;
            }

            var snapshot = spans[0].Snapshot;

            if (!state.UserAsyncState.IsInitialized)
            {
                await Initialize(state.UserAsyncState, snapshot, state.CancellationToken).ConfigureAwait(false);
            }
            if (!state.UserAsyncState.IsValid)
            {
                return;
            }

            var classifier = new RoslynClassifier(state.UserAsyncState.SyntaxRoot, state.UserAsyncState.SemanticModel, state.UserAsyncState.Workspace, roslynClassificationTypes, defaultClassificationType, state.CancellationToken);

            state.UserAsyncState.TagsList.Clear();
            foreach (var span in spans)
            {
                foreach (var info in classifier.GetClassifications(span.Span.ToTextSpan()))
                {
                    state.UserAsyncState.TagsList.Add(new TagSpan <IClassificationTag>(new SnapshotSpan(snapshot, info.Span), new ClassificationTag(info.Type)));
                }
                if (state.UserAsyncState.TagsList.Count != 0)
                {
                    state.AddResult(new TagsResult(span, state.UserAsyncState.TagsList.ToArray()));
                    state.UserAsyncState.TagsList.Clear();
                }
            }
        }
Пример #2
0
 protected abstract Task GetTagsAsync(GetTagsState state, NormalizedSnapshotSpanCollection spans);