summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Moreau <nathan.moreau@m4x.org>2020-07-08 11:03:54 +0200
committerNathan Moreau <nathan.moreau@m4x.org>2020-07-09 09:23:05 +0200
commitca7d99c6fd90fc1e636aa9d4020a2f077786a0c3 (patch)
tree3393b06691d30c85ff985f03153cf66682446c3c
parentf9e36188814d67d88ba7738a2250811afc2f85a7 (diff)
downloadrust-mode-ca7d99c6fd90fc1e636aa9d4020a2f077786a0c3.tar.gz
Set default directory when compiling.
-rw-r--r--rust-mode.el17
1 files changed, 13 insertions, 4 deletions
diff --git a/rust-mode.el b/rust-mode.el
index 2d63dc5..2c89b97 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -1901,20 +1901,29 @@ Return the created process."
(interactive)
(setq-local rust-format-on-save nil))
+(defun rust--compile (format-string &rest args)
+ (when (null rust-buffer-project)
+ (rust-update-buffer-project))
+ (let ((default-directory
+ (or (and rust-buffer-project
+ (file-name-directory rust-buffer-project))
+ default-directory)))
+ (compile (apply #'format format-string args))))
+
(defun rust-compile ()
"Compile using `cargo build`"
(interactive)
- (compile (format "%s build" rust-cargo-bin)))
+ (rust--compile "%s build" rust-cargo-bin))
(defun rust-run ()
"Run using `cargo run`"
(interactive)
- (compile (format "%s run" rust-cargo-bin)))
+ (rust--compile "%s run" rust-cargo-bin))
(defun rust-test ()
"Test using `cargo test`"
(interactive)
- (compile (format "%s test" rust-cargo-bin)))
+ (rust--compile "%s test" rust-cargo-bin))
;;; Hooks
@@ -2072,7 +2081,7 @@ visit the new file."
;; set `compile-command' temporarily so `compile' doesn't
;; clobber the existing value
(compile-command (mapconcat #'shell-quote-argument args " ")))
- (compile compile-command)))
+ (rust--compile compile-command)))
;;; Utilities