on aa00a47 help sign in
helix/xtask/src/querycheck.rs
39 lines 1.2 kB history raw
1use crate::DynError;
3pub fn query_check() -> Result<(), DynError> {
4 use crate::helpers::lang_config;
5 use helix_core::{syntax::read_query, tree_sitter::Query};
6 use helix_loader::grammar::get_language;
8 let query_files = [
9 "highlights.scm",
10 "locals.scm",
11 "injections.scm",
12 "textobjects.scm",
13 "indents.scm",
14 ];
16 for language in lang_config().language {
17 let language_name = language.language_id.to_ascii_lowercase();
18 let grammar_name = language.grammar.unwrap_or(language.language_id);
19 for query_file in query_files {
20 let language = get_language(&grammar_name);
21 let query_text = read_query(&language_name, query_file);
22 if let Ok(lang) = language {
23 if !query_text.is_empty() {
24 if let Err(reason) = Query::new(lang, &query_text) {
25 return Err(format!(
26 "Failed to parse {} queries for {}: {}",
27 query_file, language_name, reason
28 )
29 .into());
30 }
31 }
32 }
33 }
34 }
36 println!("Query check succeeded");
38 Ok(())