Skip to content

Commit 52dfbd4

Browse files
authored
Merge pull request #7581 from dibarbet/open_source_generated_documents
Add a TextDocumentContentProvider for source-generated files
2 parents b58d85e + 6a17673 commit 52dfbd4

File tree

5 files changed

+56
-1
lines changed

5 files changed

+56
-1
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
- Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876)
55

66
# Latest
7+
* Update Roslyn to 4.13.0-1.24503.11 (PR: [#7618](https://github.com/dotnet/vscode-csharp/pull/7618))
8+
* LSP hover responses escape backticks within inline code (PR: [#75364](https://github.com/dotnet/roslyn/pull/75364))
9+
* Localize build host message output (PR: [#74910](https://github.com/dotnet/roslyn/pull/74910))
10+
* Log and report NFW when we fail to apply project system update (PR: [#75362](https://github.com/dotnet/roslyn/pull/75362))
11+
* Reduce allocations and UI thread CPU costs in WithDoNotCreateCreationPolicy (PR: [#75358](https://github.com/dotnet/roslyn/pull/75358))
12+
* Enable support for an LSP client to open source generated files (PR: [#75180](https://github.com/dotnet/roslyn/pull/75180))
13+
* Improve error reporting when reading bad metadata during EnC (PR: [#75304](https://github.com/dotnet/roslyn/pull/75304))
714
* Suppress recoverable errors from razor LSP (PR: [#7624](https://github.com/dotnet/vscode-csharp/pull/7624))
815
* NOTE: this can be re-enabled by setting `razor.languageServer.suppressLspErrorToasts = false`
916
* Update Roslyn to 4.13.0-1.24501.3 (PR: [#7618](https://github.com/dotnet/vscode-csharp/pull/7618))

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
}
3838
},
3939
"defaults": {
40-
"roslyn": "4.13.0-1.24501.3",
40+
"roslyn": "4.13.0-1.24503.11",
4141
"omniSharp": "1.39.11",
4242
"razor": "9.0.0-preview.24480.1",
4343
"razorOmnisharp": "7.0.0-preview.23363.1",

src/lsptoolshost/roslynLanguageServer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import {
7474
showErrorMessage,
7575
showInformationMessage,
7676
} from '../shared/observers/utils/showMessage';
77+
import { registerSourceGeneratedFilesContentProvider } from './sourceGeneratedFilesContentProvider';
7778

7879
let _channel: vscode.OutputChannel;
7980
let _traceChannel: vscode.OutputChannel;
@@ -1068,6 +1069,8 @@ export async function activateRoslynLanguageServer(
10681069

10691070
registerRestoreCommands(context, languageServer, dotnetChannel);
10701071

1072+
registerSourceGeneratedFilesContentProvider(context, languageServer);
1073+
10711074
context.subscriptions.push(registerLanguageServerOptionChanges(optionObservable));
10721075

10731076
return languageServer;

src/lsptoolshost/roslynProtocol.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,14 @@ export interface CopilotRelatedDocumentsReport {
230230
_vs_file_paths?: string[];
231231
}
232232

233+
export interface SourceGeneratorGetRequestParams {
234+
textDocument: lsp.TextDocumentIdentifier;
235+
}
236+
237+
export interface SourceGeneratedDocumentText {
238+
text: string;
239+
}
240+
233241
export namespace WorkspaceDebugConfigurationRequest {
234242
export const method = 'workspace/debugConfiguration';
235243
export const messageDirection: lsp.MessageDirection = lsp.MessageDirection.clientToServer;
@@ -351,3 +359,9 @@ export namespace CopilotRelatedDocumentsRequest {
351359
void
352360
>(method);
353361
}
362+
363+
export namespace SourceGeneratorGetTextRequest {
364+
export const method = 'sourceGeneratedDocument/_roslyn_getText';
365+
export const messageDirection: lsp.MessageDirection = lsp.MessageDirection.clientToServer;
366+
export const type = new lsp.RequestType<SourceGeneratorGetRequestParams, SourceGeneratedDocumentText, void>(method);
367+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import * as vscode from 'vscode';
7+
import * as RoslynProtocol from './roslynProtocol';
8+
import { RoslynLanguageServer } from './roslynLanguageServer';
9+
import { UriConverter } from './uriConverter';
10+
import * as lsp from 'vscode-languageserver-protocol';
11+
12+
export function registerSourceGeneratedFilesContentProvider(
13+
context: vscode.ExtensionContext,
14+
languageServer: RoslynLanguageServer
15+
) {
16+
context.subscriptions.push(
17+
vscode.workspace.registerTextDocumentContentProvider(
18+
'roslyn-source-generated',
19+
new (class implements vscode.TextDocumentContentProvider {
20+
async provideTextDocumentContent(uri: vscode.Uri, token: vscode.CancellationToken): Promise<string> {
21+
const result = await languageServer.sendRequest(
22+
RoslynProtocol.SourceGeneratorGetTextRequest.type,
23+
{ textDocument: lsp.TextDocumentIdentifier.create(UriConverter.serialize(uri)) },
24+
token
25+
);
26+
return result.text;
27+
}
28+
})()
29+
)
30+
);
31+
}

0 commit comments

Comments
 (0)