diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs index c46bdd8cb5f8..f6bf5e398f7c 100644 --- a/helix-lsp/src/client.rs +++ b/helix-lsp/src/client.rs @@ -387,6 +387,7 @@ impl Client { ..Default::default() }), publish_diagnostics: Some(lsp::PublishDiagnosticsClientCapabilities { + version_support: Some(true), ..Default::default() }), inlay_hint: Some(lsp::InlayHintClientCapabilities { diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index 1463682939f9..8803792aab8e 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -709,7 +709,16 @@ impl Application { return; } }; - let doc = self.editor.document_by_path_mut(&path); + let doc = self.editor.document_by_path_mut(&path).filter(|doc| { + if let Some(version) = params.version { + if version != doc.version() { + log::info!("Version ({version}) is out of date for {path:?} (expected ({}), dropping PublishDiagnostic notification", doc.version()); + return false; + } + } + + true + }); if let Some(doc) = doc { let lang_conf = doc.language_config();