diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Microsoft.CodeAnalysis.Razor.CohostingShared.projitems b/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Microsoft.CodeAnalysis.Razor.CohostingShared.projitems index db5efc78aab..0ee2eafa84f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Microsoft.CodeAnalysis.Razor.CohostingShared.projitems +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Microsoft.CodeAnalysis.Razor.CohostingShared.projitems @@ -30,6 +30,8 @@ + + diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/OnAutoInsert/CohostOnAutoInsertEndpoint.cs similarity index 94% rename from src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/OnAutoInsert/CohostOnAutoInsertEndpoint.cs index 71f1e88b064..9bd08318387 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/OnAutoInsert/CohostOnAutoInsertEndpoint.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; +using Microsoft.CodeAnalysis.ExternalAccess.Razor.Features; using Microsoft.CodeAnalysis.Razor.AutoInsert; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Logging; @@ -26,10 +27,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.LanguageClient.Cohost; [Shared] [CohostEndpoint(VSInternalMethods.OnAutoInsertName)] [Export(typeof(IDynamicRegistrationProvider))] -[ExportCohostStatelessLspService(typeof(CohostOnAutoInsertEndpoint))] +[ExportRazorStatelessLspService(typeof(CohostOnAutoInsertEndpoint))] [method: ImportingConstructor] #pragma warning restore RS0030 // Do not use banned APIs -internal class CohostOnAutoInsertEndpoint( +internal sealed class CohostOnAutoInsertEndpoint( IRemoteServiceInvoker remoteServiceInvoker, IClientSettingsManager clientSettingsManager, #pragma warning disable RS0030 // Do not use banned APIs @@ -52,7 +53,10 @@ private static ImmutableArray CalculateTriggerChars(IEnumerable triggerCharacters = [ .. providerTriggerCharacters, +#if !VSCODE + // VS Code's auto insert functionality is poly-filled by Roslyn. The Html server has no support for it. .. AutoInsertService.HtmlAllowedAutoInsertTriggerCharacters, +#endif .. AutoInsertService.CSharpAllowedAutoInsertTriggerCharacters ]; return triggerCharacters; @@ -64,7 +68,7 @@ private static ImmutableArray CalculateTriggerChars(IEnumerable GetRegistrations(VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) { - if (clientCapabilities.SupportsVisualStudioExtensions) + if ((clientCapabilities.TextDocument as VSInternalTextDocumentClientCapabilities)?.OnAutoInsert?.DynamicRegistration == true) { return [new Registration { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertTriggerCharacterProviders.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/OnAutoInsert/CohostOnAutoInsertTriggerCharacterProviders.cs similarity index 100% rename from src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertTriggerCharacterProviders.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/OnAutoInsert/CohostOnAutoInsertTriggerCharacterProviders.cs diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs index e025cd3b34d..4025b7d4c7c 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs @@ -71,7 +71,7 @@ public void RegistrationsProvideFilter() var clientCapabilities = new VSInternalClientCapabilities() { SupportsVisualStudioExtensions = true, - TextDocument = new TextDocumentClientCapabilities() + TextDocument = new VSInternalTextDocumentClientCapabilities() { CodeAction = new() { DynamicRegistration = true }, CodeLens = new() { DynamicRegistration = true }, @@ -87,6 +87,7 @@ public void RegistrationsProvideFilter() Implementation = new() { DynamicRegistration = true }, InlayHint = new() { DynamicRegistration = true }, LinkedEditingRange = new() { DynamicRegistration = true }, + OnAutoInsert = new() { DynamicRegistration = true }, OnTypeFormatting = new() { DynamicRegistration = true }, RangeFormatting = new() { DynamicRegistration = true }, References = new() { DynamicRegistration = true },