Skip to content

Commit a6d1ef1

Browse files
committed
Add new context menu item for running in terminal
This allows running programs via the device browser that are not part of the current project using the new interactiveTerminal feature as well.
1 parent 29937f1 commit a6d1ef1

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

package.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@
143143
"command": "ev3devBrowser.fileTreeItem.run",
144144
"title": "Run"
145145
},
146+
{
147+
"command": "ev3devBrowser.fileTreeItem.runInTerminal",
148+
"title": "Run in interactive terminal"
149+
},
146150
{
147151
"command": "ev3devBrowser.fileTreeItem.delete",
148152
"title": "Delete"
@@ -267,6 +271,10 @@
267271
"command": "ev3devBrowser.fileTreeItem.run",
268272
"when": "false"
269273
},
274+
{
275+
"command": "ev3devBrowser.fileTreeItem.runInTerminal",
276+
"when": "false"
277+
},
270278
{
271279
"command": "ev3devBrowser.fileTreeItem.delete",
272280
"when": "false"
@@ -328,6 +336,11 @@
328336
"when": "view == ev3devBrowser && viewItem == ev3devBrowser.file.executable",
329337
"group": "group@1"
330338
},
339+
{
340+
"command": "ev3devBrowser.fileTreeItem.runInTerminal",
341+
"when": "view == ev3devBrowser && viewItem == ev3devBrowser.file.executable",
342+
"group": "group@1"
343+
},
331344
{
332345
"command": "ev3devBrowser.fileTreeItem.delete",
333346
"when": "view == ev3devBrowser && viewItem == ev3devBrowser.file",

src/extension.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export function activate(context: vscode.ExtensionContext): void {
4747
vscode.commands.registerCommand('ev3devBrowser.deviceTreeItem.disconnect', d => d.disconnect()),
4848
vscode.commands.registerCommand('ev3devBrowser.deviceTreeItem.select', d => d.handleClick()),
4949
vscode.commands.registerCommand('ev3devBrowser.fileTreeItem.run', f => f.run()),
50+
vscode.commands.registerCommand('ev3devBrowser.fileTreeItem.runInTerminal', f => f.runInTerminal()),
5051
vscode.commands.registerCommand('ev3devBrowser.fileTreeItem.delete', f => f.delete()),
5152
vscode.commands.registerCommand('ev3devBrowser.fileTreeItem.showInfo', f => f.showInfo()),
5253
vscode.commands.registerCommand('ev3devBrowser.fileTreeItem.upload', f => f.upload()),
@@ -843,9 +844,18 @@ class File extends vscode.TreeItem {
843844
label: 'Run',
844845
description: this.path
845846
};
846-
vscode.window.showQuickPick([runItem]).then(value => {
847-
if (value === runItem) {
848-
this.run();
847+
const runInTerminalItem = <vscode.QuickPickItem>{
848+
label: 'Run in interactive terminal',
849+
description: this.path
850+
};
851+
vscode.window.showQuickPick([runItem, runInTerminalItem]).then(value => {
852+
switch (value) {
853+
case runItem:
854+
this.run();
855+
break;
856+
case runInTerminalItem:
857+
this.runInTerminal();
858+
break;
849859
}
850860
});
851861
}
@@ -857,7 +867,19 @@ class File extends vscode.TreeItem {
857867
name: 'Run',
858868
request: 'launch',
859869
program: this.path,
860-
download: false
870+
download: false,
871+
interactiveTerminal: false,
872+
});
873+
}
874+
875+
public runInTerminal(): void {
876+
vscode.debug.startDebugging(undefined, <vscode.DebugConfiguration>{
877+
type: 'ev3devBrowser',
878+
name: 'Run in interactive terminal',
879+
request: 'launch',
880+
program: this.path,
881+
download: false,
882+
interactiveTerminal: true,
861883
});
862884
}
863885

0 commit comments

Comments
 (0)