internal CompletionSourceConnectionResult(bool sourceUsesSuggestionMode, SuggestionItemOptions requestedSuggestionItemOptions, InitialSelectionHint initialSelectionHint, ImmutableArray <CompletionItem> initialCompletionItems, bool isCanceled = false) { SourceUsesSuggestionMode = sourceUsesSuggestionMode; RequestedSuggestionItemOptions = requestedSuggestionItemOptions; InitialSelectionHint = initialSelectionHint; InitialCompletionItems = initialCompletionItems; IsCanceled = isCanceled; }
/// <summary> /// Returns completion items applicable to the value portion of the key-value pair /// </summary> private CompletionContext GetContextForValue(string key) { // Provide a few items based on the key ImmutableArray <CompletionItem> itemsBasedOnKey = ImmutableArray <CompletionItem> .Empty; if (!string.IsNullOrEmpty(key)) { var matchingElement = Catalog.Elements.FirstOrDefault(n => n.Name == key); if (matchingElement != null) { var itemsBuilder = ImmutableArray.CreateBuilder <CompletionItem>(); itemsBuilder.Add(new CompletionItem(matchingElement.Name, this)); itemsBuilder.Add(new CompletionItem(matchingElement.Symbol, this)); itemsBuilder.Add(new CompletionItem(matchingElement.AtomicNumber.ToString(), this)); itemsBuilder.Add(new CompletionItem(matchingElement.AtomicWeight.ToString(), this)); itemsBasedOnKey = itemsBuilder.ToImmutable(); } } // We would like to allow user to type anything, so we create SuggestionItemOptions var suggestionOptions = new SuggestionItemOptions("Value of your choice", $"Please enter value for key {key}"); return(new CompletionContext(itemsBasedOnKey, suggestionOptions)); }
internal SuggestionModeCompletionItemSource(SuggestionItemOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options)); }