diff --git a/vscode-cairo/src/extension.ts b/vscode-cairo/src/extension.ts index 24502f08267..a0fac1b96f3 100644 --- a/vscode-cairo/src/extension.ts +++ b/vscode-cairo/src/extension.ts @@ -17,7 +17,7 @@ export async function activate(extensionContext: vscode.ExtensionContext) { } if (ctx.config.get("enableStatusBar")) { - await setupStatusBar(ctx); + await setupStatusBar(ctx, client); } else { ctx.log.warn("status bar is disabled"); ctx.log.warn("note: set `cairo1.enableStatusBar` to `true` to enable it"); diff --git a/vscode-cairo/src/statusBar.ts b/vscode-cairo/src/statusBar.ts index 984f10b1405..8634591a55f 100644 --- a/vscode-cairo/src/statusBar.ts +++ b/vscode-cairo/src/statusBar.ts @@ -1,8 +1,11 @@ import * as vscode from "vscode"; import { Context } from "./context"; import { Scarb } from "./scarb"; +import * as lc from "vscode-languageclient/node"; -export async function setupStatusBar(ctx: Context) { +const CAIRO_STATUS_BAR_COMMAND = "cairo1.statusBar.clicked"; + +export async function setupStatusBar(ctx: Context, client?: lc.LanguageClient) { ctx.extension.subscriptions.push( vscode.workspace.onDidChangeConfiguration((e) => { if (e.affectsConfiguration("cairo1.enableStatusBar")) { @@ -11,6 +14,17 @@ export async function setupStatusBar(ctx: Context) { }), ); + ctx.extension.subscriptions.push( + vscode.commands.registerCommand(CAIRO_STATUS_BAR_COMMAND, () => { + if (client) { + client.outputChannel.show(); + } else { + vscode.window.showWarningMessage("Cairo Language Server is not active"); + } + }), + ); + ctx.statusBarItem.command = CAIRO_STATUS_BAR_COMMAND; + updateStatusBar(ctx); }