mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-12 21:28:51 +00:00
parent
20f3792d10
commit
0517247bbc
1 changed files with 22 additions and 16 deletions
|
@ -58,21 +58,15 @@ class CargoTaskProvider implements vscode.TaskProvider {
|
|||
|
||||
if (definition.type === TASK_TYPE && definition.command) {
|
||||
const args = [definition.command].concat(definition.args ?? []);
|
||||
if (isWorkspaceFolder(task.scope)) {
|
||||
return await buildCargoTask(task.scope, definition, task.name, args, this.config.cargoRunner);
|
||||
}
|
||||
return await buildCargoTask(task.scope, definition, task.name, args, this.config.cargoRunner);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function isWorkspaceFolder(scope?: any): scope is vscode.WorkspaceFolder {
|
||||
return (scope as vscode.WorkspaceFolder).name !== undefined;
|
||||
}
|
||||
|
||||
export async function buildCargoTask(
|
||||
target: vscode.WorkspaceFolder,
|
||||
scope: vscode.WorkspaceFolder | vscode.TaskScope | undefined,
|
||||
definition: CargoTaskDefinition,
|
||||
name: string,
|
||||
args: string[],
|
||||
|
@ -115,14 +109,26 @@ export async function buildCargoTask(
|
|||
exec = new vscode.ProcessExecution(fullCommand[0], fullCommand.slice(1), definition);
|
||||
}
|
||||
|
||||
return new vscode.Task(
|
||||
definition,
|
||||
target,
|
||||
name,
|
||||
TASK_SOURCE,
|
||||
exec,
|
||||
['$rustc']
|
||||
);
|
||||
if (scope) {
|
||||
return new vscode.Task(
|
||||
definition,
|
||||
scope,
|
||||
name,
|
||||
TASK_SOURCE,
|
||||
exec,
|
||||
['$rustc']
|
||||
);
|
||||
}
|
||||
else {
|
||||
// if the original task did not provide a scope retain the original lack of scope
|
||||
return new vscode.Task(
|
||||
definition,
|
||||
name,
|
||||
TASK_SOURCE,
|
||||
exec,
|
||||
['$rustc']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function activateTaskProvider(config: Config): vscode.Disposable {
|
||||
|
|
Loading…
Reference in a new issue