From d548449e556e02577d2b0ca8274f8d3dd9271e71 Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Mon, 4 Aug 2025 17:48:14 +0200 Subject: [PATCH 1/3] Add context menu to copy loc from explorer. --- rascal-vscode-extension/package.json | 10 ++++++++++ rascal-vscode-extension/src/RascalExtension.ts | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/rascal-vscode-extension/package.json b/rascal-vscode-extension/package.json index 57cbed1dd..8e1b8d98a 100644 --- a/rascal-vscode-extension/package.json +++ b/rascal-vscode-extension/package.json @@ -52,6 +52,11 @@ "command": "rascalmpl.startDebuggerForRepl", "title": "Start Rascal debugger for REPL", "icon": "$(debug)" + }, + { + "command": "rascalmpl.copySourceLocation", + "title": "Copy path as source location", + "icon": "$(copy)" } ], "menus": { @@ -67,6 +72,11 @@ "when": "view == rascalmpl-debugger-view && viewItem == 'canStartDebugging'", "group": "inline" } + ], + "explorer/context": [ + { + "command": "rascalmpl.copySourceLocation" + } ] }, "languages": [ diff --git a/rascal-vscode-extension/src/RascalExtension.ts b/rascal-vscode-extension/src/RascalExtension.ts index f3b5c41a7..f9ca72518 100644 --- a/rascal-vscode-extension/src/RascalExtension.ts +++ b/rascal-vscode-extension/src/RascalExtension.ts @@ -28,7 +28,7 @@ import * as os from 'os'; import * as path from 'path'; import * as vscode from 'vscode'; -import { integer } from'vscode-languageclient'; +import { integer, URI } from'vscode-languageclient'; import { checkForJVMUpdate, getJavaExecutable } from './auto-jvm/JavaLookup'; import { RascalLanguageServer } from './lsp/RascalLanguageServer'; import { LanguageParameter, ParameterizedLanguageServer } from './lsp/ParameterizedLanguageServer'; @@ -53,6 +53,7 @@ export class RascalExtension implements vscode.Disposable { this.registerTerminalCommand(); this.registerMainRun(); this.registerImportModule(); + this.registerCopySourceLocationCommand(); checkForJVMUpdate(); vscode.window.registerTreeDataProvider('rascalmpl-configuration-view', new RascalLibraryProvider(this.rascal.rascalClient)); @@ -105,6 +106,15 @@ export class RascalExtension implements vscode.Disposable { ); } + private registerCopySourceLocationCommand() { + this.context.subscriptions.push( + vscode.commands.registerCommand("rascalmpl.copySourceLocation", async (uri: URI) => { + const rascalUri = `|${decodeURIComponent(uri)}|`; + await vscode.env.clipboard.writeText(rascalUri); + }) + ); + } + private async startTerminal(uri: vscode.Uri | undefined, command?: string | undefined) { try { await vscode.window.withProgress({ From a544b1067c444f070daca8986ec00d85c910a5a4 Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Wed, 13 Aug 2025 18:30:41 +0200 Subject: [PATCH 2/3] Better name and location in context menu. --- rascal-vscode-extension/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rascal-vscode-extension/package.json b/rascal-vscode-extension/package.json index 8e1b8d98a..fac49f3fa 100644 --- a/rascal-vscode-extension/package.json +++ b/rascal-vscode-extension/package.json @@ -55,7 +55,7 @@ }, { "command": "rascalmpl.copySourceLocation", - "title": "Copy path as source location", + "title": "Copy Path as Rascal Location", "icon": "$(copy)" } ], @@ -75,7 +75,8 @@ ], "explorer/context": [ { - "command": "rascalmpl.copySourceLocation" + "command": "rascalmpl.copySourceLocation", + "group": "6_copypath@21" } ] }, From fa2345a6bf550884fb059c0ab703d01f6c075d86 Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Thu, 14 Aug 2025 09:22:11 +0200 Subject: [PATCH 3/3] Hide copy-as-loc in command palette. --- rascal-vscode-extension/package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rascal-vscode-extension/package.json b/rascal-vscode-extension/package.json index fac49f3fa..5935c4958 100644 --- a/rascal-vscode-extension/package.json +++ b/rascal-vscode-extension/package.json @@ -64,6 +64,10 @@ { "command": "rascalmpl.startDebuggerForRepl", "when": "false" + }, + { + "command": "rascalmpl.copySourceLocation", + "when": "false" } ], "view/item/context": [