From e007371e536451e6fa8a10c72df0919a8cd953bf Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 6 Mar 2020 12:30:23 -0800 Subject: [PATCH] Set both completion options to ensure neither can cause unimported types to be included. --- .../Protocol/Handler/Completion/CompletionHandler.cs | 5 ++++- .../ProtocolUnitTests/Completion/CompletionTests.cs | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Features/LanguageServer/Protocol/Handler/Completion/CompletionHandler.cs b/src/Features/LanguageServer/Protocol/Handler/Completion/CompletionHandler.cs index e42d38dbb1e..822bf63a19c 100644 --- a/src/Features/LanguageServer/Protocol/Handler/Completion/CompletionHandler.cs +++ b/src/Features/LanguageServer/Protocol/Handler/Completion/CompletionHandler.cs @@ -40,8 +40,11 @@ internal class CompletionHandler : IRequestHandler // https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1076759 // 2. We need to figure out how to provide the text edits along with the completion item or provide them in the resolve request. // https://devdiv.visualstudio.com/DevDiv/_workitems/edit/985860/ + // 3. LSP client should support completion filters / expanders var documentOptions = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false); - var completionOptions = documentOptions.WithChangedOption(CompletionServiceOptions.IsExpandedCompletion, false); + var completionOptions = documentOptions + .WithChangedOption(CompletionOptions.ShowItemsFromUnimportedNamespaces, false) + .WithChangedOption(CompletionServiceOptions.IsExpandedCompletion, false); var completionService = document.Project.LanguageServices.GetService(); var list = await completionService.GetCompletionsAsync(document, position, options: completionOptions, cancellationToken: cancellationToken).ConfigureAwait(false); diff --git a/src/Features/LanguageServer/ProtocolUnitTests/Completion/CompletionTests.cs b/src/Features/LanguageServer/ProtocolUnitTests/Completion/CompletionTests.cs index db6dfdee3b6..d7e004314b5 100644 --- a/src/Features/LanguageServer/ProtocolUnitTests/Completion/CompletionTests.cs +++ b/src/Features/LanguageServer/ProtocolUnitTests/Completion/CompletionTests.cs @@ -47,7 +47,9 @@ void M() var (solution, locations) = CreateTestSolution(markup); // Make sure the unimported types option is on by default. - solution = solution.WithOptions(solution.Options.WithChangedOption(CompletionServiceOptions.IsExpandedCompletion, true)); + solution = solution.WithOptions(solution.Options + .WithChangedOption(CompletionOptions.ShowItemsFromUnimportedNamespaces, LanguageNames.CSharp, true) + .WithChangedOption(CompletionServiceOptions.IsExpandedCompletion, true)); var expected = CreateCompletionItem("A", LSP.CompletionItemKind.Class, new string[] { "Class", "Internal" }, CreateCompletionParams(locations["caret"].Single())); var clientCapabilities = new LSP.VSClientCapabilities { SupportsVisualStudioExtensions = true }; -- GitLab