@@ -9,12 +9,12 @@ use syntect::parsing::{SyntaxReference, SyntaxSet};
99
1010use path_abs::PathAbs;
1111
12−use crate::bat_warning;
1312use crate::error::*;
1413use crate::input::{InputReader, OpenedInput};
15−use crate::syntax_mapping::{MappingTarget, SyntaxMapping};
14+use crate::syntax_mapping::ignored_suffixes::IgnoredSuffixes;
15+use crate::syntax_mapping::MappingTarget;
16+use crate::{bat_warning, SyntaxMapping};
1617
17−use ignored_suffixes::*;
1818use minimal_assets::*;
1919use serialized_syntax_set::*;
2020
@@ -24,7 +24,6 @@ pub use crate::assets::build_assets::*;
2424pub(crate) mod assets_metadata;
2525#[cfg(feature = "build-assets")]
2626mod build_assets;
27−mod ignored_suffixes;
2827mod minimal_assets;
2928mod serialized_syntax_set;
3029
@@ -195,7 +194,10 @@ impl HighlightingAssets {
195194
196195 let file_name = path.file_name().unwrap_or_default();
197196
198− match (self.get_syntax_for_file_name(file_name)?, syntax_match) {
197+ match (
198+ self.get_syntax_for_file_name(file_name, &mapping.ignored_suffixes)?,
199+ syntax_match,
200+ ) {
199201 (Some(syntax), _) => Ok(syntax),
200202
201203 (_, Some(MappingTarget::MapExtensionToUnknown)) => {
@@ -203,7 +205,7 @@ impl HighlightingAssets {
203205 }
204206
205207 _ => self
206− .get_syntax_for_file_extension(file_name)?
208+ .get_syntax_for_file_extension(file_name, &mapping.ignored_suffixes)?
207209 .ok_or_else(|| Error::UndetectedSyntax(path.to_string_lossy().into())),
208210 }
209211 }
@@ -277,12 +279,18 @@ impl HighlightingAssets {
277279 .map(|syntax| SyntaxReferenceInSet { syntax, syntax_set }))
278280 }
279281
280− fn get_syntax_for_file_name(&self, file_name: &OsStr) -> Result<Option<SyntaxReferenceInSet>> {
282+ fn get_syntax_for_file_name(
283+ &self,
284+ file_name: &OsStr,
285+ ignored_suffixes: &IgnoredSuffixes,
286+ ) -> Result<Option<SyntaxReferenceInSet>> {
281287 let mut syntax = self.find_syntax_by_extension(Some(file_name))?;
282288 if syntax.is_none() {
283− syntax = try_with_stripped_suffix(file_name, |stripped_file_name| {
284− self.get_syntax_for_file_name(stripped_file_name) // Note: recursion
285− })?;
289+ syntax =
290+ ignored_suffixes.try_with_stripped_suffix(file_name, |stripped_file_name| {
291+ // Note: recursion
292+ self.get_syntax_for_file_name(stripped_file_name, ignored_suffixes)
293+ })?;
286294 }
287295 Ok(syntax)
288296 }
@@ -290,12 +298,15 @@ impl HighlightingAssets {
290298 fn get_syntax_for_file_extension(
291299 &self,
292300 file_name: &OsStr,
301+ ignored_suffixes: &IgnoredSuffixes,
293302 ) -> Result<Option<SyntaxReferenceInSet>> {
294303 let mut syntax = self.find_syntax_by_extension(Path::new(file_name).extension())?;
295304 if syntax.is_none() {
296− syntax = try_with_stripped_suffix(file_name, |stripped_file_name| {
297− self.get_syntax_for_file_extension(stripped_file_name) // Note: recursion
298− })?;
305+ syntax =
306+ ignored_suffixes.try_with_stripped_suffix(file_name, |stripped_file_name| {
307+ // Note: recursion
308+ self.get_syntax_for_file_extension(stripped_file_name, ignored_suffixes)
309+ })?;
299310 }
300311 Ok(syntax)
301312 }