public static void UseCommitCharactersFrom( this VSInternalCompletionItem completionItem, RazorCompletionItem razorCompletionItem, VSInternalClientCapabilities clientCapabilities) { if (razorCompletionItem.CommitCharacters == null || razorCompletionItem.CommitCharacters.Count == 0) { return; } var supportsVSExtensions = clientCapabilities?.SupportsVisualStudioExtensions ?? false; if (supportsVSExtensions) { var vsCommitCharacters = razorCompletionItem .CommitCharacters .Select(c => new VSInternalCommitCharacter() { Character = c.Character, Insert = c.Insert }) .ToArray(); completionItem.VsCommitCharacters = vsCommitCharacters; } else { completionItem.CommitCharacters = razorCompletionItem .CommitCharacters .Select(c => c.Character) .ToArray(); } }
public static bool TryGetCompletionListResultId(this VSInternalCompletionItem completion, [NotNullWhen(true)] out int?resultId) { if (completion is null) { throw new ArgumentNullException(nameof(completion)); } if (completion.Data is JObject data && data.ContainsKey(ResultIdKey)) { resultId = data[ResultIdKey]?.ToObject <int>(); return(resultId is not null); } resultId = default; return(false); }
public static VSInternalCompletionItem CreateWithCompletionListResultId( this VSInternalCompletionItem completionItem, long resultId) { if (completionItem is null) { throw new ArgumentNullException(nameof(completionItem)); } var data = completionItem.Data as JObject ?? new JObject(); data[ResultIdKey] = resultId; completionItem.Data = data; return(completionItem); }
private static CompletionItem CreateCompletionItem(XamlCompletionItem xamlCompletion, DocumentId documentId, SourceText text, Position position, TextDocumentIdentifier textDocument, Dictionary <XamlCompletionKind, ImmutableArray <VSInternalCommitCharacter> > commitCharactersCach) { var item = new VSInternalCompletionItem { Label = xamlCompletion.DisplayText, VsCommitCharacters = GetCommitCharacters(xamlCompletion, commitCharactersCach), Detail = xamlCompletion.Detail, InsertText = xamlCompletion.InsertText, Preselect = xamlCompletion.Preselect.GetValueOrDefault(), SortText = xamlCompletion.SortText, FilterText = xamlCompletion.FilterText, Kind = GetItemKind(xamlCompletion.Kind), Description = xamlCompletion.Description, Icon = xamlCompletion.Icon, InsertTextFormat = xamlCompletion.IsSnippet ? InsertTextFormat.Snippet : InsertTextFormat.Plaintext, Data = new CompletionResolveData { ProjectGuid = documentId.ProjectId.Id, DocumentGuid = documentId.Id, Position = position, DisplayText = xamlCompletion.DisplayText } }; if (xamlCompletion.Span.HasValue) { item.TextEdit = new TextEdit { NewText = xamlCompletion.InsertText, Range = ProtocolConversions.LinePositionToRange(text.Lines.GetLinePositionSpan(xamlCompletion.Span.Value)) }; } if (xamlCompletion.EventDescription.HasValue) { item.Command = new Command() { CommandIdentifier = StringConstants.CreateEventHandlerCommand, Arguments = new object[] { textDocument, xamlCompletion.EventDescription }, Title = CreateEventHandlerCommandTitle }; } else if (xamlCompletion.RetriggerCompletion) { // Retriger completion after commit item.Command = s_retriggerCompletionCommand; } return(item); }
private static LSP.VSInternalCompletionItem CreateResolvedCompletionItem( VSInternalCompletionItem completionItem, ClassifiedTextElement description, string detail, string documentation) { completionItem.Detail = detail; if (documentation != null) { completionItem.Documentation = new LSP.MarkupContent() { Kind = LSP.MarkupKind.PlainText, Value = documentation }; } completionItem.Description = description; return(completionItem); }