|
1 | 1 | import * as lc from "vscode-languageclient/node"; |
2 | 2 | import * as vscode from "vscode"; |
3 | 3 | import { Context } from "./context"; |
4 | | -import { expandMacro, viewSyntaxTree, vfsProvide, viewAnalyzedCrates } from "./lspRequests"; |
| 4 | +import { |
| 5 | + expandMacro, |
| 6 | + viewSyntaxTree, |
| 7 | + vfsProvide, |
| 8 | + viewAnalyzedCrates, |
| 9 | + showMemoryUsage, |
| 10 | +} from "./lspRequests"; |
5 | 11 | import { AnsiDecorationProvider } from "./ansi"; |
6 | 12 |
|
7 | 13 | export const registerVfsProvider = (client: lc.LanguageClient, ctx: Context) => { |
@@ -56,6 +62,37 @@ export const registerMacroExpandProvider = (client: lc.LanguageClient, ctx: Cont |
56 | 62 | ); |
57 | 63 | }; |
58 | 64 |
|
| 65 | +export const registeShowMemoryUsageProvider = (client: lc.LanguageClient, ctx: Context) => { |
| 66 | + const uri = vscode.Uri.parse("show-memory-usage://memory-usage"); |
| 67 | + const eventEmitter = new vscode.EventEmitter<vscode.Uri>(); |
| 68 | + |
| 69 | + const tdcp: vscode.TextDocumentContentProvider = { |
| 70 | + async provideTextDocumentContent(): Promise<string> { |
| 71 | + const expanded = await client.sendRequest(showMemoryUsage); |
| 72 | + |
| 73 | + return ( |
| 74 | + JSON.stringify(expanded, null, 4) ?? |
| 75 | + "Fetching memory usage failed. This may be caused by LS version that does not support this" |
| 76 | + ); |
| 77 | + }, |
| 78 | + onDidChange: eventEmitter.event, |
| 79 | + }; |
| 80 | + |
| 81 | + ctx.extension.subscriptions.push( |
| 82 | + vscode.workspace.registerTextDocumentContentProvider("show-memory-usage", tdcp), |
| 83 | + ); |
| 84 | + |
| 85 | + ctx.extension.subscriptions.push( |
| 86 | + vscode.commands.registerCommand("cairo.showMemoryUsage", async () => { |
| 87 | + const document = await vscode.workspace.openTextDocument(uri); |
| 88 | + |
| 89 | + eventEmitter.fire(uri); |
| 90 | + |
| 91 | + return vscode.window.showTextDocument(document, vscode.ViewColumn.Two, true); |
| 92 | + }), |
| 93 | + ); |
| 94 | +}; |
| 95 | + |
59 | 96 | export const registerViewAnalyzedCratesProvider = (client: lc.LanguageClient, ctx: Context) => { |
60 | 97 | const uri = vscode.Uri.parse( |
61 | 98 | "cairo-view-analyzed-crates://viewAnalyzedCrates/[ANALYZED_CRATES].md", |
|
0 commit comments