emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/rust-mode 56e5c3aeb0 2/2: Merge pull request #449 from rus


From: ELPA Syncer
Subject: [nongnu] elpa/rust-mode 56e5c3aeb0 2/2: Merge pull request #449 from rust-lang/remote-crate-path
Date: Fri, 24 Jun 2022 08:59:16 -0400 (EDT)

branch: elpa/rust-mode
commit 56e5c3aeb0af110221b4144dacfb38537392f4ea
Merge: af4aa18a9b 3e73d67022
Author: brotzeit <brotzeitmacher@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #449 from rust-lang/remote-crate-path
    
    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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]