aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-core/src/syntax.rs26
-rw-r--r--runtime/queries/tsq/highlights.scm2
2 files changed, 7 insertions, 21 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 {
diff --git a/runtime/queries/tsq/highlights.scm b/runtime/queries/tsq/highlights.scm
index c655b994..b59514bc 100644
--- a/runtime/queries/tsq/highlights.scm
+++ b/runtime/queries/tsq/highlights.scm
@@ -5,7 +5,7 @@
(#eq? @function "#match?"))
; highlight inheritance comments
-((query . (comment) @keyword.directive)
+(((comment) @keyword.directive)
(#match? @keyword.directive "^; +inherits *:"))
[