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

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

[nongnu] elpa/rust-mode af4aa18a9b 3/3: Merge pull request #447 from gla


From: ELPA Syncer
Subject: [nongnu] elpa/rust-mode af4aa18a9b 3/3: Merge pull request #447 from glasserc/support-envrc
Date: Thu, 23 Jun 2022 17:58:46 -0400 (EDT)

branch: elpa/rust-mode
commit af4aa18a9ba7ef9e7dbc1bcae0f4f58fc21f5a4f
Merge: 5f654a5867 332a23285a
Author: brotzeit <brotzeitmacher@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #447 from glasserc/support-envrc
    
    Support envrc
---
 rust-cargo.el | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/rust-cargo.el b/rust-cargo.el
index 58f0151f19..9f6e611a36 100644
--- a/rust-cargo.el
+++ b/rust-cargo.el
@@ -30,13 +30,24 @@
 
 (defun rust-buffer-project ()
   "Get project root if possible."
-  (with-temp-buffer
-    (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))))))
+  ;; 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-update-buffer-project ()
   (setq-local rust-buffer-project (rust-buffer-project)))



reply via email to

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