diff --git a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SnippetCompletionProviderTests.cs b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SnippetCompletionProviderTests.cs index 6cd81d8249a1e8b03f99772eecfc12b8f61b1138..df2c93e7e85d2ae0fe5000c927b8d53f3838206b 100644 --- a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SnippetCompletionProviderTests.cs +++ b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SnippetCompletionProviderTests.cs @@ -116,6 +116,17 @@ class C VerifyItemInLinkedFiles(markup, MockSnippetInfoService.SnippetShortcut, null); } + [WorkItem(1140893)] + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] + public void CommitWithEnterObeysOption() + { + VerifySendEnterThroughToEnter("try", "tr", sendThroughEnterEnabled: true, expected: false); + VerifySendEnterThroughToEnter("try", "try", sendThroughEnterEnabled: true, expected: true); + + VerifySendEnterThroughToEnter("try", "tr", sendThroughEnterEnabled: false, expected: false); + VerifySendEnterThroughToEnter("try", "try", sendThroughEnterEnabled: false, expected: false); + } + private class MockSnippetInfoService : ISnippetInfoService { internal const string SnippetShortcut = "SnippetShortcut"; diff --git a/src/Features/CSharp/Completion/CompletionProviders/SnippetCompletionProvider.cs b/src/Features/CSharp/Completion/CompletionProviders/SnippetCompletionProvider.cs index 1d50ba9231b883da2ea5219f8911b3cc97eb03af..00d1c6de3bf876f855fe9531b4643a6ab9617e1a 100644 --- a/src/Features/CSharp/Completion/CompletionProviders/SnippetCompletionProvider.cs +++ b/src/Features/CSharp/Completion/CompletionProviders/SnippetCompletionProvider.cs @@ -47,7 +47,7 @@ public override bool IsCommitCharacter(CompletionItem completionItem, char ch, s public override bool SendEnterThroughToEditor(CompletionItem completionItem, string textTypedSoFar) { - return false; + return CompletionUtilities.SendEnterThroughToEditor(completionItem, textTypedSoFar); } protected override async Task> GetItemsWorkerAsync(Document document, int position, CompletionTriggerInfo triggerInfo, CancellationToken cancellationToken) @@ -138,11 +138,12 @@ private async Task> GetSnippetCompletionItemsAsync(W } var text = await semanticModel.SyntaxTree.GetTextAsync(cancellationToken).ConfigureAwait(false); - return snippets.Select(snippet => new CompletionItem( + return snippets.Select(snippet => new CSharpCompletionItem( + workspace, this, displayText: isPreProcessorContext ? snippet.Shortcut.Substring(1) : snippet.Shortcut, sortText: isPreProcessorContext ? snippet.Shortcut.Substring(1) : snippet.Shortcut, - description: (snippet.Title + Environment.NewLine + snippet.Description).ToSymbolDisplayParts(), + descriptionFactory: c => Task.FromResult((snippet.Title + Environment.NewLine + snippet.Description).ToSymbolDisplayParts()), filterSpan: CompletionUtilities.GetTextChangeSpan(text, position), glyph: Glyph.Snippet, shouldFormatOnCommit: service.ShouldFormatSnippet(snippet)));