feat: allow specifying an input query-paths argument

This commit is contained in:
Amaan Qureshi 2023-07-20 08:04:59 -04:00
parent 9971e5d5f5
commit ce4a9ef4de
No known key found for this signature in database
GPG key ID: E67890ADC4227273
3 changed files with 75 additions and 11 deletions

View file

@ -496,7 +496,7 @@ impl Loader {
}
Ok(None) => None,
Ok(Some((language, configuration))) => {
match configuration.highlight_config(language, apply_all_captures) {
match configuration.highlight_config(language, apply_all_captures, None) {
Err(e) => {
eprintln!(
"Failed to load property sheet for injection string '{}': {}",
@ -708,16 +708,61 @@ impl<'a> LanguageConfiguration<'a> {
&self,
language: Language,
apply_all_captures: bool,
paths: Option<&[String]>,
) -> Result<Option<&HighlightConfiguration>> {
let (highlights_filenames, injections_filenames, locals_filenames) = match paths {
Some(paths) => (
Some(
paths
.iter()
.filter(|p| p.ends_with("highlights.scm"))
.cloned()
.collect(),
),
Some(
paths
.iter()
.filter(|p| p.ends_with("tags.scm"))
.cloned()
.collect(),
),
Some(
paths
.iter()
.filter(|p| p.ends_with("locals.scm"))
.cloned()
.collect(),
),
),
None => (None, None, None),
};
return self
.highlight_config
.get_or_try_init(|| {
let (highlights_query, highlight_ranges) =
self.read_queries(&self.highlights_filenames, "highlights.scm")?;
let (injections_query, injection_ranges) =
self.read_queries(&self.injections_filenames, "injections.scm")?;
let (locals_query, locals_ranges) =
self.read_queries(&self.locals_filenames, "locals.scm")?;
let (highlights_query, highlight_ranges) = self.read_queries(
if highlights_filenames.is_some() {
&highlights_filenames
} else {
&self.highlights_filenames
},
"highlights.scm",
)?;
let (injections_query, injection_ranges) = self.read_queries(
if injections_filenames.is_some() {
&injections_filenames
} else {
&self.injections_filenames
},
"injections.scm",
)?;
let (locals_query, locals_ranges) = self.read_queries(
if locals_filenames.is_some() {
&locals_filenames
} else {
&self.locals_filenames
},
"locals.scm",
)?;
if highlights_query.is_empty() {
Ok(None)