From 4e20c0dce617a9d0fbdd5c03e6c14f4735a7cfea Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Tue, 31 Oct 2023 11:45:22 +0100 Subject: [PATCH] Adding custom actions and linking the documentation --- .../src/RascalExtension.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/rascal-vscode-extension/src/RascalExtension.ts b/rascal-vscode-extension/src/RascalExtension.ts index b45e989a8..e129208b1 100644 --- a/rascal-vscode-extension/src/RascalExtension.ts +++ b/rascal-vscode-extension/src/RascalExtension.ts @@ -119,7 +119,7 @@ export class RascalExtension implements vscode.Disposable { if (uri) { const [error, detail] = await this.verifyProjectSetup(uri); if (error !== '') { - await this.reportTerminalStartError(error, detail); + await this.reportTerminalStartError(error, detail, {showOutput : false}); return; } } @@ -141,12 +141,23 @@ export class RascalExtension implements vscode.Disposable { progress.report({increment: 25, message: "Finished creating terminal"}); }); } catch (err) { - await this.reportTerminalStartError("Failed to start the Rascal REPL, check Rascal Output Window", "" + err); + await this.reportTerminalStartError("Failed to start the Rascal REPL, check Rascal Output Window", "" + err, { showOutput: true}); } } - private reportTerminalStartError(msg: string, detail: string = "", modal = true) { - return vscode.window.showErrorMessage(msg, {detail : detail, modal: modal}); + private async reportTerminalStartError(msg: string, detail: string = "", config : {modal?: boolean, showOutput?: boolean}) { + const options = ["View Documentation"]; + if (config.showOutput) { + options.push("Show Rascal Output Window"); + } + options.push("Ok"); + const selected = await vscode.window.showErrorMessage(msg, {detail : detail, modal: config.modal ?? true}, ...options); + if (selected === "View Documentation") { + await vscode.env.openExternal(vscode.Uri.parse("https://www.rascal-mpl.org/docs/GettingStarted/CreateNewProject/")); + } + if (selected === "Show Rascal Output Window") { + await vscode.commands.executeCommand("workbench.action.output.show.extension-output-usethesource.rascalmpl-#1-Rascal MPL Language Server"); + } } async fileExists(f: vscode.Uri) {