Skip to content

Commit 69b5815

Browse files
committed
In cohosting, grab formatting options in devenv before handling
1 parent 8f4daa6 commit 69b5815

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Formatting/CohostDocumentFormattingEndpoint.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Threading;
99
using System.Threading.Tasks;
1010
using Microsoft.CodeAnalysis;
11+
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
1112
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
1213
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Features;
1314
using Microsoft.CodeAnalysis.Razor.Cohost;
@@ -60,7 +61,13 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
6061
protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(DocumentFormattingParams request)
6162
=> request.TextDocument.ToRazorTextDocumentIdentifier();
6263

63-
protected override async Task<TextEdit[]?> HandleRequestAsync(DocumentFormattingParams request, TextDocument razorDocument, CancellationToken cancellationToken)
64+
protected override Task<TextEdit[]?> HandleRequestAsync(DocumentFormattingParams request, TextDocument razorDocument, CancellationToken cancellationToken)
65+
{
66+
var csharpSyntaxFormattingOptions = RazorCSharpFormattingInteractionService.GetRazorCSharpSyntaxFormattingOptions(razorDocument.Project.Solution.Services);
67+
return HandleRequestAsync(request, razorDocument, csharpSyntaxFormattingOptions, cancellationToken);
68+
}
69+
70+
private async Task<TextEdit[]?> HandleRequestAsync(DocumentFormattingParams request, TextDocument razorDocument, RazorCSharpSyntaxFormattingOptions csharpSyntaxFormattingOptions, CancellationToken cancellationToken)
6471
{
6572
_logger.LogDebug($"Getting Html formatting changes for {razorDocument.FilePath}");
6673
var htmlResult = await TryGetHtmlFormattingEditsAsync(request, razorDocument, cancellationToken).ConfigureAwait(false);
@@ -75,7 +82,10 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
7582
var sourceText = await razorDocument.GetTextAsync(cancellationToken).ConfigureAwait(false);
7683
var htmlChanges = htmlEdits.SelectAsArray(sourceText.GetTextChange);
7784

78-
var options = RazorFormattingOptions.From(request.Options, _clientSettingsManager.GetClientSettings().AdvancedSettings.CodeBlockBraceOnNextLine);
85+
var options = RazorFormattingOptions.From(
86+
request.Options,
87+
_clientSettingsManager.GetClientSettings().AdvancedSettings.CodeBlockBraceOnNextLine,
88+
csharpSyntaxFormattingOptions);
7989

8090
_logger.LogDebug($"Calling OOP with the {htmlChanges.Length} html edits, so it can fill in the rest");
8191
var remoteResult = await _remoteServiceInvoker.TryInvokeAsync<IRemoteFormattingService, ImmutableArray<TextChange>>(
@@ -114,8 +124,7 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
114124

115125
internal readonly struct TestAccessor(CohostDocumentFormattingEndpoint instance)
116126
{
117-
public Task<TextEdit[]?> HandleRequestAsync(DocumentFormattingParams request, TextDocument razorDocument, CancellationToken cancellationToken)
118-
=> instance.HandleRequestAsync(request, razorDocument, cancellationToken);
127+
public Task<TextEdit[]?> HandleRequestAsync(DocumentFormattingParams request, TextDocument razorDocument, RazorCSharpSyntaxFormattingOptions csharpSyntaxFormattingOptions, CancellationToken cancellationToken)
128+
=> instance.HandleRequestAsync(request, razorDocument, csharpSyntaxFormattingOptions, cancellationToken);
119129
}
120130
}
121-

src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Formatting/CohostOnTypeFormattingEndpoint.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Threading.Tasks;
1010
using Microsoft.AspNetCore.Razor.LanguageServer.Hosting;
1111
using Microsoft.CodeAnalysis;
12+
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
1213
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
1314
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Features;
1415
using Microsoft.CodeAnalysis.Razor.Cohost;
@@ -111,7 +112,8 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
111112
htmlChanges = htmlEdits.SelectAsArray(sourceText.GetTextChange);
112113
}
113114

114-
var options = RazorFormattingOptions.From(request.Options, clientSettings.AdvancedSettings.CodeBlockBraceOnNextLine);
115+
var csharpSyntaxFormattingOptions = RazorCSharpFormattingInteractionService.GetRazorCSharpSyntaxFormattingOptions(razorDocument.Project.Solution.Services);
116+
var options = RazorFormattingOptions.From(request.Options, clientSettings.AdvancedSettings.CodeBlockBraceOnNextLine, csharpSyntaxFormattingOptions);
115117

116118
_logger.LogDebug($"Calling OOP with the {htmlChanges.Length} html edits, so it can fill in the rest");
117119
var remoteResult = await _remoteServiceInvoker.TryInvokeAsync<IRemoteFormattingService, ImmutableArray<TextChange>>(
@@ -154,4 +156,3 @@ internal readonly struct TestAccessor(CohostOnTypeFormattingEndpoint instance)
154156
=> instance.HandleRequestAsync(request, razorDocument, cancellationToken);
155157
}
156158
}
157-

src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Formatting/CohostRangeFormattingEndpoint.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Threading;
99
using System.Threading.Tasks;
1010
using Microsoft.CodeAnalysis;
11+
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
1112
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
1213
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Features;
1314
using Microsoft.CodeAnalysis.Razor.Cohost;
@@ -83,7 +84,11 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
8384
var sourceText = await razorDocument.GetTextAsync(cancellationToken).ConfigureAwait(false);
8485
var htmlChanges = htmlEdits.SelectAsArray(sourceText.GetTextChange);
8586

86-
var options = RazorFormattingOptions.From(request.Options, _clientSettingsManager.GetClientSettings().AdvancedSettings.CodeBlockBraceOnNextLine);
87+
var csharpSyntaxFormattingOptions = RazorCSharpFormattingInteractionService.GetRazorCSharpSyntaxFormattingOptions(razorDocument.Project.Solution.Services);
88+
var options = RazorFormattingOptions.From(
89+
request.Options,
90+
_clientSettingsManager.GetClientSettings().AdvancedSettings.CodeBlockBraceOnNextLine,
91+
csharpSyntaxFormattingOptions);
8792

8893
_logger.LogDebug($"Calling OOP with the {htmlChanges.Length} html edits, so it can fill in the rest");
8994
var remoteResult = await _remoteServiceInvoker.TryInvokeAsync<IRemoteFormattingService, ImmutableArray<TextChange>>(
@@ -135,4 +140,3 @@ internal readonly struct TestAccessor(CohostRangeFormattingEndpoint instance)
135140
=> instance.HandleRequestAsync(request, razorDocument, cancellationToken);
136141
}
137142
}
138-

0 commit comments

Comments
 (0)