diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-12-17 07:29:43 -0500 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2021-12-17 07:31:28 -0500 |
commit | 8f6c3b7c9151e072e84e216c3de3185cc5f7473d (patch) | |
tree | f962184c44daa29ef163b08c3558858c042841b2 | |
parent | ab54c116ecf1947f3e6b8bda400e2c896d982232 (diff) |
Honor default-language optionhonor-default-language
-rw-r--r-- | src/paint.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/paint.rs b/src/paint.rs index 32c724da..6f1ad4ee 100644 --- a/src/paint.rs +++ b/src/paint.rs @@ -70,7 +70,8 @@ pub enum StyleSectionSpecifier<'l> { impl<'p> Painter<'p> { pub fn new(writer: &'p mut dyn Write, config: &'p config::Config) -> Self { - let default_syntax = Self::get_syntax(&config.syntax_set, None); + let default_syntax = + Self::get_syntax(&config.syntax_set, None, config.default_language.as_deref()); let panel_width_fix = ansifill::UseFullPanelWidth::new(config); @@ -104,11 +105,19 @@ impl<'p> Painter<'p> { } pub fn set_syntax(&mut self, extension: Option<&str>) { - self.syntax = Painter::get_syntax(&self.config.syntax_set, extension); + self.syntax = Painter::get_syntax( + &self.config.syntax_set, + extension, + self.config.default_language.as_deref(), + ); } - fn get_syntax<'a>(syntax_set: &'a SyntaxSet, extension: Option<&str>) -> &'a SyntaxReference { - if let Some(extension) = extension { + fn get_syntax<'a>( + syntax_set: &'a SyntaxSet, + extension: Option<&str>, + fallback_extension: Option<&str>, + ) -> &'a SyntaxReference { + for extension in [extension, fallback_extension].iter().flatten() { if let Some(syntax) = syntax_set.find_syntax_by_extension(extension) { return syntax; } |