summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2021-12-17 07:29:43 -0500
committerDan Davison <dandavison7@gmail.com>2021-12-17 07:31:28 -0500
commit8f6c3b7c9151e072e84e216c3de3185cc5f7473d (patch)
treef962184c44daa29ef163b08c3558858c042841b2
parentab54c116ecf1947f3e6b8bda400e2c896d982232 (diff)
Honor default-language optionhonor-default-language
-rw-r--r--src/paint.rs17
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;
}