diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-07-27 07:40:12 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-27 07:40:12 +1000 |
commit | c6f4e4152992ade2e31a96ba3244afe7b9fc0ab8 (patch) | |
tree | af5222b1aa4266647995f2c6d6d3c593f9d80300 /cli/lsp/language_server.rs | |
parent | 091a26104b9ef7435a1bb36e8fc814196a2cb173 (diff) |
refactor(lsp): minor improvements to handling closed documents (#11518)
Ref #10897
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 25b588ae6..27d6e4204 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -771,15 +771,21 @@ impl Inner { async fn did_close(&mut self, params: DidCloseTextDocumentParams) { let mark = self.performance.mark("did_close", Some(¶ms)); if params.text_document.uri.scheme() == "deno" { - // we can ignore virtual text documents opening, as they don't need to + // we can ignore virtual text documents closing, as they don't need to // be tracked in memory, as they are static assets that won't change // already managed by the language service return; } let specifier = self.url_map.normalize_url(¶ms.text_document.uri); - self.documents.close(&specifier); + let is_diagnosable = self.documents.is_diagnosable(&specifier); - if self.documents.is_diagnosable(&specifier) { + if is_diagnosable { + let mut specifiers = self.documents.dependents(&specifier); + specifiers.push(specifier.clone()); + self.diagnostics_server.invalidate(specifiers).await; + } + self.documents.close(&specifier); + if is_diagnosable { if let Err(err) = self.diagnostics_server.update() { error!("{}", err); } |