refactor: share language IDs with indentation configuration

This commit is contained in:
Valdemar Lorenzen
2026-10-14 12:11:26 +02:00
parent 6a43fb9e0c
commit 5580d6fbd4
9 changed files with 41 additions and 16 deletions
+21
View File
@@ -3,6 +3,7 @@ use std::path::Path;
use std::sync::LazyLock;
pub(super) struct LanguageSpec {
pub id: &'static str,
pub name: &'static str,
pub language: tree_sitter::Language,
pub highlights: &'static str,
@@ -93,6 +94,7 @@ fn javascript_injections() -> &'static str {
}
fn spec(
id: &'static str,
name: &'static str,
language: tree_sitter::Language,
highlights: &'static str,
@@ -100,6 +102,7 @@ fn spec(
locals: &'static str,
) -> LanguageSpec {
LanguageSpec {
id,
name,
language,
highlights,
@@ -111,6 +114,7 @@ fn spec(
static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
[
spec(
super::RUST_ID,
"Rust",
tree_sitter_rust::LANGUAGE.into(),
tree_sitter_rust::HIGHLIGHTS_QUERY,
@@ -118,6 +122,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
super::RUBY_ID,
"Ruby",
tree_sitter_ruby::LANGUAGE.into(),
tree_sitter_ruby::HIGHLIGHTS_QUERY,
@@ -125,6 +130,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
tree_sitter_ruby::LOCALS_QUERY,
),
spec(
super::PYTHON_ID,
"Python",
tree_sitter_python::LANGUAGE.into(),
tree_sitter_python::HIGHLIGHTS_QUERY,
@@ -132,6 +138,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"json",
"JSON",
tree_sitter_json::LANGUAGE.into(),
tree_sitter_json::HIGHLIGHTS_QUERY,
@@ -139,6 +146,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"shellscript",
"Bash",
tree_sitter_bash::LANGUAGE.into(),
tree_sitter_bash::HIGHLIGHT_QUERY,
@@ -146,6 +154,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"makefile",
"Makefile",
tree_sitter_make::LANGUAGE.into(),
tree_sitter_make::HIGHLIGHTS_QUERY,
@@ -153,6 +162,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"markdown",
"Markdown",
tree_sitter_md::LANGUAGE.into(),
MD_HIGHLIGHTS.as_str(),
@@ -160,6 +170,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"javascript",
"JavaScript",
tree_sitter_javascript::LANGUAGE.into(),
JS_HIGHLIGHTS.as_str(),
@@ -167,6 +178,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
tree_sitter_javascript::LOCALS_QUERY,
),
spec(
"typescript",
"TypeScript",
tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
TS_HIGHLIGHTS.as_str(),
@@ -174,6 +186,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
TS_LOCALS.as_str(),
),
spec(
"html",
"HTML",
tree_sitter_html::LANGUAGE.into(),
tree_sitter_html::HIGHLIGHTS_QUERY,
@@ -181,6 +194,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"css",
"CSS",
tree_sitter_css::LANGUAGE.into(),
tree_sitter_css::HIGHLIGHTS_QUERY,
@@ -188,6 +202,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"yaml",
"YAML",
tree_sitter_yaml::LANGUAGE.into(),
tree_sitter_yaml::HIGHLIGHTS_QUERY,
@@ -195,6 +210,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"toml",
"TOML",
tree_sitter_toml_ng::LANGUAGE.into(),
tree_sitter_toml_ng::HIGHLIGHTS_QUERY,
@@ -202,6 +218,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"c",
"C",
tree_sitter_c::LANGUAGE.into(),
tree_sitter_c::HIGHLIGHT_QUERY,
@@ -209,6 +226,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"cpp",
"C++",
tree_sitter_cpp::LANGUAGE.into(),
CPP_HIGHLIGHTS.as_str(),
@@ -216,6 +234,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"go",
"Go",
tree_sitter_go::LANGUAGE.into(),
tree_sitter_go::HIGHLIGHTS_QUERY,
@@ -223,6 +242,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
"",
),
spec(
"typescriptreact",
"TypeScript",
tree_sitter_typescript::LANGUAGE_TSX.into(),
TSX_HIGHLIGHTS.as_str(),
@@ -230,6 +250,7 @@ static LANGUAGES: LazyLock<[LanguageSpec; 18]> = LazyLock::new(|| {
TS_LOCALS.as_str(),
),
spec(
"markdown",
"Markdown inline",
tree_sitter_md::INLINE_LANGUAGE.into(),
tree_sitter_md::HIGHLIGHT_QUERY_INLINE,