@@ -167,6 +167,29 @@ impl HighlightingAssets {
167167 })
168168 }
169169
170+ fn get_syntax_for_path(
171+ &self,
172+ path: impl AsRef<Path>,
173+ mapping: &SyntaxMapping,
174+ ) -> Result<SyntaxReferenceInSet> {
175+ let path = path.as_ref();
176+ match mapping.get_syntax_for(path) {
177+ Some(MappingTarget::MapToUnknown) => {
178+ Err(Error::UndetectedSyntax(path.to_string_lossy().into()))
179+ }
180+
181+ Some(MappingTarget::MapTo(syntax_name)) => self
182+ .find_syntax_by_name(syntax_name)?
183+ .ok_or_else(|| Error::UnknownSyntax(syntax_name.to_owned())),
184+
185+ None => {
186+ let file_name = path.file_name().unwrap_or_default();
187+ self.get_extension_syntax(file_name)?
188+ .ok_or_else(|| Error::UndetectedSyntax(path.to_string_lossy().into()))
189+ }
190+ }
191+ }
192+
170193 pub(crate) fn get_theme(&self, theme: &str) -> &Theme {
171194 match self.get_theme_set().themes.get(theme) {
172195 Some(theme) => theme,
@@ -201,23 +224,10 @@ impl HighlightingAssets {
201224 let path = input.path();
202225 let path_syntax = if let Some(path) = path {
203226 // If a path was provided, we try and detect the syntax based on extension mappings.
204− match mapping.get_syntax_for(
227+ self.get_syntax_for_path(
205228 PathAbs::new(path).map_or_else(|_| path.to_owned(), |p| p.as_path().to_path_buf()),
206− ) {
207− Some(MappingTarget::MapToUnknown) => {
208− Err(Error::UndetectedSyntax(path.to_string_lossy().into()))
209− }
210−
211− Some(MappingTarget::MapTo(syntax_name)) => self
212− .find_syntax_by_name(syntax_name)?
213− .ok_or_else(|| Error::UnknownSyntax(syntax_name.to_owned())),
214−
215− None => {
216− let file_name = path.file_name().unwrap_or_default();
217− self.get_extension_syntax(file_name)?
218− .ok_or_else(|| Error::UndetectedSyntax(path.to_string_lossy().into()))
219− }
220− }
229+ mapping,
230+ )
221231 } else {
222232 Err(Error::UndetectedSyntax("[unknown]".into()))
223233 };