diff options
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); } |