void ICompletionSet.SetCompletionItems( IList <PresentationItem> completionItems, PresentationItem selectedItem, PresentationItem presetBuilder, bool suggestionMode, bool isSoftSelected, ImmutableArray <CompletionItemFilter> completionItemFilters, IReadOnlyDictionary <CompletionItem, string> completionItemToFilterText) { this._foregroundObject.AssertIsForeground(); VSCompletion selectedCompletionItem = null; // Initialize the completion map to a reasonable default initial size (+1 for the builder) _presentationItemMap = _presentationItemMap ?? new Dictionary <PresentationItem, VSCompletion>(completionItems.Count + 1); _completionItemToFilterText = completionItemToFilterText; try { this.WritableCompletionBuilders.BeginBulkOperation(); this.WritableCompletionBuilders.Clear(); #if DEV15 // If more than one filter was provided, then present it to the user. if (_filters == null && completionItemFilters.Length > 1) { _filters = completionItemFilters.Select(f => new IntellisenseFilter2(this, f, GetLanguage())) .ToArray(); } #endif var applicableToText = this.ApplicableTo.GetText(this.ApplicableTo.TextBuffer.CurrentSnapshot); var filteredSuggestionModeItem = new SimplePresentationItem( CompletionItem.Create( displayText: applicableToText, span: this.ApplicableTo.GetSpan(this.ApplicableTo.TextBuffer.CurrentSnapshot).Span.ToTextSpan()), selectedItem.CompletionService, isSuggestionModeItem: true); var showBuilder = suggestionMode || presetBuilder != null; var bestSuggestionModeItem = applicableToText.Length > 0 ? filteredSuggestionModeItem : presetBuilder ?? filteredSuggestionModeItem; if (showBuilder && bestSuggestionModeItem != null) { var suggestionModeCompletion = GetVSCompletion(bestSuggestionModeItem); this.WritableCompletionBuilders.Add(suggestionModeCompletion); if (selectedItem != null && selectedItem.IsSuggestionModeItem) { selectedCompletionItem = suggestionModeCompletion; } } } finally { this.WritableCompletionBuilders.EndBulkOperation(); } try { this.WritableCompletions.BeginBulkOperation(); this.WritableCompletions.Clear(); foreach (var item in completionItems) { var completionItem = GetVSCompletion(item); this.WritableCompletions.Add(completionItem); if (item == selectedItem) { selectedCompletionItem = completionItem; } } } finally { this.WritableCompletions.EndBulkOperation(); } this.SelectionStatus = new CompletionSelectionStatus( selectedCompletionItem, isSelected: !isSoftSelected, isUnique: selectedCompletionItem != null); }
public void SetCompletionItems( IList <PresentationItem> completionItems, PresentationItem selectedItem, PresentationItem presetBuilder, bool suggestionMode, bool isSoftSelected, ImmutableArray <CompletionItemFilter> completionItemFilters, IReadOnlyDictionary <CompletionItem, string> completionItemToFilterText) { this.AssertIsForeground(); VSCompletion selectedCompletionItem = null; // Initialize the completion map to a reasonable default initial size (+1 for the builder) PresentationItemMap = PresentationItemMap ?? new Dictionary <PresentationItem, VSCompletion>(completionItems.Count + 1); CompletionItemToFilterText = completionItemToFilterText; try { VsCompletionSet.WritableCompletionBuilders.BeginBulkOperation(); VsCompletionSet.WritableCompletionBuilders.Clear(); this.SetupFilters(completionItemFilters); var applicableToText = VsCompletionSet.ApplicableTo.GetText( VsCompletionSet.ApplicableTo.TextBuffer.CurrentSnapshot); SimplePresentationItem filteredSuggestionModeItem = null; if (selectedItem != null) { filteredSuggestionModeItem = new SimplePresentationItem( CompletionItem.Create( displayText: applicableToText, span: VsCompletionSet.ApplicableTo.GetSpan( VsCompletionSet.ApplicableTo.TextBuffer.CurrentSnapshot).Span.ToTextSpan()), selectedItem.CompletionService, isSuggestionModeItem: true); } var showBuilder = suggestionMode || presetBuilder != null; var bestSuggestionModeItem = applicableToText.Length > 0 ? filteredSuggestionModeItem : presetBuilder ?? filteredSuggestionModeItem; if (showBuilder && bestSuggestionModeItem != null) { var suggestionModeCompletion = GetVSCompletion(bestSuggestionModeItem); VsCompletionSet.WritableCompletionBuilders.Add(suggestionModeCompletion); if (selectedItem != null && selectedItem.IsSuggestionModeItem) { selectedCompletionItem = suggestionModeCompletion; } } } finally { VsCompletionSet.WritableCompletionBuilders.EndBulkOperation(); } try { VsCompletionSet.WritableCompletions.BeginBulkOperation(); VsCompletionSet.WritableCompletions.Clear(); foreach (var item in completionItems) { var completionItem = GetVSCompletion(item); VsCompletionSet.WritableCompletions.Add(completionItem); if (item == selectedItem) { selectedCompletionItem = completionItem; } } } finally { VsCompletionSet.WritableCompletions.EndBulkOperation(); } VsCompletionSet.SelectionStatus = new CompletionSelectionStatus( selectedCompletionItem, isSelected: !isSoftSelected, isUnique: selectedCompletionItem != null); }
public void SetCompletionItems( IList<PresentationItem> completionItems, PresentationItem selectedItem, PresentationItem presetBuilder, bool suggestionMode, bool isSoftSelected, ImmutableArray<CompletionItemFilter> completionItemFilters, string filterText) { this.AssertIsForeground(); VSCompletion selectedCompletionItem = null; // Initialize the completion map to a reasonable default initial size (+1 for the builder) PresentationItemMap = PresentationItemMap ?? new Dictionary<PresentationItem, VSCompletion>(completionItems.Count + 1); FilterText = filterText; try { VsCompletionSet.WritableCompletionBuilders.BeginBulkOperation(); VsCompletionSet.WritableCompletionBuilders.Clear(); this.SetupFilters(completionItemFilters); var applicableToText = VsCompletionSet.ApplicableTo.GetText( VsCompletionSet.ApplicableTo.TextBuffer.CurrentSnapshot); SimplePresentationItem filteredSuggestionModeItem = null; if (selectedItem != null) { var completionItem = CompletionItem.Create(displayText: applicableToText); completionItem.Span = VsCompletionSet.ApplicableTo.GetSpan( VsCompletionSet.ApplicableTo.TextBuffer.CurrentSnapshot).Span.ToTextSpan(); filteredSuggestionModeItem = new SimplePresentationItem( completionItem, selectedItem.CompletionService, isSuggestionModeItem: true); } var showBuilder = suggestionMode || presetBuilder != null; var bestSuggestionModeItem = applicableToText.Length > 0 ? filteredSuggestionModeItem : presetBuilder ?? filteredSuggestionModeItem; if (showBuilder && bestSuggestionModeItem != null) { var suggestionModeCompletion = GetVSCompletion(bestSuggestionModeItem); VsCompletionSet.WritableCompletionBuilders.Add(suggestionModeCompletion); if (selectedItem != null && selectedItem.IsSuggestionModeItem) { selectedCompletionItem = suggestionModeCompletion; } } } finally { VsCompletionSet.WritableCompletionBuilders.EndBulkOperation(); } try { VsCompletionSet.WritableCompletions.BeginBulkOperation(); VsCompletionSet.WritableCompletions.Clear(); foreach (var item in completionItems) { var completionItem = GetVSCompletion(item); VsCompletionSet.WritableCompletions.Add(completionItem); if (item == selectedItem) { selectedCompletionItem = completionItem; } } } finally { VsCompletionSet.WritableCompletions.EndBulkOperation(); } VsCompletionSet.SelectionStatus = new CompletionSelectionStatus( selectedCompletionItem, isSelected: !isSoftSelected, isUnique: selectedCompletionItem != null); }
void ICompletionSet.SetCompletionItems( IList<PresentationItem> completionItems, PresentationItem selectedItem, PresentationItem presetBuilder, bool suggestionMode, bool isSoftSelected, ImmutableArray<CompletionItemFilter> completionItemFilters, IReadOnlyDictionary<CompletionItem, string> completionItemToFilterText) { this._foregroundObject.AssertIsForeground(); VSCompletion selectedCompletionItem = null; // Initialize the completion map to a reasonable default initial size (+1 for the builder) _presentationItemMap = _presentationItemMap ?? new Dictionary<PresentationItem, VSCompletion>(completionItems.Count + 1); _completionItemToFilterText = completionItemToFilterText; try { this.WritableCompletionBuilders.BeginBulkOperation(); this.WritableCompletionBuilders.Clear(); #if DEV15 // If more than one filter was provided, then present it to the user. if (_filters == null && completionItemFilters.Length > 1) { _filters = completionItemFilters.Select(f => new IntellisenseFilter2(this, f, GetLanguage())) .ToArray(); } #endif var applicableToText = this.ApplicableTo.GetText(this.ApplicableTo.TextBuffer.CurrentSnapshot); SimplePresentationItem filteredSuggestionModeItem = null; if (selectedItem != null) { filteredSuggestionModeItem = new SimplePresentationItem( CompletionItem.Create( displayText: applicableToText, span: this.ApplicableTo.GetSpan(this.ApplicableTo.TextBuffer.CurrentSnapshot).Span.ToTextSpan()), selectedItem.CompletionService, isSuggestionModeItem: true); } var showBuilder = suggestionMode || presetBuilder != null; var bestSuggestionModeItem = applicableToText.Length > 0 ? filteredSuggestionModeItem : presetBuilder ?? filteredSuggestionModeItem; if (showBuilder && bestSuggestionModeItem != null) { var suggestionModeCompletion = GetVSCompletion(bestSuggestionModeItem); this.WritableCompletionBuilders.Add(suggestionModeCompletion); if (selectedItem != null && selectedItem.IsSuggestionModeItem) { selectedCompletionItem = suggestionModeCompletion; } } } finally { this.WritableCompletionBuilders.EndBulkOperation(); } try { this.WritableCompletions.BeginBulkOperation(); this.WritableCompletions.Clear(); foreach (var item in completionItems) { var completionItem = GetVSCompletion(item); this.WritableCompletions.Add(completionItem); if (item == selectedItem) { selectedCompletionItem = completionItem; } } } finally { this.WritableCompletions.EndBulkOperation(); } this.SelectionStatus = new CompletionSelectionStatus( selectedCompletionItem, isSelected: !isSoftSelected, isUnique: selectedCompletionItem != null); }