Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'xtask/src/main.rs')
| -rw-r--r-- | xtask/src/main.rs | 44 |
1 files changed, 12 insertions, 32 deletions
diff --git a/xtask/src/main.rs b/xtask/src/main.rs index d5cb6498..c6875d95 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -19,43 +19,23 @@ pub mod tasks { } pub fn querycheck(languages: impl Iterator<Item = String>) -> Result<(), DynError> { - use crate::helpers::lang_config; - use helix_core::{syntax::read_query, tree_sitter::Query}; - use helix_loader::grammar::get_language; - - let query_files = [ - "highlights.scm", - "locals.scm", - "injections.scm", - "textobjects.scm", - "indents.scm", - ]; + use helix_core::syntax::LanguageData; let languages_to_check: HashSet<_> = languages.collect(); - - for language in lang_config().language { - if !languages_to_check.is_empty() && !languages_to_check.contains(&language.language_id) + let loader = crate::helpers::syn_loader(); + for (_language, lang_data) in loader.languages() { + if !languages_to_check.is_empty() + && !languages_to_check.contains(&lang_data.config().language_id) { continue; } - - let language_name = &language.language_id; - let grammar_name = language.grammar.as_ref().unwrap_or(language_name); - for query_file in query_files { - let language = get_language(grammar_name); - let query_text = read_query(language_name, query_file); - if let Ok(lang) = language { - if !query_text.is_empty() { - if let Err(reason) = Query::new(&lang, &query_text) { - return Err(format!( - "Failed to parse {} queries for {}: {}", - query_file, language_name, reason - ) - .into()); - } - } - } - } + let config = lang_data.config(); + let Some(syntax_config) = LanguageData::compile_syntax_config(config, &loader)? else { + continue; + }; + let grammar = syntax_config.grammar; + LanguageData::compile_indent_query(grammar, config)?; + LanguageData::compile_textobject_query(grammar, config)?; } println!("Query check succeeded"); |