diff options
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r-- | cli/lsp/documents.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index ef9061004..da393fbac 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -26,15 +26,26 @@ impl IndexValid { } } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone)] pub struct DocumentData { bytes: Option<Vec<u8>>, line_index: Option<LineIndex>, + specifier: ModuleSpecifier, dependencies: Option<HashMap<String, analysis::Dependency>>, version: Option<i32>, } impl DocumentData { + pub fn new(specifier: ModuleSpecifier, version: i32, source: &str) -> Self { + Self { + bytes: Some(source.as_bytes().to_owned()), + line_index: Some(LineIndex::new(source)), + specifier, + dependencies: None, + version: Some(version), + } + } + pub fn apply_content_changes( &mut self, content_changes: Vec<TextDocumentContentChangeEvent>, @@ -153,13 +164,8 @@ impl DocumentCache { pub fn open(&mut self, specifier: ModuleSpecifier, version: i32, text: &str) { self.docs.insert( - specifier, - DocumentData { - bytes: Some(text.as_bytes().to_owned()), - version: Some(version), - line_index: Some(LineIndex::new(&text)), - ..Default::default() - }, + specifier.clone(), + DocumentData::new(specifier, version, text), ); } |