diff options
author | Martin Nordholts <enselic@gmail.com> | 2021-09-13 17:37:05 +0200 |
---|---|---|
committer | Martin Nordholts <enselic@gmail.com> | 2021-09-14 07:38:36 +0200 |
commit | 9e0ea06435f6d5f0e2faacea121626019faa9b32 (patch) | |
tree | dcadd1fab01f986d09cd06904b5816e4f3bc4e45 /src/assets.rs | |
parent | 863d9cacd0ba0284f7b138608be04a0a137fbe21 (diff) |
HighlightingAssets: Add find_syntax_by_name() helper
Diffstat (limited to 'src/assets.rs')
-rw-r--r-- | src/assets.rs | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/assets.rs b/src/assets.rs index d731fc3f..544acaf2 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -220,12 +220,7 @@ impl HighlightingAssets { let file_name = file_name.as_ref(); Ok(match mapping.get_syntax_for(file_name) { Some(MappingTarget::MapToUnknown) => None, - Some(MappingTarget::MapTo(syntax_name)) => { - let syntax_set = self.get_syntax_set()?; - syntax_set - .find_syntax_by_name(syntax_name) - .map(|syntax| SyntaxReferenceInSet { syntax, syntax_set }) - } + Some(MappingTarget::MapTo(syntax_name)) => self.find_syntax_by_name(syntax_name)?, None => self.get_extension_syntax(file_name.as_os_str())?, }) } @@ -287,13 +282,9 @@ impl HighlightingAssets { Some(MappingTarget::MapToUnknown) => line_syntax .ok_or_else(|| Error::UndetectedSyntax(path.to_string_lossy().into())), - Some(MappingTarget::MapTo(syntax_name)) => { - let syntax_set = self.get_syntax_set()?; - syntax_set - .find_syntax_by_name(syntax_name) - .map(|syntax| SyntaxReferenceInSet { syntax, syntax_set }) - .ok_or_else(|| Error::UnknownSyntax(syntax_name.to_owned())) - } + Some(MappingTarget::MapTo(syntax_name)) => self + .find_syntax_by_name(syntax_name)? + .ok_or_else(|| Error::UnknownSyntax(syntax_name.to_owned())), None => { let file_name = path.file_name().unwrap_or_default(); @@ -308,6 +299,13 @@ impl HighlightingAssets { } } + fn find_syntax_by_name(&self, syntax_name: &str) -> Result<Option<SyntaxReferenceInSet>> { + let syntax_set = self.get_syntax_set()?; + Ok(syntax_set + .find_syntax_by_name(syntax_name) + .map(|syntax| SyntaxReferenceInSet { syntax, syntax_set })) + } + fn get_extension_syntax(&self, file_name: &OsStr) -> Result<Option<SyntaxReferenceInSet>> { let mut syntax = self.find_syntax_by_file_name(file_name)?; if syntax.is_none() { |