Unnamed repository; edit this file 'description' to name the repository.
feat: add proc-macro rebuild on save option
Signed-off-by: ClSlaid <[email protected]>
ClSlaid 2023-12-04
parent e402c49 · commit b21d68c
-rw-r--r--crates/rust-analyzer/src/config.rs7
-rw-r--r--crates/rust-analyzer/src/global_state.rs4
2 files changed, 11 insertions, 0 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 90d1d6b055..33ba466236 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -105,6 +105,9 @@ config_data! {
/// ```
/// .
cargo_buildScripts_overrideCommand: Option<Vec<String>> = "null",
+ /// rerun proc-macros building/build-scripts running when proc-macro
+ /// or build-script sources change and are saved.
+ cargo_buildScripts_rebuildOnSave: bool = "false",
/// Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to
/// avoid checking unnecessary things.
cargo_buildScripts_useRustcWrapper: bool = "true",
@@ -1368,6 +1371,10 @@ impl Config {
self.data.checkOnSave
}
+ pub fn script_rebuild_on_save(&self) -> bool {
+ self.data.cargo_buildScripts_rebuildOnSave
+ }
+
pub fn runnables(&self) -> RunnablesConfig {
RunnablesConfig {
override_cargo: self.data.runnables_command.clone(),
diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs
index c09f57252c..60dc5dc522 100644
--- a/crates/rust-analyzer/src/global_state.rs
+++ b/crates/rust-analyzer/src/global_state.rs
@@ -351,6 +351,10 @@ impl GlobalState {
crates.iter().any(|&krate| crate_graph[krate].is_proc_macro)
});
+ if self.proc_macro_changed && self.config.script_rebuild_on_save() {
+ self.fetch_build_data_queue
+ .request_op(format!("proc-macro or build script source changed"), ())
+ }
}
true