Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'xtask/src/main.rs')
-rw-r--r--xtask/src/main.rs44
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");