diff --git a/src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs b/src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs index 22b166b04d78e..d4de5fe3b63cb 100644 --- a/src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs +++ b/src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs @@ -173,15 +173,14 @@ public PresentationItem GetPresentationItem(VSCompletion completion) return null; } - protected string GetLanguage() + protected Document GetDocument() { - var document = SubjectBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges(); - if (document != null) - { - return document.Project.Language; - } + return SubjectBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges(); + } - return ""; + protected string GetLanguage() + { + return GetDocument()?.Project.Language ?? ""; } } } \ No newline at end of file diff --git a/src/EditorFeatures/Next/IntelliSense/Completion/Presentation/Roslyn15CompletionSet.cs b/src/EditorFeatures/Next/IntelliSense/Completion/Presentation/Roslyn15CompletionSet.cs index 6eb5e1c1592dc..64514840a981b 100644 --- a/src/EditorFeatures/Next/IntelliSense/Completion/Presentation/Roslyn15CompletionSet.cs +++ b/src/EditorFeatures/Next/IntelliSense/Completion/Presentation/Roslyn15CompletionSet.cs @@ -24,6 +24,9 @@ internal class Roslyn15CompletionSet : Roslyn14CompletionSet private CompletionHelper _completionHelper; public IReadOnlyList Filters; + private readonly bool _highlightMatchingPortions; + private readonly bool _showFilters; + public Roslyn15CompletionSet( IVisualStudioCompletionSet vsCompletionSet, CompletionPresenterSession completionPresenterSession, @@ -31,15 +34,23 @@ public Roslyn15CompletionSet( ITextBuffer subjectBuffer) : base(vsCompletionSet, completionPresenterSession, textView, subjectBuffer) { + var document = GetDocument(); + + if (document != null) + { + var options = document.Options; + _highlightMatchingPortions = options.GetOption(CompletionOptions.HighlightMatchingPortionsOfCompletionListItems); + _showFilters = options.GetOption(CompletionOptions.ShowCompletionItemFilters); + } } protected override void SetupFilters(ImmutableArray completionItemFilters) { // If more than one filter was provided, then present it to the user. - if (Filters == null && completionItemFilters.Length > 1) + if (_showFilters && Filters == null && completionItemFilters.Length > 1) { Filters = completionItemFilters.Select(f => new IntellisenseFilter2(this, f, GetLanguage())) - .ToArray(); + .ToArray(); } } @@ -48,7 +59,7 @@ private CompletionHelper GetCompletionHelper() this.AssertIsForeground(); if (_completionHelper == null) { - var document = SubjectBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges(); + var document = GetDocument(); if (document != null) { _completionHelper = CompletionHelper.GetHelper(document, @@ -61,7 +72,7 @@ private CompletionHelper GetCompletionHelper() public IReadOnlyList GetHighlightedSpansInDisplayText(string displayText) { - if (CompletionItemToFilterText != null) + if (_highlightMatchingPortions && CompletionItemToFilterText != null) { var completionHelper = this.GetCompletionHelper(); if (completionHelper != null)