about summary refs log tree commit diff
diff options
context:
space:
mode:
authorunknown <abramlujan@gmail.com>2022-04-26 19:02:45 -0300
committerunknown <abramlujan@gmail.com>2022-04-27 12:10:43 -0300
commitb373e62f1a3785b35572113797cbfa72861712b2 (patch)
treeaf4667393dcce2acffc8f95a86940a0ff35a74be
parent198c07558094a28bd0e0653f298848070c4b910a (diff)
downloadrust-b373e62f1a3785b35572113797cbfa72861712b2.tar.gz
rust-b373e62f1a3785b35572113797cbfa72861712b2.zip
Reload project on .cargo/config[.toml] changes
Fixes #11024
-rw-r--r--crates/rust-analyzer/src/config.rs2
-rw-r--r--crates/rust-analyzer/src/reload.rs5
-rw-r--r--docs/user/generated_config.adoc2
-rw-r--r--editors/code/package.json2
4 files changed, 8 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 833ee31eed8..05ea67b411b 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -67,7 +67,7 @@ config_data! {
         callInfo_full: bool                                = "true",
 
         /// Automatically refresh project info via `cargo metadata` on
-        /// `Cargo.toml` changes.
+        /// `Cargo.toml` or `.cargo/config.toml` changes.
         cargo_autoreload: bool           = "true",
         /// Activate all available features (`--all-features`).
         cargo_allFeatures: bool          = "false",
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index b68f9d5f59d..650ce6d30ac 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -617,6 +617,11 @@ pub(crate) fn should_refresh_for_change(path: &AbsPath, change_kind: ChangeKind)
         return false;
     }
     if path.extension().unwrap_or_default() != "rs" {
+        if (file_name == "config.toml" || file_name == "config")
+            && path.parent().map(|parent| parent.as_ref().ends_with(".cargo")) == Some(true)
+        {
+            return true;
+        }
         return false;
     }
     if IMPLICIT_TARGET_FILES.iter().any(|it| path.as_ref().ends_with(it)) {
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index ace74f8e08a..a9dcdfd696f 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -42,7 +42,7 @@ Show function name and docs in parameter hints.
 +
 --
 Automatically refresh project info via `cargo metadata` on
-`Cargo.toml` changes.
+`Cargo.toml` or `.cargo/config.toml` changes.
 --
 [[rust-analyzer.cargo.allFeatures]]rust-analyzer.cargo.allFeatures (default: `false`)::
 +
diff --git a/editors/code/package.json b/editors/code/package.json
index cd0ad92d9a5..9f0f53196a5 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -439,7 +439,7 @@
                     "type": "boolean"
                 },
                 "rust-analyzer.cargo.autoreload": {
-                    "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` changes.",
+                    "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` or `.cargo/config.toml` changes.",
                     "default": true,
                     "type": "boolean"
                 },