Replace '; inherits <language>' in treesitter queries with <language> queries instead of appending them (#2470)

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
pull/3141/head
Philipp Mildenberger 2 years ago committed by GitHub
parent 52bb1103f8
commit b6c700fce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -328,29 +328,15 @@ fn read_query(language: &str, filename: &str) -> String {
let query = load_runtime_file(language, filename).unwrap_or_default(); let query = load_runtime_file(language, filename).unwrap_or_default();
// TODO: the collect() is not ideal // replaces all "; inherits <language>(,<language>)*" with the queries of the given language(s)
let inherits = INHERITS_REGEX INHERITS_REGEX
.captures_iter(&query) .replace_all(&query, |captures: &regex::Captures| {
.flat_map(|captures| {
captures[1] captures[1]
.split(',') .split(',')
.map(str::to_owned) .map(|language| format!("\n{}\n", read_query(language, filename)))
.collect::<Vec<_>>() .collect::<String>()
}) })
.collect::<Vec<_>>(); .to_string()
if inherits.is_empty() {
return query;
}
let mut queries = inherits
.iter()
.map(|language| read_query(language, filename))
.collect::<Vec<_>>();
queries.push(query);
queries.concat()
} }
impl LanguageConfiguration { impl LanguageConfiguration {

@ -5,7 +5,7 @@
(#eq? @function "#match?")) (#eq? @function "#match?"))
; highlight inheritance comments ; highlight inheritance comments
((query . (comment) @keyword.directive) (((comment) @keyword.directive)
(#match? @keyword.directive "^; +inherits *:")) (#match? @keyword.directive "^; +inherits *:"))
[ [

Loading…
Cancel
Save