protected static async Task <LSP.VSCompletionItem> CreateCompletionItemAsync( string label, LSP.CompletionItemKind kind, string[] tags, LSP.CompletionParams request, Document document, bool preselect = false, ImmutableArray <char>?commitCharacters = null, LSP.TextEdit?textEdit = null, string?insertText = null, string?sortText = null, string?filterText = null, long resultId = 0 ) { var position = await document .GetPositionFromLinePositionAsync( ProtocolConversions.PositionToLinePosition(request.Position), CancellationToken.None ) .ConfigureAwait(false); var completionTrigger = await ProtocolConversions .LSPToRoslynCompletionTriggerAsync( request.Context, document, position, CancellationToken.None ) .ConfigureAwait(false); var item = new LSP.VSCompletionItem() { TextEdit = textEdit, InsertText = insertText, FilterText = filterText ?? label, Label = label, SortText = sortText ?? label, InsertTextFormat = LSP.InsertTextFormat.Plaintext, Kind = kind, Data = JObject.FromObject(new CompletionResolveData() { ResultId = resultId, }), Preselect = preselect }; if (tags != null) { item.Icon = tags.ToImmutableArray().GetFirstGlyph().GetImageElement(); } if (commitCharacters != null) { item.CommitCharacters = commitCharacters.Value.Select(c => c.ToString()).ToArray(); } return(item); }
protected static LSP.VSCompletionItem CreateCompletionItem( string insertText, LSP.CompletionItemKind kind, string[] tags, LSP.CompletionParams requestParameters, bool preselect = false, ImmutableArray <char>?commitCharacters = null, string?sortText = null, int resultId = 0) { var item = new LSP.VSCompletionItem() { FilterText = insertText, InsertText = insertText, Label = insertText, SortText = sortText ?? insertText, InsertTextFormat = LSP.InsertTextFormat.Plaintext, Kind = kind, Data = JObject.FromObject(new CompletionResolveData() { DisplayText = insertText, TextDocument = requestParameters.TextDocument, Position = requestParameters.Position, CompletionTrigger = ProtocolConversions.LSPToRoslynCompletionTrigger(requestParameters.Context), ResultId = resultId, }), Preselect = preselect }; if (tags != null) { item.Icon = tags.ToImmutableArray().GetFirstGlyph().GetImageElement(); } if (commitCharacters != null) { item.CommitCharacters = commitCharacters.Value.Select(c => c.ToString()).ToArray(); } return(item); }