summaryrefslogtreecommitdiff
path: root/support/texlab/crates/distro/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/crates/distro/src/lib.rs')
-rw-r--r--support/texlab/crates/distro/src/lib.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/support/texlab/crates/distro/src/lib.rs b/support/texlab/crates/distro/src/lib.rs
index 5ad9a8529c..5c0dbe51fb 100644
--- a/support/texlab/crates/distro/src/lib.rs
+++ b/support/texlab/crates/distro/src/lib.rs
@@ -58,7 +58,7 @@ impl Distro {
}
};
- let file_name_db = match kind {
+ let mut file_name_db = match kind {
DistroKind::Texlive => {
let root_dirs = kpsewhich::root_directories()?;
FileNameDB::parse(&root_dirs, &mut texlive::read_database)?
@@ -70,6 +70,20 @@ impl Distro {
DistroKind::Tectonic | DistroKind::Unknown => FileNameDB::default(),
};
+ if let Some(bibinputs) = std::env::var_os("BIBINPUTS") {
+ for dir in std::env::split_paths(&bibinputs) {
+ if let Ok(entries) = std::fs::read_dir(dir) {
+ for file in entries
+ .flatten()
+ .filter(|entry| entry.file_type().map_or(false, |ty| ty.is_file()))
+ .map(|entry| entry.path())
+ {
+ file_name_db.insert(file);
+ }
+ }
+ }
+ }
+
Ok(Self { kind, file_name_db })
}
}