[Fix] auto detect content which should use source syntax (#86)

This commit is contained in:
The Mist 2024-04-15 22:33:57 +08:00 committed by GitHub
parent 727584b109
commit ac30b071d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,3 +1,5 @@
use std::collections::HashMap;
use cosmic_text::{Attrs, Family, Style, Weight};
use syntect::{
easy::HighlightLines,
@ -8,11 +10,14 @@ use syntect::{
use crate::components::interface::render_error::RenderError;
type SourceMap = HashMap<&'static str, &'static str>;
pub struct Highlight {
content: String,
code_file_path: String,
extension: Option<String>,
font_family: String,
highlighting_language_source_map: SourceMap,
}
pub type HighlightResult<'a> = Vec<(&'a str, Attrs<'a>)>;
@ -29,6 +34,7 @@ impl Highlight {
code_file_path,
extension,
font_family,
highlighting_language_source_map: HashMap::from([("PHP", "<?php")]),
}
}
@ -47,6 +53,15 @@ impl Highlight {
))?,
};
if let Some(identifier) = self.highlighting_language_source_map.get(&syntax.name[..]) {
if !self.content.contains(identifier) {
return Ok(syntax_set
.find_syntax_by_name(&format!("{} Source", &syntax.name))
.unwrap_or(syntax)
.to_owned());
}
}
Ok(syntax.to_owned())
}