Beispiel #1
0
        /// <summary>
        /// Constructs <see cref="CompletionPresentationViewModel"/>
        /// </summary>
        /// <param name="items">Completion items to display with their highlighted spans</param>
        /// <param name="filters">Completion filters with their available and selected state</param>
        /// <param name="selectedItemIndex">Controls which item is selected. Use -1 in suggestion mode</param>
        /// <param name="applicableToSpan">Span pertinent to the completion session</param>
        /// <param name="useSoftSelection">Controls whether selected item should be soft selected. Default is <c>false</c></param>
        /// <param name="displaySuggestionItem">Controls whether suggestion mode item is visible. Default is <c>false</c></param>
        /// <param name="selectSuggestionItem">Controls whether suggestion mode item is selected. Default is <c>false</c></param>
        /// <param name="suggestionItem">Suggestion mode item to display. Default is <c>null</c></param>
        /// <param name="suggestionItemOptions">How to present the suggestion mode item. This is required because completion may be in suggestion mode even if there is no explicit suggestion mode item</param>
        public CompletionPresentationViewModel(
            ImmutableArray <CompletionItemWithHighlight> items,
            ImmutableArray <CompletionFilterWithState> filters,
            int selectedItemIndex,
            ITrackingSpan applicableToSpan,
            bool useSoftSelection,
            bool displaySuggestionItem,
            bool selectSuggestionItem,
            CompletionItem suggestionItem,
            SuggestionItemOptions suggestionItemOptions)
        {
            if (selectedItemIndex < -1)
            {
                throw new ArgumentOutOfRangeException(nameof(selectedItemIndex), "Selected index value must be greater than or equal to 0, or -1 to indicate no selection");
            }
            if (items.IsDefault)
            {
                throw new ArgumentException("Array must be initialized", nameof(items));
            }
            if (filters.IsDefault)
            {
                throw new ArgumentException("Array must be initialized", nameof(filters));
            }

            Items                 = items;
            Filters               = filters;
            ApplicableToSpan      = applicableToSpan ?? throw new NullReferenceException(nameof(applicableToSpan));
            UseSoftSelection      = useSoftSelection;
            DisplaySuggestionItem = displaySuggestionItem;
            SelectSuggestionItem  = selectSuggestionItem;
            SelectedItemIndex     = selectedItemIndex;
            SuggestionItem        = suggestionItem;
            SuggestionItemOptions = suggestionItemOptions ?? throw new NullReferenceException(nameof(suggestionItemOptions));
        }
 /// <summary>
 /// Constructs <see cref="CompletionContext"/> with specified <see cref="CompletionItem"/>s,
 /// with recommendation to use suggestion mode and to use regular selection.
 /// </summary>
 /// <param name="items">Available completion items</param>
 /// <param name="suggestionItemOptions">Suggestion item options, or null to not use suggestion mode. Default is <c>null</c></param>
 public CompletionContext(
     ImmutableArray <CompletionItem> items,
     SuggestionItemOptions suggestionItemOptions)
     : this(items,
            suggestionItemOptions,
            selectionHint : InitialSelectionHint.RegularSelection,
            filters : default)
 {
 }
 /// <summary>
 /// Constructs <see cref="CompletionContext"/> with specified <see cref="CompletionItem"/>s,
 /// with recommendation to use suggestion mode item and to use a specific selection mode.
 /// </summary>
 /// <param name="items">Available completion items</param>
 /// <param name="suggestionItemOptions">Suggestion mode options, or null to not use suggestion mode. Default is <c>null</c></param>
 /// <param name="selectionHint">Recommended selection mode. Suggestion mode automatically sets soft selection Default is <c>InitialSelectionHint.RegularSelection</c></param>
 public CompletionContext(
     ImmutableArray <CompletionItem> items,
     SuggestionItemOptions suggestionItemOptions,
     InitialSelectionHint selectionHint)
 {
     if (items.IsDefault)
     {
         throw new ArgumentException("Array must be initialized", nameof(items));
     }
     Items                 = items;
     SelectionHint         = selectionHint;
     SuggestionItemOptions = suggestionItemOptions;
 }
 /// <summary>
 /// Constructs <see cref="CompletionContext"/> with specified <see cref="CompletionItem"/>s,
 /// with recommendation to use suggestion mode and to use regular selection.
 /// </summary>
 /// <param name="items">Available completion items</param>
 /// <param name="suggestionItemOptions">Suggestion item options, or null to not use suggestion mode. Default is <c>null</c></param>
 public CompletionContext(
     ImmutableArray <CompletionItem> items,
     SuggestionItemOptions suggestionItemOptions)
     : this(items, suggestionItemOptions, InitialSelectionHint.RegularSelection)
 {
 }