diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/LspFormattingCodeDocumentProvider.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/LspFormattingCodeDocumentProvider.cs deleted file mode 100644 index e04d70fff32..00000000000 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/LspFormattingCodeDocumentProvider.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; - -namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting; - -internal sealed class LspFormattingCodeDocumentProvider : IFormattingCodeDocumentProvider -{ - public ValueTask<RazorCodeDocument> GetCodeDocumentAsync(IDocumentSnapshot snapshot, CancellationToken cancellationToken) - { - // Formatting always uses design time - return snapshot.GetGeneratedOutputAsync(forceDesignTimeGeneratedOutput: true, cancellationToken); - } -} diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/InlineCompletion/InlineCompletionEndPoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/InlineCompletion/InlineCompletionEndPoint.cs index 03ff37b121a..c9abfb35c97 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/InlineCompletion/InlineCompletionEndPoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/InlineCompletion/InlineCompletionEndPoint.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; @@ -18,7 +17,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Completion; -using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.Protocol; @@ -28,7 +26,6 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.InlineCompletion; internal sealed class InlineCompletionEndpoint( IDocumentMappingService documentMappingService, IClientConnection clientConnection, - IFormattingCodeDocumentProvider formattingCodeDocumentProvider, RazorLSPOptionsMonitor optionsMonitor, ILoggerFactory loggerFactory) : IRazorRequestHandler<VSInternalInlineCompletionRequest, VSInternalInlineCompletionList?>, ICapabilitiesProvider @@ -40,7 +37,6 @@ internal sealed class InlineCompletionEndpoint( private readonly IDocumentMappingService _documentMappingService = documentMappingService; private readonly IClientConnection _clientConnection = clientConnection; - private readonly IFormattingCodeDocumentProvider _formattingCodeDocumentProvider = formattingCodeDocumentProvider; private readonly RazorLSPOptionsMonitor _optionsMonitor = optionsMonitor; private readonly ILogger _logger = loggerFactory.GetOrCreateLogger<InlineCompletionEndpoint>(); @@ -125,8 +121,7 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(VSInternalInlineCompleti var formattingContext = FormattingContext.Create( documentContext.Snapshot, codeDocument, - options, - _formattingCodeDocumentProvider); + options); if (!TryGetSnippetWithAdjustedIndentation(formattingContext, item.Text, hostDocumentIndex, out var newSnippetText)) { continue; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs index 780d31c5e56..a646391abc0 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs @@ -119,8 +119,6 @@ protected override ILspServices ConstructLspServices() // Add the logger as a service in case anything in CLaSP pulls it out to do logging services.AddSingleton<ILspLogger>(Logger); - services.AddSingleton<IFormattingCodeDocumentProvider, LspFormattingCodeDocumentProvider>(); - var featureOptions = _featureOptions ?? new DefaultLanguageServerFeatureOptions(); services.AddSingleton(featureOptions); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs index 52bb5579988..1366be999f9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs @@ -20,13 +20,10 @@ namespace Microsoft.CodeAnalysis.Razor.Formatting; internal sealed class FormattingContext { - private readonly IFormattingCodeDocumentProvider _codeDocumentProvider; - private IReadOnlyList<FormattingSpan>? _formattingSpans; private IReadOnlyDictionary<int, IndentationContext>? _indentations; private FormattingContext( - IFormattingCodeDocumentProvider codeDocumentProvider, IDocumentSnapshot originalSnapshot, RazorCodeDocument codeDocument, RazorFormattingOptions options, @@ -34,7 +31,6 @@ private FormattingContext( int hostDocumentIndex, char triggerCharacter) { - _codeDocumentProvider = codeDocumentProvider; OriginalSnapshot = originalSnapshot; CodeDocument = codeDocument; Options = options; @@ -229,14 +225,12 @@ public async Task<FormattingContext> WithTextAsync(SourceText changedText, Cance { var changedSnapshot = OriginalSnapshot.WithText(changedText); - var codeDocument = await _codeDocumentProvider - .GetCodeDocumentAsync(changedSnapshot, cancellationToken) - .ConfigureAwait(false); + // Formatting always uses design time document + var codeDocument = await changedSnapshot.GetGeneratedOutputAsync(forceDesignTimeGeneratedOutput: true, cancellationToken).ConfigureAwait(false); DEBUG_ValidateComponents(CodeDocument, codeDocument); var newContext = new FormattingContext( - _codeDocumentProvider, OriginalSnapshot, codeDocument, Options, @@ -269,13 +263,11 @@ public static FormattingContext CreateForOnTypeFormatting( IDocumentSnapshot originalSnapshot, RazorCodeDocument codeDocument, RazorFormattingOptions options, - IFormattingCodeDocumentProvider codeDocumentProvider, bool automaticallyAddUsings, int hostDocumentIndex, char triggerCharacter) { return new FormattingContext( - codeDocumentProvider, originalSnapshot, codeDocument, options, @@ -287,17 +279,14 @@ public static FormattingContext CreateForOnTypeFormatting( public static FormattingContext Create( IDocumentSnapshot originalSnapshot, RazorCodeDocument codeDocument, - RazorFormattingOptions options, - IFormattingCodeDocumentProvider codeDocumentProvider) + RazorFormattingOptions options) { return new FormattingContext( - codeDocumentProvider, originalSnapshot, codeDocument, options, automaticallyAddUsings: false, hostDocumentIndex: 0, - triggerCharacter: '\0' - ); + triggerCharacter: '\0'); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/IFormattingCodeDocumentProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/IFormattingCodeDocumentProvider.cs deleted file mode 100644 index 34ceec8cb23..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/IFormattingCodeDocumentProvider.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; - -namespace Microsoft.CodeAnalysis.Razor.Formatting; - -internal interface IFormattingCodeDocumentProvider -{ - ValueTask<RazorCodeDocument> GetCodeDocumentAsync(IDocumentSnapshot snapshot, CancellationToken cancellationToken); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs index eb03574c68e..585299916ce 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs @@ -29,21 +29,16 @@ internal class RazorFormattingService : IRazorFormattingService private static readonly FrozenSet<string> s_csharpTriggerCharacterSet = FrozenSet.ToFrozenSet(["}", ";"], StringComparer.Ordinal); private static readonly FrozenSet<string> s_htmlTriggerCharacterSet = FrozenSet.ToFrozenSet(["\n", "{", "}", ";"], StringComparer.Ordinal); - private readonly IFormattingCodeDocumentProvider _codeDocumentProvider; - private readonly ImmutableArray<IFormattingPass> _documentFormattingPasses; private readonly ImmutableArray<IFormattingPass> _validationPasses; private readonly CSharpOnTypeFormattingPass _csharpOnTypeFormattingPass; private readonly HtmlOnTypeFormattingPass _htmlOnTypeFormattingPass; public RazorFormattingService( - IFormattingCodeDocumentProvider codeDocumentProvider, IDocumentMappingService documentMappingService, IHostServicesProvider hostServicesProvider, ILoggerFactory loggerFactory) { - _codeDocumentProvider = codeDocumentProvider; - _htmlOnTypeFormattingPass = new HtmlOnTypeFormattingPass(loggerFactory); _csharpOnTypeFormattingPass = new CSharpOnTypeFormattingPass(documentMappingService, hostServicesProvider, loggerFactory); _validationPasses = @@ -67,9 +62,7 @@ public async Task<ImmutableArray<TextChange>> GetDocumentFormattingChangesAsync( RazorFormattingOptions options, CancellationToken cancellationToken) { - var codeDocument = await _codeDocumentProvider - .GetCodeDocumentAsync(documentContext.Snapshot, cancellationToken) - .ConfigureAwait(false); + var codeDocument = await documentContext.Snapshot.GetGeneratedOutputAsync(forceDesignTimeGeneratedOutput: true, cancellationToken).ConfigureAwait(false); // Range formatting happens on every paste, and if there are Razor diagnostics in the file // that can make some very bad results. eg, given: @@ -100,8 +93,7 @@ public async Task<ImmutableArray<TextChange>> GetDocumentFormattingChangesAsync( var context = FormattingContext.Create( documentSnapshot, codeDocument, - options, - _codeDocumentProvider); + options); var originalText = context.SourceText; var result = htmlChanges; @@ -252,7 +244,6 @@ private async Task<ImmutableArray<TextChange>> ApplyFormattedChangesAsync( documentSnapshot, codeDocument, options, - _codeDocumentProvider, automaticallyAddUsings: automaticallyAddUsings, hostDocumentIndex, triggerCharacter); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingCodeDocumentProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingCodeDocumentProvider.cs deleted file mode 100644 index 914e05b6139..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingCodeDocumentProvider.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System.Composition; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; - -namespace Microsoft.CodeAnalysis.Remote.Razor.Formatting; - -[Export(typeof(IFormattingCodeDocumentProvider)), Shared] -internal sealed class RemoteFormattingCodeDocumentProvider : IFormattingCodeDocumentProvider -{ - public ValueTask<RazorCodeDocument> GetCodeDocumentAsync(IDocumentSnapshot snapshot, CancellationToken cancellationToken) - { - // Formatting always uses design time - return snapshot.GetGeneratedOutputAsync(forceDesignTimeGeneratedOutput: true, cancellationToken); - } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteRazorFormattingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteRazorFormattingService.cs index 7de42441ecc..25793db1569 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteRazorFormattingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteRazorFormattingService.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Remote.Razor.Formatting; [Export(typeof(IRazorFormattingService)), Shared] [method: ImportingConstructor] -internal sealed class RemoteRazorFormattingService(IFormattingCodeDocumentProvider codeDocumentProvider, IDocumentMappingService documentMappingService, IHostServicesProvider hostServicesProvider, ILoggerFactory loggerFactory) - : RazorFormattingService(codeDocumentProvider, documentMappingService, hostServicesProvider, loggerFactory) +internal sealed class RemoteRazorFormattingService(IDocumentMappingService documentMappingService, IHostServicesProvider hostServicesProvider, ILoggerFactory loggerFactory) + : RazorFormattingService(documentMappingService, hostServicesProvider, loggerFactory) { } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs index ed626bc07bd..ee58d38dcd0 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs @@ -88,8 +88,7 @@ private static FormattingContext CreateFormattingContext(TestCode input, int tab var context = FormattingContext.Create( documentSnapshot, codeDocument, - options, - new LspFormattingCodeDocumentProvider()); + options); return context; } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs index e7a66fad443..736d19ac580 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs @@ -86,8 +86,7 @@ private static FormattingContext CreateFormattingContext(TestCode input, int tab var context = FormattingContext.Create( documentSnapshot, codeDocument, - options, - new LspFormattingCodeDocumentProvider()); + options); return context; } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestRazorFormattingService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestRazorFormattingService.cs index 217024e2dca..65b33247361 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestRazorFormattingService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestRazorFormattingService.cs @@ -38,9 +38,8 @@ public static async Task<IRazorFormattingService> CreateWithFullSupportAsync( await optionsMonitor.UpdateAsync(CancellationToken.None); } - var formattingCodeDocumentProvider = new LspFormattingCodeDocumentProvider(); var hostServicesProvider = new DefaultHostServicesProvider(); - return new RazorFormattingService(formattingCodeDocumentProvider, mappingService, hostServicesProvider, loggerFactory); + return new RazorFormattingService(mappingService, hostServicesProvider, loggerFactory); } }