diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-11-20 20:24:31 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-20 20:24:31 +0000 |
| commit | 4566414789310acb2617543f4b50beab4bb48e06 (patch) | |
| tree | e5862136a04369e32bafc8a8a6e8e855e7e48e5e | |
| parent | c9c6fa8f56a2b095b5f6b7dc66a4f1db4a9a9a30 (diff) | |
| parent | a68ce62f6a33d3e5777c1d64c946e0f1d9c7f457 (diff) | |
| download | rust-4566414789310acb2617543f4b50beab4bb48e06.tar.gz rust-4566414789310acb2617543f4b50beab4bb48e06.zip | |
Merge #10810
10810: feat: Add toggle to disable cache priming r=jonas-schievink a=lnicola Even if it doesn't prevent the rest of the features from working, cache priming tends to be quite CPU-intensive and can make people think that the load times are worse than they actually are. It's also less useful in Code and `rust-tools` because the inlay hints and semantic highlighting trigger quite a bit of computation assuming you have a file open in the editor. Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
| -rw-r--r-- | crates/rust-analyzer/src/config.rs | 7 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/main_loop.rs | 4 | ||||
| -rw-r--r-- | docs/user/generated_config.adoc | 5 | ||||
| -rw-r--r-- | editors/code/package.json | 5 |
4 files changed, 20 insertions, 1 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 6a72c4e3261..5826b6b114c 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -58,6 +58,9 @@ config_data! { /// Whether to allow import insertion to merge new imports into single path glob imports like `use std::fmt::*;`. assist_allowMergingIntoGlobImports: bool = "true", + /// Warm up caches on project load. + cache_warmup: bool = "true", + /// Show function name and docs in parameter hints. callInfo_full: bool = "true", @@ -545,6 +548,10 @@ impl Config { ) } + pub fn prefill_caches(&self) -> bool { + self.data.cache_warmup + } + pub fn location_link(&self) -> bool { try_or!(self.caps.text_document.as_ref()?.definition?.link_support?, false) } diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index eab4b2e6a30..979b3b15221 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -433,7 +433,9 @@ impl GlobalState { for flycheck in &self.flycheck { flycheck.update(); } - self.prime_caches_queue.request_op(); + if self.config.prefill_caches() { + self.prime_caches_queue.request_op(); + } } if !was_quiescent || state_changed { diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index c7bb1bf6420..9f6f046014c 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -23,6 +23,11 @@ Group inserted imports by the https://rust-analyzer.github.io/manual.html#auto-i -- Whether to allow import insertion to merge new imports into single path glob imports like `use std::fmt::*;`. -- +[[rust-analyzer.cache.warmup]]rust-analyzer.cache.warmup (default: `true`):: ++ +-- +Warm up caches on project load. +-- [[rust-analyzer.callInfo.full]]rust-analyzer.callInfo.full (default: `true`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index e1cbe8ba640..52ba1327459 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -445,6 +445,11 @@ "default": true, "type": "boolean" }, + "rust-analyzer.cache.warmup": { + "markdownDescription": "Warm up caches on project load.", + "default": true, + "type": "boolean" + }, "rust-analyzer.callInfo.full": { "markdownDescription": "Show function name and docs in parameter hints.", "default": true, |
