Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/lsp/capabilities.rs5
-rw-r--r--crates/rust-analyzer/src/main_loop.rs6
2 files changed, 7 insertions, 4 deletions
diff --git a/crates/rust-analyzer/src/lsp/capabilities.rs b/crates/rust-analyzer/src/lsp/capabilities.rs
index 271a9c0f3d..1db616898e 100644
--- a/crates/rust-analyzer/src/lsp/capabilities.rs
+++ b/crates/rust-analyzer/src/lsp/capabilities.rs
@@ -463,6 +463,11 @@ impl ClientCapabilities {
.unwrap_or_default()
}
+ pub fn diagnostics_refresh(&self) -> bool {
+ (|| -> _ { self.0.workspace.as_ref()?.diagnostic.as_ref()?.refresh_support })()
+ .unwrap_or_default()
+ }
+
pub fn inlay_hint_resolve_support_properties(&self) -> FxHashSet<&str> {
self.0
.text_document
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index 9a51df80fe..73fce42437 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -417,8 +417,6 @@ impl GlobalState {
}
}
- let supports_diagnostic_pull_model = self.config.text_document_diagnostic();
-
let client_refresh = became_quiescent || state_changed;
if client_refresh {
// Refresh semantic tokens if the client supports it.
@@ -437,7 +435,7 @@ impl GlobalState {
self.send_request::<lsp_types::request::InlayHintRefreshRequest>((), |_, _| ());
}
- if supports_diagnostic_pull_model {
+ if self.config.diagnostics_refresh() {
self.send_request::<lsp_types::request::WorkspaceDiagnosticRefresh>(
(),
|_, _| (),
@@ -448,7 +446,7 @@ impl GlobalState {
let project_or_mem_docs_changed =
became_quiescent || state_changed || memdocs_added_or_removed;
if project_or_mem_docs_changed
- && !supports_diagnostic_pull_model
+ && !self.config.text_document_diagnostic()
&& self.config.publish_diagnostics(None)
{
self.update_diagnostics();