Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/handlers/request.rs7
-rw-r--r--crates/rust-analyzer/src/lsp/ext.rs4
-rw-r--r--crates/rust-analyzer/src/lsp/to_proto.rs2
-rw-r--r--crates/rust-analyzer/src/target_spec.rs4
-rw-r--r--crates/rust-analyzer/tests/slow-tests/main.rs7
-rw-r--r--docs/dev/lsp-extensions.md11
-rw-r--r--editors/code/src/lsp_ext.ts17
-rw-r--r--editors/code/src/run.ts3
-rw-r--r--editors/code/tests/unit/runnable_env.test.ts2
9 files changed, 19 insertions, 38 deletions
diff --git a/crates/rust-analyzer/src/handlers/request.rs b/crates/rust-analyzer/src/handlers/request.rs
index 7e0db8edd8..0cc70ab86a 100644
--- a/crates/rust-analyzer/src/handlers/request.rs
+++ b/crates/rust-analyzer/src/handlers/request.rs
@@ -874,6 +874,7 @@ pub(crate) fn handle_runnables(
if all_targets {
cargo_args.push("--all-targets".to_owned());
}
+ cargo_args.extend(config.cargo_extra_args.iter().cloned());
res.push(lsp_ext::Runnable {
label: format!(
"cargo {cmd} -p {}{all_targets}",
@@ -887,7 +888,6 @@ pub(crate) fn handle_runnables(
cwd: cwd.into(),
override_cargo: config.override_cargo.clone(),
cargo_args,
- cargo_extra_args: config.cargo_extra_args.clone(),
executable_args: Vec::new(),
environment: Default::default(),
}),
@@ -897,6 +897,8 @@ pub(crate) fn handle_runnables(
Some(TargetSpec::ProjectJson(_)) => {}
None => {
if !snap.config.linked_or_discovered_projects().is_empty() {
+ let mut cargo_args = vec!["check".to_owned(), "--workspace".to_owned()];
+ cargo_args.extend(config.cargo_extra_args.iter().cloned());
res.push(lsp_ext::Runnable {
label: "cargo check --workspace".to_owned(),
location: None,
@@ -905,8 +907,7 @@ pub(crate) fn handle_runnables(
workspace_root: None,
cwd: ".".into(),
override_cargo: config.override_cargo,
- cargo_args: vec!["check".to_owned(), "--workspace".to_owned()],
- cargo_extra_args: config.cargo_extra_args,
+ cargo_args,
executable_args: Vec::new(),
environment: Default::default(),
}),
diff --git a/crates/rust-analyzer/src/lsp/ext.rs b/crates/rust-analyzer/src/lsp/ext.rs
index 3766e3f46a..f1d08c25d8 100644
--- a/crates/rust-analyzer/src/lsp/ext.rs
+++ b/crates/rust-analyzer/src/lsp/ext.rs
@@ -460,6 +460,7 @@ pub enum RunnableKind {
#[derive(Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct CargoRunnableArgs {
+ #[serde(skip_serializing_if = "FxHashMap::is_empty")]
pub environment: FxHashMap<String, String>,
pub cwd: Utf8PathBuf,
/// Command to be executed instead of cargo
@@ -468,8 +469,6 @@ pub struct CargoRunnableArgs {
pub workspace_root: Option<Utf8PathBuf>,
// command, --package and --lib stuff
pub cargo_args: Vec<String>,
- // user-specified additional cargo args, like `--release`.
- pub cargo_extra_args: Vec<String>,
// stuff after --
pub executable_args: Vec<String>,
}
@@ -477,6 +476,7 @@ pub struct CargoRunnableArgs {
#[derive(Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ShellRunnableArgs {
+ #[serde(skip_serializing_if = "FxHashMap::is_empty")]
pub environment: FxHashMap<String, String>,
pub cwd: Utf8PathBuf,
pub program: String,
diff --git a/crates/rust-analyzer/src/lsp/to_proto.rs b/crates/rust-analyzer/src/lsp/to_proto.rs
index fe65d1fc4f..2222a75628 100644
--- a/crates/rust-analyzer/src/lsp/to_proto.rs
+++ b/crates/rust-analyzer/src/lsp/to_proto.rs
@@ -1391,7 +1391,6 @@ pub(crate) fn runnable(
override_cargo: config.override_cargo,
cargo_args,
cwd: cwd.into(),
- cargo_extra_args: config.cargo_extra_args,
executable_args,
environment: Default::default(),
}),
@@ -1435,7 +1434,6 @@ pub(crate) fn runnable(
override_cargo: config.override_cargo,
cargo_args,
cwd: Utf8PathBuf::from("."),
- cargo_extra_args: config.cargo_extra_args,
executable_args,
environment: Default::default(),
}),
diff --git a/crates/rust-analyzer/src/target_spec.rs b/crates/rust-analyzer/src/target_spec.rs
index 6145f7e05f..863ff06439 100644
--- a/crates/rust-analyzer/src/target_spec.rs
+++ b/crates/rust-analyzer/src/target_spec.rs
@@ -110,7 +110,8 @@ impl CargoTargetSpec {
kind: &RunnableKind,
cfg: &Option<CfgExpr>,
) -> (Vec<String>, Vec<String>) {
- let extra_test_binary_args = snap.config.runnables().extra_test_binary_args;
+ let config = snap.config.runnables();
+ let extra_test_binary_args = config.extra_test_binary_args;
let mut cargo_args = Vec::new();
let mut executable_args = Vec::new();
@@ -196,6 +197,7 @@ impl CargoTargetSpec {
}
}
}
+ cargo_args.extend(config.cargo_extra_args.iter().cloned());
(cargo_args, executable_args)
}
diff --git a/crates/rust-analyzer/tests/slow-tests/main.rs b/crates/rust-analyzer/tests/slow-tests/main.rs
index 51b3076b46..c6236d8b4f 100644
--- a/crates/rust-analyzer/tests/slow-tests/main.rs
+++ b/crates/rust-analyzer/tests/slow-tests/main.rs
@@ -258,7 +258,6 @@ fn main() {}
"args": {
"cargoArgs": ["test", "--package", "foo", "--test", "spam"],
"executableArgs": ["test_eggs", "--exact", "--show-output"],
- "cargoExtraArgs": [],
"overrideCargo": null,
"cwd": server.path().join("foo"),
"workspaceRoot": server.path().join("foo")
@@ -289,7 +288,6 @@ fn main() {}
"--test",
"spam"
],
- "cargoExtraArgs": [],
"executableArgs": [
"",
"--show-output"
@@ -325,7 +323,6 @@ fn main() {}
"args": {
"cargoArgs": ["check", "--package", "foo", "--all-targets"],
"executableArgs": [],
- "cargoExtraArgs": [],
"overrideCargo": null,
"cwd": server.path().join("foo"),
"workspaceRoot": server.path().join("foo")
@@ -337,7 +334,6 @@ fn main() {}
"args": {
"cargoArgs": ["test", "--package", "foo", "--all-targets"],
"executableArgs": [],
- "cargoExtraArgs": [],
"overrideCargo": null,
"cwd": server.path().join("foo"),
"workspaceRoot": server.path().join("foo")
@@ -426,7 +422,6 @@ mod tests {
runnable,
"--all-targets"
],
- "cargoExtraArgs": [],
"executableArgs": []
},
},
@@ -489,7 +484,6 @@ fn otherpkg() {}
"mainpkg",
"--all-targets"
],
- "cargoExtraArgs": [],
"executableArgs": []
},
},
@@ -515,7 +509,6 @@ fn otherpkg() {}
"otherpkg",
"--all-targets"
],
- "cargoExtraArgs": [],
"executableArgs": []
},
},
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md
index 1cafcae7bb..a1470fc567 100644
--- a/docs/dev/lsp-extensions.md
+++ b/docs/dev/lsp-extensions.md
@@ -1,5 +1,5 @@
<!---
-lsp/ext.rs hash: 3605fab9e66e14a0
+lsp/ext.rs hash: a0867710490bf8da
If you need to change the above hash to make the test pass, please check if you
need to adjust this doc as well and ping this issue:
@@ -379,7 +379,7 @@ rust-analyzer supports two `kind`s of runnables, `"cargo"` and `"shell"`. The `a
/**
* Environment variables to set before running the command.
*/
- environment: Record<string, string>;
+ environment?: Record<string, string>;
/**
* The working directory to run the command in.
*/
@@ -393,11 +393,6 @@ rust-analyzer supports two `kind`s of runnables, `"cargo"` and `"shell"`. The `a
*/
cargoArgs: string[];
/**
- * Extra arguments to pass to cargo.
- */
- // What is the point of this when cargoArgs exists?
- cargoExtraArgs: string[];
- /**
* Arguments to pass to the executable, these will be passed to the command after a `--` argument.
*/
executableArgs: string[];
@@ -415,7 +410,7 @@ The args for `"shell"` look like this:
/**
* Environment variables to set before running the command.
*/
- environment: Record<string, string>;
+ environment?: Record<string, string>;
/**
* The working directory to run the command in.
*/
diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts
index fee023bbc9..e24893b250 100644
--- a/editors/code/src/lsp_ext.ts
+++ b/editors/code/src/lsp_ext.ts
@@ -239,7 +239,7 @@ export type CommonRunnableArgs = {
/**
* Environment variables to set before running the command.
*/
- environment: Record<string, string>;
+ environment?: Record<string, string>;
/**
* The working directory to run the command in.
*/
@@ -258,21 +258,18 @@ export type CargoRunnableArgs = {
*/
workspaceRoot?: string;
/**
- * The cargo command to run.
- */
- cargoArgs: string[];
- /**
- * Extra arguments to pass to cargo.
- */
- // What is the point of this when cargoArgs exists?
- cargoExtraArgs: string[];
- /**
* Arguments to pass to the executable, these will be passed to the command after a `--` argument.
*/
executableArgs: string[];
/**
+ * Arguments to pass to cargo.
+ */
+ cargoArgs: string[];
+ /**
* Command to execute instead of `cargo`.
*/
+ // This is supplied by the user via config. We could pull this through the client config in the
+ // extension directly, but that would prevent us from honoring the rust-analyzer.toml for it.
overrideCargo?: string;
} & CommonRunnableArgs;
diff --git a/editors/code/src/run.ts b/editors/code/src/run.ts
index 97dab8d9f6..849e915cca 100644
--- a/editors/code/src/run.ts
+++ b/editors/code/src/run.ts
@@ -165,9 +165,6 @@ export async function createTaskFromRunnable(
export function createCargoArgs(runnableArgs: ra.CargoRunnableArgs): string[] {
const args = [...runnableArgs.cargoArgs]; // should be a copy!
- if (runnableArgs.cargoExtraArgs) {
- args.push(...runnableArgs.cargoExtraArgs); // Append user-specified cargo options.
- }
if (runnableArgs.executableArgs.length > 0) {
args.push("--", ...runnableArgs.executableArgs);
}
diff --git a/editors/code/tests/unit/runnable_env.test.ts b/editors/code/tests/unit/runnable_env.test.ts
index 10b7f33652..1551393821 100644
--- a/editors/code/tests/unit/runnable_env.test.ts
+++ b/editors/code/tests/unit/runnable_env.test.ts
@@ -12,8 +12,6 @@ function makeRunnable(label: string): ra.Runnable {
cargoArgs: [],
cwd: ".",
executableArgs: [],
- cargoExtraArgs: [],
- environment: {},
},
};
}