[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/rust-mode 3e73d67022 1/2: use rust-buffer-crate to get rem
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/rust-mode 3e73d67022 1/2: use rust-buffer-crate to get remote crate path |
Date: |
Fri, 24 Jun 2022 08:59:16 -0400 (EDT) |
branch: elpa/rust-mode
commit 3e73d670220dd4045bfde60a03faa201777db204
Author: brotzeit <brotzeitmacher@gmail.com>
Commit: brotzeit <brotzeitmacher@gmail.com>
use rust-buffer-crate to get remote crate path
---
rust-cargo.el | 43 +++++++++++++++++++++++++------------------
1 file changed, 25 insertions(+), 18 deletions(-)
diff --git a/rust-cargo.el b/rust-cargo.el
index 9f6e611a36..090945a16d 100644
--- a/rust-cargo.el
+++ b/rust-cargo.el
@@ -30,24 +30,31 @@
(defun rust-buffer-project ()
"Get project root if possible."
- ;; Copy environment variables into the new buffer, since
- ;; with-temp-buffer will re-use the variables' defaults, even if
- ;; they have been changed in this variable using e.g. envrc-mode.
- ;; See https://github.com/purcell/envrc/issues/12.
- (let ((env process-environment)
- (path exec-path))
- (with-temp-buffer
- ;; Copy the entire environment just in case there's something we
- ;; don't know we need.
- (setq-local process-environment env)
- ;; Set PATH so we can find cargo.
- (setq-local exec-path path)
- (let ((ret (call-process rust-cargo-bin nil t nil "locate-project")))
- (when (/= ret 0)
- (error "`cargo locate-project' returned %s status: %s" ret
(buffer-string)))
- (goto-char 0)
- (let ((output (json-read)))
- (cdr (assoc-string "root" output)))))))
+ (if (file-remote-p default-directory)
+ (rust-buffer-crate)
+ ;; Copy environment variables into the new buffer, since
+ ;; with-temp-buffer will re-use the variables' defaults, even if
+ ;; they have been changed in this variable using e.g. envrc-mode.
+ ;; See https://github.com/purcell/envrc/issues/12.
+ (let ((env process-environment)
+ (path exec-path))
+ (with-temp-buffer
+ ;; Copy the entire environment just in case there's something we
+ ;; don't know we need.
+ (setq-local process-environment env)
+ ;; Set PATH so we can find cargo.
+ (setq-local exec-path path)
+ (let ((ret (call-process rust-cargo-bin nil t nil "locate-project")))
+ (when (/= ret 0)
+ (error "`cargo locate-project' returned %s status: %s" ret
(buffer-string)))
+ (goto-char 0)
+ (let ((output (json-read)))
+ (cdr (assoc-string "root" output))))))))
+
+(defun rust-buffer-crate ()
+ "Try to locate Cargo.toml using `locate-dominating-file'."
+ (let ((dir (locate-dominating-file default-directory "Cargo.toml")))
+ (if dir dir default-directory)))
(defun rust-update-buffer-project ()
(setq-local rust-buffer-project (rust-buffer-project)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/rust-mode 3e73d67022 1/2: use rust-buffer-crate to get remote crate path,
ELPA Syncer <=