diff options
| author | Brad Neuman <brad.neuman@bedrockrobotics.com> | 2024-05-13 14:36:13 -0700 |
|---|---|---|
| committer | Brad Neuman <brad.neuman@bedrockrobotics.com> | 2024-05-13 14:36:13 -0700 |
| commit | 26dd5ac15c85ee24fe2e0dcd219466b88f2f5d7b (patch) | |
| tree | 8b7f25c3e85d2c34937262b3726937bd9c04a34a | |
| parent | e54bbae8c4c2af580b5721ad5ac151f2ad19293e (diff) | |
| download | rust-mode-26dd5ac15c85ee24fe2e0dcd219466b88f2f5d7b.tar.gz | |
Adds a customization to default to workspace or local crate.
Adds rust-locate-project-in-workspace custom variable, which controls whether or not to locate the workspace
project using `--workspace` (the default) or not.
In cases where there is only one create, this should make no difference.
The default setting should match the existing behavior.
Github issue #545
| -rw-r--r-- | rust-cargo.el | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/rust-cargo.el b/rust-cargo.el index bda23d8..613b861 100644 --- a/rust-cargo.el +++ b/rust-cargo.el @@ -19,6 +19,13 @@ :type 'boolean :group 'rust-mode) +(defcustom rust-locate-project-in-workspace t + "Whether to use `--workspace` with `cargo locate-project`. If t, + rust-mode will run commands for the entire workspace. If nil, + rust will search for the Cargo.toml in the local crated" + :type 'boolean + :group 'rust-mode) + (defcustom rust-cargo-default-arguments "" "Default arguments when running common cargo commands." :type 'string @@ -42,7 +49,11 @@ (setq-local process-environment env) ;; Set PATH so we can find cargo. (setq-local exec-path path) - (let ((ret (process-file rust-cargo-bin nil (list (current-buffer) nil) nil "locate-project" "--workspace"))) + (let ((ret + (let ((args (list rust-cargo-bin nil (list (current-buffer) nil) nil "locate-project"))) + (when rust-locate-project-in-workspace + (setq args (append args (list "--workspace")))) + (apply #'process-file args)))) (when (/= ret 0) (error "`cargo locate-project' returned %s status: %s" ret (buffer-string))) (goto-char 0) |
