Skip to content

Commit 5f3e9d6

Browse files
authored
Add cairo.showMemoryUsage command (#165)
1 parent b6e12e3 commit 5f3e9d6

File tree

4 files changed

+47
-1
lines changed

4 files changed

+47
-1
lines changed

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
"command": "cairo.viewSyntaxTree",
8686
"title": "View syntax tree of the current file content",
8787
"category": "Cairo"
88+
},
89+
{
90+
"command": "cairo.showMemoryUsage",
91+
"title": "Show current memory usage of Cairo Language Server",
92+
"category": "Cairo"
8893
}
8994
],
9095
"menus": {

src/cairols.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
registerMacroExpandProvider,
99
registerVfsProvider,
1010
registerViewAnalyzedCratesProvider,
11+
registeShowMemoryUsageProvider,
1112
} from "./textDocumentProviders";
1213

1314
import { executablesEqual, getLSExecutables, LSExecutable } from "./lsExecutable";
@@ -71,6 +72,7 @@ export async function setupLanguageServer(ctx: Context): Promise<SetupResult | u
7172

7273
registerVfsProvider(client, ctx);
7374
registerMacroExpandProvider(client, ctx);
75+
registeShowMemoryUsageProvider(client, ctx);
7476
registerViewAnalyzedCratesProvider(client, ctx);
7577

7678
ctx.extension.subscriptions.push(

src/lspRequests.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ export const expandMacro = new lc.RequestType<ExpandMacroRequest, ExpandMacroRes
99
"cairo/expandMacro",
1010
);
1111

12+
export const showMemoryUsage = new lc.RequestType0<unknown, void>("cairo/showMemoryUsage");
13+
1214
export interface ProvideVirtualFileRequest {
1315
uri: string;
1416
}

src/textDocumentProviders.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import * as lc from "vscode-languageclient/node";
22
import * as vscode from "vscode";
33
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";
511
import { AnsiDecorationProvider } from "./ansi";
612

713
export const registerVfsProvider = (client: lc.LanguageClient, ctx: Context) => {
@@ -56,6 +62,37 @@ export const registerMacroExpandProvider = (client: lc.LanguageClient, ctx: Cont
5662
);
5763
};
5864

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+
5996
export const registerViewAnalyzedCratesProvider = (client: lc.LanguageClient, ctx: Context) => {
6097
const uri = vscode.Uri.parse(
6198
"cairo-view-analyzed-crates://viewAnalyzedCrates/[ANALYZED_CRATES].md",

0 commit comments

Comments
 (0)