aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src/syntax.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-core/src/syntax.rs')
-rw-r--r--helix-core/src/syntax.rs26
1 files changed, 6 insertions, 20 deletions
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 8d7520c3..9011f835 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -328,29 +328,15 @@ fn read_query(language: &str, filename: &str) -> String {
let query = load_runtime_file(language, filename).unwrap_or_default();
- // TODO: the collect() is not ideal
- let inherits = INHERITS_REGEX
- .captures_iter(&query)
- .flat_map(|captures| {
+ // replaces all "; inherits <language>(,<language>)*" with the queries of the given language(s)
+ INHERITS_REGEX
+ .replace_all(&query, |captures: &regex::Captures| {
captures[1]
.split(',')
- .map(str::to_owned)
- .collect::<Vec<_>>()
+ .map(|language| format!("\n{}\n", read_query(language, filename)))
+ .collect::<String>()
})
- .collect::<Vec<_>>();
-
- if inherits.is_empty() {
- return query;
- }
-
- let mut queries = inherits
- .iter()
- .map(|language| read_query(language, filename))
- .collect::<Vec<_>>();
-
- queries.push(query);
-
- queries.concat()
+ .to_string()
}
impl LanguageConfiguration {