public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, IList<CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); if (completionService != null && workspace != null && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DisplayCompletionItems which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shorcuts. updatedTotalItems = new List<CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItems.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } return new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty); }
public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, IList <CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); if (completionService != null && workspace != null && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DisplayCompletionItems which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shorcuts. updatedTotalItems = new List <CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItems.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } return(new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty)); }
public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, ImmutableArray<CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); if (completionService != null && workspace != null && workspace.Kind != WorkspaceKind.Interactive && // TODO (https://github.com/dotnet/roslyn/issues/5107): support in interactive workspace.Options.GetOption(InternalFeatureOnOffOptions.Snippets) && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DescriptionModifyingCompletionItem which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shortcuts. var updatedTotalItemsBuilder = ImmutableArray.CreateBuilder<CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItemsBuilder.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedTotalItems = updatedTotalItemsBuilder.AsImmutable(); updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } return new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty); }
public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, ImmutableArray <CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); if (completionService != null && workspace != null && workspace.Kind != WorkspaceKind.Interactive && // TODO (https://github.com/dotnet/roslyn/issues/5107): support in interactive workspace.Options.GetOption(InternalFeatureOnOffOptions.Snippets) && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DescriptionModifyingCompletionItem which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shortcuts. var updatedTotalItemsBuilder = ImmutableArray.CreateBuilder <CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItemsBuilder.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedTotalItems = updatedTotalItemsBuilder.AsImmutable(); updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } return(new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty)); }
public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, ImmutableArray <CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); // Get the set of actual filters used by all the completion items // that are in the list. var actualFiltersSeen = new HashSet <CompletionItemFilter>(); foreach (var item in totalItems) { foreach (var filter in item.Filters) { actualFiltersSeen.Add(filter); } } // The set of filters we'll want to show the user are the filters that are actually // used by our completion items. i.e. there's no reason to show the "field" filter // if none of completion items is actually a field. var actualItemFilters = CompletionItemFilter.AllFilters.Where(actualFiltersSeen.Contains) .ToImmutableArray(); // By default we do not filter anything out. ImmutableDictionary <CompletionItemFilter, bool> filterState = null; if (completionService != null && workspace != null && workspace.Kind != WorkspaceKind.Interactive && // TODO (https://github.com/dotnet/roslyn/issues/5107): support in interactive workspace.Options.GetOption(InternalFeatureOnOffOptions.Snippets) && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DescriptionModifyingCompletionItem which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shortcuts. var updatedTotalItemsBuilder = ImmutableArray.CreateBuilder <CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItemsBuilder.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedTotalItems = updatedTotalItemsBuilder.AsImmutable(); updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } var completionItemToFilterText = new Dictionary <CompletionItem, string>(); return(new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, actualItemFilters, filterState, completionItemToFilterText, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty)); }
public static Model CreateModel( DisconnectedBufferGraph disconnectedBufferGraph, TextSpan defaultTrackingSpanInSubjectBuffer, ImmutableArray<CompletionItem> totalItems, CompletionItem selectedItem, bool isHardSelection, bool isUnique, bool useSuggestionCompletionMode, CompletionItem builder, CompletionTriggerInfo triggerInfo, ICompletionService completionService, Workspace workspace) { var updatedTotalItems = totalItems; CompletionItem updatedSelectedItem = selectedItem; CompletionItem updatedBuilder = builder; CompletionItem updatedDefaultBuilder = GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer); // Get the set of actual filters used by all the completion items // that are in the list. var actualFiltersSeen = new HashSet<CompletionItemFilter>(); foreach (var item in totalItems) { foreach (var filter in item.Filters) { actualFiltersSeen.Add(filter); } } // The set of filters we'll want to show the user are the filters that are actually // used by our completion items. i.e. there's no reason to show the "field" filter // if none of completion items is actually a field. var actualItemFilters = CompletionItemFilter.AllFilters.Where(actualFiltersSeen.Contains) .ToImmutableArray(); // By default we do not filter anything out. ImmutableDictionary<CompletionItemFilter, bool> filterState = null; if (completionService != null && workspace != null && workspace.Kind != WorkspaceKind.Interactive && // TODO (https://github.com/dotnet/roslyn/issues/5107): support in interactive workspace.Options.GetOption(InternalFeatureOnOffOptions.Snippets) && triggerInfo.TriggerReason != CompletionTriggerReason.Snippets) { // In order to add snippet expansion notes to completion item descriptions, update // all of the provided CompletionItems to DescriptionModifyingCompletionItem which will proxy // requests to the original completion items and add the snippet expansion note to // the description if necessary. We won't do this if the list was triggered to show // snippet shortcuts. var updatedTotalItemsBuilder = ImmutableArray.CreateBuilder<CompletionItem>(); updatedSelectedItem = null; foreach (var item in totalItems) { var updatedItem = new DescriptionModifyingCompletionItem(item, completionService, workspace); updatedTotalItemsBuilder.Add(updatedItem); if (item == selectedItem) { updatedSelectedItem = updatedItem; } } updatedTotalItems = updatedTotalItemsBuilder.AsImmutable(); updatedBuilder = null; if (builder != null) { updatedBuilder = new DescriptionModifyingCompletionItem(builder, completionService, workspace); } updatedDefaultBuilder = new DescriptionModifyingCompletionItem( GetDefaultBuilder(defaultTrackingSpanInSubjectBuffer), completionService, workspace); } var completionItemToFilterText= new Dictionary<CompletionItem, string>(); return new Model( disconnectedBufferGraph, updatedTotalItems, updatedTotalItems, updatedSelectedItem, actualItemFilters, filterState, completionItemToFilterText, isHardSelection, isUnique, useSuggestionCompletionMode, updatedBuilder, updatedDefaultBuilder, triggerInfo, GetDefaultTrackingSpanEnd(defaultTrackingSpanInSubjectBuffer, disconnectedBufferGraph), completionService.DismissIfEmpty); }