diff options
author | Aaron Bockover <abock@microsoft.com> | 2019-06-12 22:02:35 +0300 |
---|---|---|
committer | Aaron Bockover <abock@microsoft.com> | 2019-06-12 22:02:35 +0300 |
commit | c000e60533de4389a78ab2b5fcd39f08e736f635 (patch) | |
tree | 88be11f91fa85e14826ce82d0c50146e2ffe973d | |
parent | 1bc2074f35ff1df5500d5b9d86de4f4417206e45 (diff) |
Sync with vs-editor-core@e7e47480
4 files changed, 80 insertions, 17 deletions
diff --git a/src/Editor/Language/Def/Language/AsyncCompletion/Data/AsyncCompletionSessionDataSnapshot.cs b/src/Editor/Language/Def/Language/AsyncCompletion/Data/AsyncCompletionSessionDataSnapshot.cs index eeaeded..b6f1227 100644 --- a/src/Editor/Language/Def/Language/AsyncCompletion/Data/AsyncCompletionSessionDataSnapshot.cs +++ b/src/Editor/Language/Def/Language/AsyncCompletion/Data/AsyncCompletionSessionDataSnapshot.cs @@ -25,6 +25,11 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data public CompletionTrigger Trigger { get; } /// <summary> + /// The <see cref="CompletionTrigger"/> that started this completion session. + /// </summary> + public CompletionTrigger InitialTrigger { get; } + + /// <summary> /// Filters, their availability and selection state. /// </summary> public ImmutableArray<CompletionFilterWithState> SelectedFilters { get; } @@ -55,11 +60,40 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data ImmutableArray<CompletionFilterWithState> selectedFilters, bool isSoftSelected, bool displaySuggestionItem + ) : this( + initialSortedList, + snapshot, + trigger, + default, + selectedFilters, + isSoftSelected, + displaySuggestionItem) + { + } + + /// <summary> + /// Constructs <see cref="AsyncCompletionSessionDataSnapshot"/> + /// </summary> + /// <param name="initialSortedList">Set of <see cref="CompletionItem"/>s to filter and sort, originally returned from <see cref="IAsyncCompletionItemManager.SortCompletionListAsync"/></param> + /// <param name="snapshot">The <see cref="ITextSnapshot"/> applicable for this computation. The snapshot comes from the view's data buffer</param> + /// <param name="trigger">The <see cref="CompletionTrigger"/> that caused this update</param> + /// <param name="selectedFilters">Filters, their availability and selection state</param> + /// <param name="isSoftSelected">Inidicates whether the session is using soft selection</param> + /// <param name="displaySuggestionItem">Inidicates whether the session has a suggestion item</param> + public AsyncCompletionSessionDataSnapshot( + ImmutableArray<CompletionItem> initialSortedList, + ITextSnapshot snapshot, + CompletionTrigger trigger, + CompletionTrigger initialTrigger, + ImmutableArray<CompletionFilterWithState> selectedFilters, + bool isSoftSelected, + bool displaySuggestionItem ) { InitialSortedList = initialSortedList; Snapshot = snapshot; Trigger = trigger; + InitialTrigger = initialTrigger; SelectedFilters = selectedFilters; IsSoftSelected = isSoftSelected; DisplaySuggestionItem = displaySuggestionItem; diff --git a/src/Editor/Language/Def/Language/AsyncCompletion/Data/CompletionItem.cs b/src/Editor/Language/Def/Language/AsyncCompletion/Data/CompletionItem.cs index 4bbf5e7..51e1e8a 100644 --- a/src/Editor/Language/Def/Language/AsyncCompletion/Data/CompletionItem.cs +++ b/src/Editor/Language/Def/Language/AsyncCompletion/Data/CompletionItem.cs @@ -37,6 +37,11 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data public string FilterText { get; } /// <summary> + /// Text used by narrator and other automation tools + /// </summary> + public string AutomationText { get; } + + /// <summary> /// Reference to the instance that will provide tooltip and custom commit method. /// This should be the same instance as the one that created this <see cref="CompletionItem"/> /// </summary> @@ -76,7 +81,7 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data /// <param name="displayText">Text to use in the UI, when sorting, filtering and completing</param> /// <param name="source">Reference to <see cref="IAsyncCompletionSource"/> that created this item</param> public CompletionItem(string displayText, IAsyncCompletionSource source) - : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, + : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, automationText: displayText, source: source, filters: ImmutableArray<CompletionFilter>.Empty, icon: default(ImageElement), suffix: string.Empty, attributeIcons: ImmutableArray<ImageElement>.Empty) { @@ -90,7 +95,7 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data /// <param name="source">Reference to <see cref="IAsyncCompletionSource"/> that created this item</param> /// <param name="icon">Image displayed in the UI. Default is <c>default(ImageElement)</c></param> public CompletionItem(string displayText, IAsyncCompletionSource source, ImageElement icon) - : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, + : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, automationText: displayText, source: source, filters: ImmutableArray<CompletionFilter>.Empty, icon: icon, suffix: string.Empty, attributeIcons: ImmutableArray<ImageElement>.Empty) { @@ -105,7 +110,7 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data /// <param name="icon">Image displayed in the UI</param> /// <param name="filters"><see cref="ImmutableArray"/> of references to <see cref="CompletionFilter"/>s applicable to this item. Default is <c>ImmutableArray<CompletionFilter>.Empty</c></param> public CompletionItem(string displayText, IAsyncCompletionSource source, ImageElement icon, ImmutableArray<CompletionFilter> filters) - : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, + : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, automationText: displayText, source: source, filters: filters, icon: icon, suffix: string.Empty, attributeIcons: ImmutableArray<ImageElement>.Empty) { @@ -121,14 +126,14 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data /// <param name="filters"><see cref="ImmutableArray"/> of references to <see cref="CompletionFilter"/>s applicable to this item</param> /// <param name="suffix">Additional text to display in the UI. Default is <c>string.Empty</c></param> public CompletionItem(string displayText, IAsyncCompletionSource source, ImageElement icon, ImmutableArray<CompletionFilter> filters, string suffix) - : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, + : this(displayText, insertText: displayText, sortText: displayText, filterText: displayText, automationText: displayText, source: source, filters: filters, icon: icon, suffix: suffix, attributeIcons: ImmutableArray<ImageElement>.Empty) { } /// <summary> - /// Creates a completion item, allowing customization of all of its properties. + /// Creates a completion item, allowing customization of all of its properties as of Visual Studio 16.0 /// </summary> /// <param name="displayText">Text used in the UI</param> /// <param name="source">Reference to <see cref="IAsyncCompletionSource"/> that created this item</param> @@ -141,22 +146,35 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data /// <param name="attributeIcons">Additional images to display in the UI. Default is <c>ImmutableArray<ImageElement>.Empty</c></param> public CompletionItem(string displayText, IAsyncCompletionSource source, ImageElement icon, ImmutableArray<CompletionFilter> filters, string suffix, string insertText, string sortText, string filterText, ImmutableArray<ImageElement> attributeIcons) + : this(displayText, insertText: insertText, sortText: sortText, filterText: filterText, automationText: displayText, + source: source, filters: filters, icon: icon, suffix: suffix, attributeIcons: attributeIcons) + { + } + + /// <summary> + /// Creates a completion item, allowing customization of all of its properties as of Visual Studio 16.1 + /// </summary> + /// <param name="displayText">Text used in the UI</param> + /// <param name="source">Reference to <see cref="IAsyncCompletionSource"/> that created this item</param> + /// <param name="icon">Image displayed in the UI. Default is <c>default(ImageElement)</c></param> + /// <param name="filters"><see cref="ImmutableArray"/> of references to <see cref="CompletionFilter"/>s applicable to this item. Default is <c>ImmutableArray<CompletionFilter>.Empty</c></param> + /// <param name="suffix">Additional text to display in the UI. Default is <c>string.Empty</c></param> + /// <param name="insertText">Text inserted when completing this item. Default is <see cref="displayText"/></param> + /// <param name="sortText">Text used by <see cref="IAsyncCompletionItemManager"/> when sorting against other items. Default is <see cref="displayText"/></param> + /// <param name="filterText">Text used by <see cref="IAsyncCompletionItemManager"/> when matching against the applicable span. Default is <see cref="displayText"/></param> + /// <param name="automationText">Text spoken by the narrator when this item is selected</param> + /// <param name="attributeIcons">Additional images to display in the UI. Default is <c>ImmutableArray<ImageElement>.Empty</c></param> + public CompletionItem(string displayText, IAsyncCompletionSource source, ImageElement icon, ImmutableArray<CompletionFilter> filters, + string suffix, string insertText, string sortText, string filterText, string automationText, ImmutableArray<ImageElement> attributeIcons) { - if (displayText == null) - displayText = string.Empty; - if (insertText == null) - insertText = string.Empty; - if (sortText == null) - sortText = string.Empty; - if (filterText == null) - filterText = string.Empty; if (filters.IsDefault) throw new ArgumentException("Array must be initialized", nameof(filters)); - DisplayText = displayText; - InsertText = insertText; - SortText = sortText; - FilterText = filterText; + DisplayText = displayText ?? string.Empty; + InsertText = insertText ?? string.Empty; + SortText = sortText ?? string.Empty; + FilterText = filterText ?? string.Empty; + AutomationText = automationText ?? string.Empty; Source = source ?? throw new ArgumentNullException(nameof(source)); Icon = icon; Filters = filters; diff --git a/src/Editor/Language/Impl/Language/AsyncCompletion/AsyncCompletionSession.cs b/src/Editor/Language/Impl/Language/AsyncCompletion/AsyncCompletionSession.cs index 639f821..094c67d 100644 --- a/src/Editor/Language/Impl/Language/AsyncCompletion/AsyncCompletionSession.cs +++ b/src/Editor/Language/Impl/Language/AsyncCompletion/AsyncCompletionSession.cs @@ -991,6 +991,7 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Implement model.InitialItems, instantaneousSnapshot, trigger, + InitialTrigger, model.Filters, model.UseSoftSelection, model.DisplaySuggestionItem), @@ -1166,6 +1167,7 @@ namespace Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Implement model.InitialItems, model.Snapshot, new CompletionTrigger(CompletionTriggerReason.FilterChange, model.Snapshot), + InitialTrigger, newFilters, model.UseSoftSelection, model.DisplaySuggestionItem), diff --git a/src/Editor/Text/Def/TextUI/Commanding/Commands/GoToMatchingBraceCommandArgs.cs b/src/Editor/Text/Def/TextUI/Commanding/Commands/GoToMatchingBraceCommandArgs.cs new file mode 100644 index 0000000..2af5ad3 --- /dev/null +++ b/src/Editor/Text/Def/TextUI/Commanding/Commands/GoToMatchingBraceCommandArgs.cs @@ -0,0 +1,9 @@ +namespace Microsoft.VisualStudio.Text.Editor.Commanding.Commands +{ + public class GoToMatchingBraceCommandArgs : EditorCommandArgs + { + public GoToMatchingBraceCommandArgs(ITextView textView, ITextBuffer subjectBuffer) : base(textView, subjectBuffer) + { + } + } +}
\ No newline at end of file |