summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Neuman <brad.neuman@bedrockrobotics.com>2024-05-13 14:36:13 -0700
committerBrad Neuman <brad.neuman@bedrockrobotics.com>2024-05-13 14:36:13 -0700
commit26dd5ac15c85ee24fe2e0dcd219466b88f2f5d7b (patch)
tree8b7f25c3e85d2c34937262b3726937bd9c04a34a
parente54bbae8c4c2af580b5721ad5ac151f2ad19293e (diff)
downloadrust-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.el13
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)