aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/package.json4
-rw-r--r--editors/code/src/debug.ts12
-rw-r--r--editors/code/src/lsp_ext.ts17
-rw-r--r--editors/code/src/run.ts21
4 files changed, 31 insertions, 23 deletions
diff --git a/editors/code/package.json b/editors/code/package.json
index 75dbafc05..d8f4287fd 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -238,7 +238,7 @@
238 }, 238 },
239 "rust-analyzer.cargo.allFeatures": { 239 "rust-analyzer.cargo.allFeatures": {
240 "type": "boolean", 240 "type": "boolean",
241 "default": true, 241 "default": false,
242 "description": "Activate all available features" 242 "description": "Activate all available features"
243 }, 243 },
244 "rust-analyzer.cargo.features": { 244 "rust-analyzer.cargo.features": {
@@ -319,7 +319,7 @@
319 }, 319 },
320 "rust-analyzer.checkOnSave.allFeatures": { 320 "rust-analyzer.checkOnSave.allFeatures": {
321 "type": "boolean", 321 "type": "boolean",
322 "default": true, 322 "default": false,
323 "markdownDescription": "Check with all features (will be passed as `--all-features`)" 323 "markdownDescription": "Check with all features (will be passed as `--all-features`)"
324 }, 324 },
325 "rust-analyzer.inlayHints.enable": { 325 "rust-analyzer.inlayHints.enable": {
diff --git a/editors/code/src/debug.ts b/editors/code/src/debug.ts
index 1e421d407..a0c9b3ab2 100644
--- a/editors/code/src/debug.ts
+++ b/editors/code/src/debug.ts
@@ -114,8 +114,8 @@ async function getDebugConfiguration(ctx: Ctx, runnable: ra.Runnable): Promise<v
114} 114}
115 115
116async function getDebugExecutable(runnable: ra.Runnable): Promise<string> { 116async function getDebugExecutable(runnable: ra.Runnable): Promise<string> {
117 const cargo = new Cargo(runnable.cwd || '.', debugOutput); 117 const cargo = new Cargo(runnable.args.workspaceRoot || '.', debugOutput);
118 const executable = await cargo.executableFromArgs(runnable.args); 118 const executable = await cargo.executableFromArgs(runnable.args.cargoArgs);
119 119
120 // if we are here, there were no compilation errors. 120 // if we are here, there were no compilation errors.
121 return executable; 121 return executable;
@@ -127,8 +127,8 @@ function getLldbDebugConfig(runnable: ra.Runnable, executable: string, sourceFil
127 request: "launch", 127 request: "launch",
128 name: runnable.label, 128 name: runnable.label,
129 program: executable, 129 program: executable,
130 args: runnable.extraArgs, 130 args: runnable.args.executableArgs,
131 cwd: runnable.cwd, 131 cwd: runnable.args.workspaceRoot,
132 sourceMap: sourceFileMap, 132 sourceMap: sourceFileMap,
133 sourceLanguages: ["rust"] 133 sourceLanguages: ["rust"]
134 }; 134 };
@@ -140,8 +140,8 @@ function getCppvsDebugConfig(runnable: ra.Runnable, executable: string, sourceFi
140 request: "launch", 140 request: "launch",
141 name: runnable.label, 141 name: runnable.label,
142 program: executable, 142 program: executable,
143 args: runnable.extraArgs, 143 args: runnable.args.executableArgs,
144 cwd: runnable.cwd, 144 cwd: runnable.args.workspaceRoot,
145 sourceFileMap: sourceFileMap, 145 sourceFileMap: sourceFileMap,
146 }; 146 };
147} 147}
diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts
index f881bae47..35d73ce31 100644
--- a/editors/code/src/lsp_ext.ts
+++ b/editors/code/src/lsp_ext.ts
@@ -53,18 +53,17 @@ export interface RunnablesParams {
53 position: lc.Position | null; 53 position: lc.Position | null;
54} 54}
55 55
56export type RunnableKind = "cargo" | "rustc" | "rustup";
57
58export interface Runnable { 56export interface Runnable {
59 range: lc.Range;
60 label: string; 57 label: string;
61 kind: RunnableKind; 58 location?: lc.LocationLink;
62 args: string[]; 59 kind: "cargo";
63 extraArgs: string[]; 60 args: {
64 env: { [key: string]: string }; 61 workspaceRoot?: string;
65 cwd: string | null; 62 cargoArgs: string[];
63 executableArgs: string[];
64 };
66} 65}
67export const runnables = new lc.RequestType<RunnablesParams, Runnable[], void>("rust-analyzer/runnables"); 66export const runnables = new lc.RequestType<RunnablesParams, Runnable[], void>("experimental/runnables");
68 67
69export type InlayHint = InlayHint.TypeHint | InlayHint.ParamHint | InlayHint.ChainingHint; 68export type InlayHint = InlayHint.TypeHint | InlayHint.ParamHint | InlayHint.ChainingHint;
70 69
diff --git a/editors/code/src/run.ts b/editors/code/src/run.ts
index 5fc4f8e41..5c790741f 100644
--- a/editors/code/src/run.ts
+++ b/editors/code/src/run.ts
@@ -103,18 +103,27 @@ interface CargoTaskDefinition extends vscode.TaskDefinition {
103 env?: { [key: string]: string }; 103 env?: { [key: string]: string };
104} 104}
105 105
106export function createTask(spec: ra.Runnable): vscode.Task { 106export function createTask(runnable: ra.Runnable): vscode.Task {
107 const TASK_SOURCE = 'Rust'; 107 const TASK_SOURCE = 'Rust';
108
109 let command;
110 switch (runnable.kind) {
111 case "cargo": command = toolchain.getPathForExecutable("cargo");
112 }
113 const args = runnable.args.cargoArgs;
114 if (runnable.args.executableArgs.length > 0) {
115 args.push('--', ...runnable.args.executableArgs);
116 }
108 const definition: CargoTaskDefinition = { 117 const definition: CargoTaskDefinition = {
109 type: 'cargo', 118 type: 'cargo',
110 label: spec.label, 119 label: runnable.label,
111 command: toolchain.getPathForExecutable(spec.kind), 120 command,
112 args: spec.extraArgs ? [...spec.args, '--', ...spec.extraArgs] : spec.args, 121 args,
113 env: Object.assign({}, process.env, spec.env), 122 env: Object.assign({}, process.env as { [key: string]: string }, { "RUST_BACKTRACE": "short" }),
114 }; 123 };
115 124
116 const execOption: vscode.ShellExecutionOptions = { 125 const execOption: vscode.ShellExecutionOptions = {
117 cwd: spec.cwd || '.', 126 cwd: runnable.args.workspaceRoot || '.',
118 env: definition.env, 127 env: definition.env,
119 }; 128 };
120 const exec = new vscode.ShellExecution( 129 const exec = new vscode.ShellExecution(