summaryrefslogtreecommitdiff
path: root/support/texlab/src/workspace/children_expand.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/workspace/children_expand.rs')
-rw-r--r--support/texlab/src/workspace/children_expand.rs98
1 files changed, 0 insertions, 98 deletions
diff --git a/support/texlab/src/workspace/children_expand.rs b/support/texlab/src/workspace/children_expand.rs
deleted file mode 100644
index 8fecf2d503..0000000000
--- a/support/texlab/src/workspace/children_expand.rs
+++ /dev/null
@@ -1,98 +0,0 @@
-use std::{path::PathBuf, sync::Arc};
-
-use anyhow::Result;
-use notify::RecursiveMode;
-use rayon::iter::{IntoParallelIterator, ParallelIterator};
-
-use crate::{
- component_db::COMPONENT_DATABASE, Document, DocumentLanguage, OpenHandler, Uri, Workspace,
- WorkspaceSource, WorkspaceSubset,
-};
-
-pub struct ChildrenExpander<W> {
- workspace: Arc<W>,
-}
-
-impl<W> ChildrenExpander<W>
-where
- W: Workspace + Send + Sync + 'static,
-{
- pub fn new(workspace: Arc<W>) -> Self {
- workspace.register_open_handler(Arc::new(move |workspace, document| {
- Self::expand(workspace.as_ref(), document.as_ref());
- }));
- Self { workspace }
- }
-
- fn expand(workspace: &dyn Workspace, document: &Document) {
- if let Some(data) = document.data.as_latex() {
- let extras = &data.extras;
- let mut all_targets = vec![&extras.implicit_links.aux, &extras.implicit_links.log];
- for link in &extras.explicit_links {
- if link
- .as_component_name()
- .and_then(|name| COMPONENT_DATABASE.find(&name))
- .is_none()
- {
- all_targets.push(&link.targets);
- }
- }
-
- all_targets.into_par_iter().for_each(|targets| {
- for path in targets
- .iter()
- .filter(|uri| uri.scheme() == "file" && uri.fragment().is_none())
- .filter_map(|uri| uri.to_file_path().ok())
- {
- if workspace.load(path).is_ok() {
- break;
- }
- }
- });
- }
- }
-}
-
-impl<W: Workspace> Workspace for ChildrenExpander<W> {
- fn open(
- &self,
- uri: Arc<Uri>,
- text: String,
- language: DocumentLanguage,
- source: WorkspaceSource,
- ) -> Arc<Document> {
- self.workspace.open(uri, text, language, source)
- }
-
- fn register_open_handler(&self, handler: OpenHandler) {
- self.workspace.register_open_handler(handler)
- }
-
- fn documents(&self) -> Vec<Arc<Document>> {
- self.workspace.documents()
- }
-
- fn has(&self, uri: &Uri) -> bool {
- self.workspace.has(uri)
- }
-
- fn get(&self, uri: &Uri) -> Option<Arc<Document>> {
- self.workspace.get(uri)
- }
-
- fn close(&self, uri: &Uri) {
- self.workspace.close(uri)
- }
-
- fn is_open(&self, uri: &Uri) -> bool {
- self.workspace.is_open(uri)
- }
-
- fn subset(&self, uri: Arc<Uri>) -> Option<WorkspaceSubset> {
- self.workspace.subset(uri)
- }
-
- fn watch(&self, path: PathBuf, mode: RecursiveMode) -> Result<()> {
- self.workspace.watch(path, mode)
- }
-}