aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-02-10 11:38:56 +0000
committerGitHub <[email protected]>2021-02-10 11:38:56 +0000
commit82a1b91f205ac9c3d397b2bea033639f5df9e6b6 (patch)
tree4683820d7a28c6bc991992a8c1978c3bf87b1b61 /editors/code/src
parent5e39d7a68032ba40d3ed76d41d0f01ad628f5c95 (diff)
parent97166e2ad9307b3f4cca33d2c82149be9eb5a633 (diff)
Merge #7625
7625: Add **Copy Run Command Line** command for vscode r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/commands.ts14
-rw-r--r--editors/code/src/main.ts1
-rw-r--r--editors/code/src/run.ts19
3 files changed, 26 insertions, 8 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts
index 3729a71de..283b9a160 100644
--- a/editors/code/src/commands.ts
+++ b/editors/code/src/commands.ts
@@ -5,7 +5,7 @@ import * as ra from './lsp_ext';
5import { Ctx, Cmd } from './ctx'; 5import { Ctx, Cmd } from './ctx';
6import { applySnippetWorkspaceEdit, applySnippetTextEdits } from './snippets'; 6import { applySnippetWorkspaceEdit, applySnippetTextEdits } from './snippets';
7import { spawnSync } from 'child_process'; 7import { spawnSync } from 'child_process';
8import { RunnableQuickPick, selectRunnable, createTask } from './run'; 8import { RunnableQuickPick, selectRunnable, createTask, createArgs } from './run';
9import { AstInspector } from './ast_inspector'; 9import { AstInspector } from './ast_inspector';
10import { isRustDocument, sleep, isRustEditor } from './util'; 10import { isRustDocument, sleep, isRustEditor } from './util';
11import { startDebugSession, makeDebugConfig } from './debug'; 11import { startDebugSession, makeDebugConfig } from './debug';
@@ -572,6 +572,18 @@ export function runSingle(ctx: Ctx): Cmd {
572 }; 572 };
573} 573}
574 574
575export function copyRunCommandLine(ctx: Ctx) {
576 let prevRunnable: RunnableQuickPick | undefined;
577 return async () => {
578 const item = await selectRunnable(ctx, prevRunnable);
579 if (!item) return;
580 const args = createArgs(item.runnable);
581 const commandLine = ["cargo", ...args].join(" ");
582 await vscode.env.clipboard.writeText(commandLine);
583 await vscode.window.showInformationMessage("Cargo invocation copied to the clipboard.");
584 };
585}
586
575export function debug(ctx: Ctx): Cmd { 587export function debug(ctx: Ctx): Cmd {
576 let prevDebuggee: RunnableQuickPick | undefined; 588 let prevDebuggee: RunnableQuickPick | undefined;
577 589
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 5c0b0be26..d18d6c8a9 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -108,6 +108,7 @@ async function tryActivate(context: vscode.ExtensionContext) {
108 ctx.registerCommand('viewHir', commands.viewHir); 108 ctx.registerCommand('viewHir', commands.viewHir);
109 ctx.registerCommand('expandMacro', commands.expandMacro); 109 ctx.registerCommand('expandMacro', commands.expandMacro);
110 ctx.registerCommand('run', commands.run); 110 ctx.registerCommand('run', commands.run);
111 ctx.registerCommand('copyRunCommandLine', commands.copyRunCommandLine);
111 ctx.registerCommand('debug', commands.debug); 112 ctx.registerCommand('debug', commands.debug);
112 ctx.registerCommand('newDebugConfig', commands.newDebugConfig); 113 ctx.registerCommand('newDebugConfig', commands.newDebugConfig);
113 ctx.registerCommand('openDocs', commands.openDocs); 114 ctx.registerCommand('openDocs', commands.openDocs);
diff --git a/editors/code/src/run.ts b/editors/code/src/run.ts
index 7ac7ca3cb..138e3f686 100644
--- a/editors/code/src/run.ts
+++ b/editors/code/src/run.ts
@@ -128,13 +128,7 @@ export async function createTask(runnable: ra.Runnable, config: Config): Promise
128 throw `Unexpected runnable kind: ${runnable.kind}`; 128 throw `Unexpected runnable kind: ${runnable.kind}`;
129 } 129 }
130 130
131 const args = [...runnable.args.cargoArgs]; // should be a copy! 131 const args = createArgs(runnable);
132 if (runnable.args.cargoExtraArgs) {
133 args.push(...runnable.args.cargoExtraArgs); // Append user-specified cargo options.
134 }
135 if (runnable.args.executableArgs.length > 0) {
136 args.push('--', ...runnable.args.executableArgs);
137 }
138 132
139 const definition: tasks.CargoTaskDefinition = { 133 const definition: tasks.CargoTaskDefinition = {
140 type: tasks.TASK_TYPE, 134 type: tasks.TASK_TYPE,
@@ -152,3 +146,14 @@ export async function createTask(runnable: ra.Runnable, config: Config): Promise
152 146
153 return cargoTask; 147 return cargoTask;
154} 148}
149
150export function createArgs(runnable: ra.Runnable): string[] {
151 const args = [...runnable.args.cargoArgs]; // should be a copy!
152 if (runnable.args.cargoExtraArgs) {
153 args.push(...runnable.args.cargoExtraArgs); // Append user-specified cargo options.
154 }
155 if (runnable.args.executableArgs.length > 0) {
156 args.push('--', ...runnable.args.executableArgs);
157 }
158 return args;
159}