diff --git a/cli/loader/src/lib.rs b/cli/loader/src/lib.rs index 4e9af25f..3efa74b0 100644 --- a/cli/loader/src/lib.rs +++ b/cli/loader/src/lib.rs @@ -661,7 +661,7 @@ impl<'a> LanguageConfiguration<'a> { } } } - result.configure(&all_highlight_names); + result.configure(&all_highlight_names.as_slice()); Ok(Some(result)) } }) diff --git a/cli/src/tests/helpers/fixtures.rs b/cli/src/tests/helpers/fixtures.rs index 854f7e67..91c4956a 100644 --- a/cli/src/tests/helpers/fixtures.rs +++ b/cli/src/tests/helpers/fixtures.rs @@ -50,7 +50,7 @@ pub fn get_highlight_config( &locals_query, ) .unwrap(); - result.configure(highlight_names); + result.configure(&highlight_names); result } diff --git a/highlight/src/c_lib.rs b/highlight/src/c_lib.rs index 334b8db0..d48a180c 100644 --- a/highlight/src/c_lib.rs +++ b/highlight/src/c_lib.rs @@ -112,7 +112,7 @@ pub extern "C" fn ts_highlighter_add_language( let mut config = HighlightConfiguration::new(language, highlight_query, injection_query, locals_query) .or(Err(ErrorCode::InvalidQuery))?; - config.configure(&this.highlight_names); + config.configure(&this.highlight_names.as_slice()); this.languages.insert(scope_name, (injection_regex, config)); Ok(()) diff --git a/highlight/src/lib.rs b/highlight/src/lib.rs index a0cfc34e..c8cdc1aa 100644 --- a/highlight/src/lib.rs +++ b/highlight/src/lib.rs @@ -293,7 +293,11 @@ impl HighlightConfiguration { /// /// When highlighting, results are returned as `Highlight` values, which contain the index /// of the matched highlight this list of highlight names. - pub fn configure(&mut self, recognized_names: &[String]) { + pub fn configure<'a, I, J>(&mut self, recognized_names: &I) + where + I: IntoIterator + Copy, + J: AsRef + 'a, + { let mut capture_parts = Vec::new(); self.highlight_indices.clear(); self.highlight_indices @@ -303,10 +307,10 @@ impl HighlightConfiguration { let mut best_index = None; let mut best_match_len = 0; - for (i, recognized_name) in recognized_names.iter().enumerate() { + for (i, recognized_name) in recognized_names.into_iter().enumerate() { let mut len = 0; let mut matches = true; - for part in recognized_name.split('.') { + for part in recognized_name.as_ref().split('.') { len += 1; if !capture_parts.contains(&part) { matches = false;