Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/src/main.ts')
-rw-r--r--editors/code/src/main.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index e76b657c1b..25f1e83d10 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -48,6 +48,30 @@ async function activateServer(ctx: Ctx): Promise<RustAnalyzerExtensionApi> {
ctx.pushExtCleanup(activateTaskProvider(ctx.config));
}
+ ctx.pushExtCleanup(
+ vscode.workspace.registerTextDocumentContentProvider(
+ "rust-analyzer-diagnostics-view",
+ new (class implements vscode.TextDocumentContentProvider {
+ async provideTextDocumentContent(uri: vscode.Uri): Promise<string> {
+ const diags = ctx.client?.diagnostics?.get(
+ vscode.Uri.parse(uri.fragment, true)
+ );
+ if (!diags) {
+ return "Unable to find original rustc diagnostic";
+ }
+
+ const diag = diags[parseInt(uri.query)];
+ if (!diag) {
+ return "Unable to find original rustc diagnostic";
+ }
+ const rendered = (diag as unknown as { data?: { rendered?: string } }).data
+ ?.rendered;
+ return rendered ?? "Unable to find original rustc diagnostic";
+ }
+ })()
+ )
+ );
+
vscode.workspace.onDidChangeWorkspaceFolders(
async (_) => ctx.onWorkspaceFolderChanges(),
null,