protected override async Task ProduceTagsAsync( TaggerContext <InlineHintDataTag> context, DocumentSnapshotSpan documentSnapshotSpan, int?caretPosition, CancellationToken cancellationToken) { var document = documentSnapshotSpan.Document; if (document == null) { return; } var service = document.GetLanguageService <IInlineHintsService>(); if (service == null) { return; } var options = GlobalOptions.GetInlineHintsOptions(document.Project.Language); var snapshotSpan = documentSnapshotSpan.SnapshotSpan; var hints = await service.GetInlineHintsAsync(document, snapshotSpan.Span.ToTextSpan(), options, cancellationToken).ConfigureAwait(false); foreach (var hint in hints) { // If we don't have any text to actually show the user, then don't make a tag. if (hint.DisplayParts.Sum(p => p.ToString().Length) == 0) { continue; } context.AddTag(new TagSpan <InlineHintDataTag>( hint.Span.ToSnapshotSpan(snapshotSpan.Snapshot), new InlineHintDataTag(hint))); } }