summaryrefslogtreecommitdiff
path: root/cli/lsp/documents.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2024-01-11 17:07:44 +0000
committerGitHub <noreply@github.com>2024-01-11 17:07:44 +0000
commitd8f86c8b9cf327db4d246c20cf60467cafe2ba64 (patch)
tree35e8604e970b58633748f8f7464301da018382d1 /cli/lsp/documents.rs
parent686141163f9321e70defd9aef9c7b8d7e92f4a82 (diff)
refactor(lsp): store project version on documents (#21892)
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r--cli/lsp/documents.rs28
1 files changed, 23 insertions, 5 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index 208492800..bff56a6b8 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -896,6 +896,7 @@ pub struct Documents {
redirect_resolver: Arc<RedirectResolver>,
/// If --unstable-sloppy-imports is enabled.
unstable_sloppy_imports: bool,
+ project_version: usize,
}
impl Documents {
@@ -924,6 +925,7 @@ impl Documents {
has_injected_types_node_package: false,
redirect_resolver: Arc::new(RedirectResolver::new(cache)),
unstable_sloppy_imports: false,
+ project_version: 0,
}
}
@@ -935,6 +937,14 @@ impl Documents {
.flat_map(|value| value.get_type().or_else(|| value.get_code()))
}
+ pub fn project_version(&self) -> String {
+ self.project_version.to_string()
+ }
+
+ pub fn increment_project_version(&mut self) {
+ self.project_version += 1;
+ }
+
/// "Open" a document from the perspective of the editor, meaning that
/// requests for information from the document will come from the in-memory
/// representation received from the language server client, versus reading
@@ -957,10 +967,13 @@ impl Documents {
resolver,
npm_resolver,
);
- let mut file_system_docs = self.file_system_docs.lock();
- file_system_docs.docs.remove(&specifier);
- file_system_docs.dirty = true;
+ {
+ let mut file_system_docs = self.file_system_docs.lock();
+ file_system_docs.docs.remove(&specifier);
+ file_system_docs.dirty = true;
+ }
self.open_docs.insert(specifier, document.clone());
+ self.increment_project_version();
self.dirty = true;
document
}
@@ -995,6 +1008,7 @@ impl Documents {
self.get_npm_resolver(),
)?;
self.open_docs.insert(doc.specifier().clone(), doc.clone());
+ self.increment_project_version();
Ok(doc)
}
@@ -1016,8 +1030,11 @@ impl Documents {
/// information about the document is required.
pub fn close(&mut self, specifier: &ModuleSpecifier) -> Result<(), AnyError> {
if let Some(document) = self.open_docs.remove(specifier) {
- let mut file_system_docs = self.file_system_docs.lock();
- file_system_docs.docs.insert(specifier.clone(), document);
+ {
+ let mut file_system_docs = self.file_system_docs.lock();
+ file_system_docs.docs.insert(specifier.clone(), document);
+ }
+ self.increment_project_version();
self.dirty = true;
}
Ok(())
@@ -1422,6 +1439,7 @@ impl Documents {
);
self.resolver_config_hash = new_resolver_config_hash;
+ self.increment_project_version();
self.dirty = true;
self.calculate_dependents_if_dirty();
}