protected override Task <IReadOnlyList <CompletionItem> > GetCompletionItemsAsync(string text, int caret, TextSpan spanToBeReplaced, CancellationToken cancellationToken) { // demo completion algorithm callback // populate completions and documentation for autocompletion window var typedWord = text.AsSpan(spanToBeReplaced.Start, spanToBeReplaced.Length).ToString(); return(Task.FromResult <IReadOnlyList <CompletionItem> >( Fruits .Select(fruit => { var displayText = new FormattedString(fruit.Name, new FormatSpan(0, fruit.Name.Length, fruit.Highlight)); var description = GetFormattedString(fruit.Description); return new CompletionItem( replacementText: fruit.Name, displayText: displayText, getExtendedDescription: _ => Task.FromResult(description) ); }) .ToArray() )); }