diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 556fc2eeb6..3671367025 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -46,8 +46,8 @@ config_data! { cargo_allFeatures: bool = "false", /// List of features to activate. cargo_features: Vec = "[]", - /// Run `cargo check` on startup to get the correct value for package - /// OUT_DIRs. + /// Run build scripts (`build.rs`) for more precise code analysis. + cargo_runBuildScripts | cargo_loadOutDirsFromCheck: bool = "false", /// Do not activate the `default` feature. cargo_noDefaultFeatures: bool = "false", @@ -167,8 +167,7 @@ config_data! { /// Whether to show `can't find Cargo.toml` error message. notifications_cargoTomlNotFound: bool = "true", - /// Enable Proc macro support, `#rust-analyzer.cargo.loadOutDirsFromCheck#` must be - /// enabled. + /// Enable support for procedural macros, implies `#rust-analyzer.cargo.runBuildScripts#`. procMacro_enable: bool = "false", /// Internal config, path to proc-macro server executable (typically, /// this is rust-analyzer itself, but we override this in tests). @@ -480,8 +479,8 @@ impl Config { pub fn cargo_autoreload(&self) -> bool { self.data.cargo_autoreload } - pub fn load_out_dirs_from_check(&self) -> bool { - self.data.cargo_loadOutDirsFromCheck + pub fn run_build_scripts(&self) -> bool { + self.data.cargo_runBuildScripts || self.data.procMacro_enable } pub fn cargo(&self) -> CargoConfig { let rustc_source = self.data.rustcSource.as_ref().map(|rustc_src| { diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 2829d5970e..f0cb309e47 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -312,7 +312,7 @@ impl GlobalState { } else { assert_eq!(n_done, n_total); new_status = Status::Ready { - partial: self.config.load_out_dirs_from_check() + partial: self.config.run_build_scripts() && self.workspace_build_data.is_none() || config_version < self.vfs_config_version, }; diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index c07efa3303..aa8504c3d5 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -337,7 +337,7 @@ impl GlobalState { }; change.set_crate_graph(crate_graph); - if self.config.load_out_dirs_from_check() && workspace_build_data.is_none() { + if self.config.run_build_scripts() && workspace_build_data.is_none() { let mut collector = BuildDataCollector::default(); for ws in &workspaces { ws.collect_build_data_configs(&mut collector); diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index f91e04c31d..1dbf2a611d 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -10,8 +10,8 @@ Activate all available features (`--all-features`). [[rust-analyzer.cargo.features]]rust-analyzer.cargo.features (default: `[]`):: List of features to activate. -[[rust-analyzer.cargo.loadOutDirsFromCheck]]rust-analyzer.cargo.loadOutDirsFromCheck (default: `false`):: - Run `cargo check` on startup to get the correct value for package OUT_DIRs. +[[rust-analyzer.cargo.runBuildScripts]]rust-analyzer.cargo.runBuildScripts (default: `false`):: + Run build scripts (`build.rs`) for more precise code analysis. [[rust-analyzer.cargo.noDefaultFeatures]]rust-analyzer.cargo.noDefaultFeatures (default: `false`):: Do not activate the `default` feature. [[rust-analyzer.cargo.target]]rust-analyzer.cargo.target (default: `null`):: @@ -97,7 +97,7 @@ [[rust-analyzer.notifications.cargoTomlNotFound]]rust-analyzer.notifications.cargoTomlNotFound (default: `true`):: Whether to show `can't find Cargo.toml` error message. [[rust-analyzer.procMacro.enable]]rust-analyzer.procMacro.enable (default: `false`):: - Enable Proc macro support, `#rust-analyzer.cargo.loadOutDirsFromCheck#` must be enabled. + Enable support for procedural macros, implies `#rust-analyzer.cargo.runBuildScripts#`. [[rust-analyzer.procMacro.server]]rust-analyzer.procMacro.server (default: `null`):: Internal config, path to proc-macro server executable (typically, this is rust-analyzer itself, but we override this in tests). [[rust-analyzer.runnables.overrideCargo]]rust-analyzer.runnables.overrideCargo (default: `null`):: diff --git a/editors/code/package.json b/editors/code/package.json index e3e0ebff0f..1987364bc0 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -408,8 +408,8 @@ "type": "string" } }, - "rust-analyzer.cargo.loadOutDirsFromCheck": { - "markdownDescription": "Run `cargo check` on startup to get the correct value for package OUT_DIRs.", + "rust-analyzer.cargo.runBuildScripts": { + "markdownDescription": "Run build scripts (`build.rs`) for more precise code analysis.", "default": false, "type": "boolean" }, @@ -678,7 +678,7 @@ "type": "boolean" }, "rust-analyzer.procMacro.enable": { - "markdownDescription": "Enable Proc macro support, `#rust-analyzer.cargo.loadOutDirsFromCheck#` must be enabled.", + "markdownDescription": "Enable support for procedural macros, implies `#rust-analyzer.cargo.runBuildScripts#`.", "default": false, "type": "boolean" },