From 3d3b0911297f3783b015b7f2117da225e7c2e136 Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Mon, 6 May 2024 21:23:35 +0200 Subject: [PATCH] feat: bump treesitter to 0.22 --- Cargo.lock | 123 ++++++++++++---------- Cargo.toml | 29 +++--- src/ts/configs.rs | 260 ++++++++++++++++++++++------------------------ 3 files changed, 209 insertions(+), 203 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ddd40d..68e7753 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -793,6 +793,12 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + [[package]] name = "libc" version = "0.2.153" @@ -1224,8 +1230,7 @@ dependencies = [ "pulldown-cmark", "regex", "serde", - "tree-sitter", - "tree-sitter-astro", + "tree-sitter 0.22.6", "tree-sitter-css", "tree-sitter-haskell", "tree-sitter-highlight", @@ -1233,10 +1238,11 @@ dependencies = [ "tree-sitter-javascript", "tree-sitter-md", "tree-sitter-python", + "tree-sitter-query", "tree-sitter-regex", "tree-sitter-rust", - "tree-sitter-scheme", - "tree-sitter-toml", + "tree-sitter-scss", + "tree-sitter-toml-ng", "tree-sitter-typescript", "tungstenite", ] @@ -1311,18 +1317,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", @@ -1364,42 +1370,45 @@ dependencies = [ ] [[package]] -name = "tree-sitter-astro" -version = "0.0.1" -source = "git+https://github.com/virchau13/tree-sitter-astro.git?rev=e924787e12e8a03194f36a113290ac11d6dc10f3#e924787e12e8a03194f36a113290ac11d6dc10f3" +name = "tree-sitter" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df7cc499ceadd4dcdf7ec6d4cbc34ece92c3fa07821e287aedecd4416c516dca" dependencies = [ "cc", - "tree-sitter", + "regex", ] [[package]] name = "tree-sitter-css" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3306ddefa1d2681adda2613d11974ffabfbeb215e23235da6c862f3493a04fd" +checksum = "e2f806f96136762b0121f5fdd7172a3dcd8f42d37a2f23ed7f11b35895e20eb4" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-haskell" -version = "0.14.0" -source = "git+https://github.com/tree-sitter/tree-sitter-haskell?rev=1da347c88599faad7964e63facead5d163ac7dba#1da347c88599faad7964e63facead5d163ac7dba" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25a7e6c73cc1cbe0c0b7dbd5406e7b3485b370bd61c5d8d852ae0781f9bf9a" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-highlight" -version = "0.20.1" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "042342584c5a7a0b833d9fc4e2bdab3f9868ddc6c4b339a1e01451c6720868bc" +checksum = "eaca0fe34fa96eec6aaa8e63308dbe1bafe65a6317487c287f93938959b21907" dependencies = [ + "lazy_static", "regex", "thiserror", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] @@ -1409,86 +1418,96 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "017822b6bd42843c4bd67fabb834f61ce23254e866282dd93871350fd6b7fa1d" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.20.10", ] [[package]] name = "tree-sitter-javascript" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d015c02ea98b62c806f7329ff71c383286dfc3a7a7da0cc484f6e42922f73c2c" +checksum = "080880908cb6e8d03cb9ceaeecec9a3d3a2f4e122e74642509bbb22aaefd991b" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-md" -version = "0.1.7" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c20d3ef8d202430b644a307e6299d84bf8ed87fa1b796e4638f8805a595060c" +checksum = "d9c3cfd068f2527250bbd8ff407431164e12b17863e7eafb76e311dd3f96965a" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-python" -version = "0.20.4" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c93b1b1fbd0d399db3445f51fd3058e43d0b4dcff62ddbdb46e66550978aa5" +checksum = "b4066c6cf678f962f8c2c4561f205945c84834cce73d981e71392624fdc390a9" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", +] + +[[package]] +name = "tree-sitter-query" +version = "0.2.1" +source = "git+https://github.com/tree-sitter-grammars/tree-sitter-query?rev=87b1a3d#87b1a3dc6c5a76c5cedcdfc60efe75805468cb90" +dependencies = [ + "cc", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-regex" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb5a53e9c990757895476216796b170fd81e4d173d08f8b082279c4e6ff8c5c" +checksum = "5ff1286fe9651b2797484839ffa37aa76c8618d4ccb6836d7e31765dfd60c0d5" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-rust" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0832309b0b2b6d33760ce5c0e818cb47e1d72b468516bfe4134408926fa7594" +checksum = "277690f420bf90741dea984f3da038ace46c4fe6047cba57a66822226cde1c93" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] -name = "tree-sitter-scheme" +name = "tree-sitter-scss" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33909a9ca86390ebbf3461e9949c4bbe2767d2d024b486306d27616641d4ba24" +dependencies = [ + "cc", + "tree-sitter 0.22.6", +] + +[[package]] +name = "tree-sitter-toml-ng" version = "0.6.0" -source = "git+https://github.com/6cdh/tree-sitter-scheme?rev=85b6188fb77c03dfb01d13e58e2844450506860c#85b6188fb77c03dfb01d13e58e2844450506860c" -dependencies = [ - "cc", - "tree-sitter", -] - -[[package]] -name = "tree-sitter-toml" -version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca517f578a98b23d20780247cc2688407fa81effad5b627a5a364ec3339b53e8" +checksum = "695d20cd83acf16c02c773f03e76d7b43b19883d4e2ce3652a8f06b5e0da7455" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] name = "tree-sitter-typescript" -version = "0.20.5" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8bc1d2c24276a48ef097a71b56888ac9db63717e8f8d0b324668a27fd619670" +checksum = "f07523e51e3b88529360a89038c0cca7ee877db40a40141514eece8b4cddcbb4" dependencies = [ "cc", - "tree-sitter", + "tree-sitter 0.22.6", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e696ef0..8f8eed5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [dependencies] camino = "1.1.6" chrono = "0.4.35" +clap = { version = "4.5.4", features = ["derive"] } emojis = "0.6.1" glob = "0.3.1" grass = { version = "0.13.2", default-features = false, features = ["random"] } @@ -26,20 +27,20 @@ tungstenite = "0.21.0" pulldown-cmark = { git = "https://github.com/pulldown-cmark/pulldown-cmark.git", branch = "branch_0.11" } # Treesitter -tree-sitter = "0.20" -tree-sitter-highlight = "0.20" +tree-sitter = "0.22" +tree-sitter-highlight = "0.22" # Treesitter languages -tree-sitter-astro = { git = "https://github.com/virchau13/tree-sitter-astro.git", rev = "e924787e12e8a03194f36a113290ac11d6dc10f3" } -tree-sitter-css = "0.20.0" -tree-sitter-haskell = { git = "https://github.com/tree-sitter/tree-sitter-haskell", rev = "1da347c88599faad7964e63facead5d163ac7dba" } +# tree-sitter-astro = { git = "https://github.com/virchau13/tree-sitter-astro.git", rev = "e924787e12e8a03194f36a113290ac11d6dc10f3" } +tree-sitter-css = "0.21" +tree-sitter-haskell = "0.21" tree-sitter-html = "0.20" -tree-sitter-javascript = "0.20" -tree-sitter-md = "0.1" -tree-sitter-python = "0.20" -tree-sitter-regex = "0.20" -tree-sitter-rust = "0.20" -tree-sitter-scheme = { git = "https://github.com/6cdh/tree-sitter-scheme", rev = "85b6188fb77c03dfb01d13e58e2844450506860c" } -tree-sitter-toml = "0.20" -tree-sitter-typescript = "0.20" -clap = { version = "4.5.4", features = ["derive"] } +tree-sitter-javascript = "0.21" +tree-sitter-md = "0.2" +tree-sitter-python = "0.21" +tree-sitter-regex = "0.21" +tree-sitter-rust = "0.21" +tree-sitter-scss = "1" +tree-sitter-query = { git = "https://github.com/tree-sitter-grammars/tree-sitter-query", rev = "87b1a3d" } +tree-sitter-toml-ng = "0.6" +tree-sitter-typescript = "0.21" diff --git a/src/ts/configs.rs b/src/ts/configs.rs index 416f8fd..e39d363 100644 --- a/src/ts/configs.rs +++ b/src/ts/configs.rs @@ -1,6 +1,5 @@ use std::collections::HashMap; use once_cell::sync::Lazy; -use tree_sitter::Language; use tree_sitter_highlight::HighlightConfiguration; use super::captures; @@ -17,6 +16,19 @@ macro_rules! query { }; } +macro_rules! language { + ($name:expr, $lang:expr, $highlights:expr, $injections:expr, $locals:expr $(,)?) => { + ( + $name, + { + let mut config = HighlightConfiguration::new($lang, $name, $highlights, $injections, $locals).unwrap(); + config.configure(captures::NAMES); + config + } + ) + }; +} + pub static EXTENSIONS: Lazy> = Lazy::new(|| { HashMap::from([ ("hs", "haskell"), @@ -24,174 +36,148 @@ pub static EXTENSIONS: Lazy> = Lazy::new(|| ("md", "markdown"), ("mdx", "markdown"), ("py", "python"), - ("query", "scheme"), ("scm", "scheme"), - ("scss", "css"), ("ts", "javascript"), ("typescript", "javascript") ]) }); -#[inline(always)] -fn config_for( - lang: Language, - highlights: &str, - injections: &str, - locals: &str, -) -> HighlightConfiguration { - let mut config = HighlightConfiguration::new(lang, highlights, injections, locals).unwrap(); - config.configure(captures::NAMES); - config -} pub static CONFIGS: Lazy> = Lazy::new(|| { HashMap::from([ - ( - "astro", - config_for( - tree_sitter_astro::language(), - query!("astro/highlights"), - query!("astro/injections"), - "", - ) - ), - ( + // ( + // "astro", + // config_for( + // tree_sitter_astro::language(), + // query!("astro/highlights"), + // query!("astro/injections"), + // "", + // ) + // ), + language!( "css", - config_for( - tree_sitter_css::language(), - query!("css/highlights"), - "", - "", - ) + tree_sitter_css::language(), + tree_sitter_css::HIGHLIGHTS_QUERY, + "", + "", ), - ( + language!( "haskell", - config_for( - tree_sitter_haskell::language(), - tree_sitter_haskell::HIGHLIGHTS_QUERY, - "", - tree_sitter_haskell::LOCALS_QUERY, - ) + tree_sitter_haskell::language(), + tree_sitter_haskell::HIGHLIGHTS_QUERY, + "", + tree_sitter_haskell::LOCALS_QUERY, ), - ( - "html", - config_for( - tree_sitter_html::language(), - tree_sitter_html::HIGHLIGHTS_QUERY, - tree_sitter_html::INJECTIONS_QUERY, - "", - ) - ), - ( + // ( + // "html", + // config_for( + // tree_sitter_html::language(), + // "html", + // tree_sitter_html::HIGHLIGHTS_QUERY, + // tree_sitter_html::INJECTIONS_QUERY, + // "", + // ) + // ), + language!( "javascript", - config_for( - tree_sitter_javascript::language(), - &format!("{} {}", - query!("ecma/highlights"), - tree_sitter_javascript::HIGHLIGHT_QUERY, - ), - tree_sitter_javascript::INJECTION_QUERY, - tree_sitter_javascript::LOCALS_QUERY, - ) + tree_sitter_javascript::language(), + &format!("{} {}", + query!("ecma/highlights"), + tree_sitter_javascript::HIGHLIGHT_QUERY, + ), + tree_sitter_javascript::INJECTIONS_QUERY, + tree_sitter_javascript::LOCALS_QUERY, ), - ( + language!( "jsx", - config_for( - tree_sitter_javascript::language(), - &format!("{} {} {}", - query!("ecma/highlights"), - tree_sitter_javascript::HIGHLIGHT_QUERY, - tree_sitter_javascript::JSX_HIGHLIGHT_QUERY, - ), - tree_sitter_javascript::INJECTION_QUERY, - tree_sitter_javascript::LOCALS_QUERY, - ) + tree_sitter_javascript::language(), + &format!("{} {} {}", + query!("ecma/highlights"), + tree_sitter_javascript::HIGHLIGHT_QUERY, + tree_sitter_javascript::JSX_HIGHLIGHT_QUERY, + ), + tree_sitter_javascript::INJECTIONS_QUERY, + tree_sitter_javascript::LOCALS_QUERY, ), - ( + language!( "markdown", - config_for( - tree_sitter_md::language(), - tree_sitter_md::HIGHLIGHT_QUERY_BLOCK, - tree_sitter_md::INJECTION_QUERY_BLOCK, - "", - ) + tree_sitter_md::language(), + tree_sitter_md::HIGHLIGHT_QUERY_BLOCK, + tree_sitter_md::INJECTION_QUERY_BLOCK, + "", ), - ( + language!( "python", - config_for( - tree_sitter_python::language(), - tree_sitter_python::HIGHLIGHT_QUERY, - "", - "", - ) + tree_sitter_python::language(), + tree_sitter_python::HIGHLIGHTS_QUERY, + "", + "", ), - ( + language!( "regex", - config_for( - tree_sitter_regex::language(), - query!("regex/highlights"), - "", - "", - ) + tree_sitter_regex::language(), + query!("regex/highlights"), + "", + "", ), - ( + language!( "rust", - config_for( - tree_sitter_rust::language(), - tree_sitter_rust::HIGHLIGHT_QUERY, - tree_sitter_rust::INJECTIONS_QUERY, - "", - ) + tree_sitter_rust::language(), + tree_sitter_rust::HIGHLIGHTS_QUERY, + tree_sitter_rust::INJECTIONS_QUERY, + "", ), - ( - "scheme", - config_for( - tree_sitter_scheme::language(), - tree_sitter_scheme::HIGHLIGHTS_QUERY, - "", - "", - ) + language!( + "scss", + tree_sitter_scss::language(), + &format!("{} {}", + tree_sitter_css::HIGHLIGHTS_QUERY, + tree_sitter_scss::HIGHLIGHTS_QUERY, + ), + "", + "", ), - ( + language!( + "query", + tree_sitter_query::language(), + tree_sitter_query::HIGHLIGHTS_QUERY, + "", + "", + ), + language!( "toml", - config_for( - tree_sitter_toml::language(), - tree_sitter_toml::HIGHLIGHT_QUERY, - "", - "", - ) + tree_sitter_toml_ng::language(), + tree_sitter_toml_ng::HIGHLIGHTS_QUERY, + "", + "", ), - ( + language!( "typescript", - config_for( - tree_sitter_typescript::language_typescript(), - &format!("{} {} {}", - query!("ecma/highlights"), - tree_sitter_javascript::HIGHLIGHT_QUERY, - tree_sitter_typescript::HIGHLIGHT_QUERY, - ), - tree_sitter_javascript::INJECTION_QUERY, - &format!("{} {}", - tree_sitter_javascript::LOCALS_QUERY, - tree_sitter_typescript::LOCALS_QUERY - ), + tree_sitter_typescript::language_typescript(), + &format!("{} {} {}", + query!("ecma/highlights"), + tree_sitter_javascript::HIGHLIGHT_QUERY, + tree_sitter_typescript::HIGHLIGHTS_QUERY, + ), + tree_sitter_javascript::INJECTIONS_QUERY, + &format!("{} {}", + tree_sitter_javascript::LOCALS_QUERY, + tree_sitter_typescript::LOCALS_QUERY, ) ), - ( + language!( "tsx", - config_for( - tree_sitter_typescript::language_tsx(), - &format!("{} {} {} {}", - query!("ecma/highlights"), - tree_sitter_javascript::HIGHLIGHT_QUERY, - tree_sitter_javascript::JSX_HIGHLIGHT_QUERY, - tree_sitter_typescript::HIGHLIGHT_QUERY, - ), - tree_sitter_javascript::INJECTION_QUERY, - &format!("{} {}", - tree_sitter_javascript::LOCALS_QUERY, - tree_sitter_typescript::LOCALS_QUERY - ) + tree_sitter_typescript::language_tsx(), + &format!("{} {} {} {}", + query!("ecma/highlights"), + tree_sitter_javascript::HIGHLIGHT_QUERY, + tree_sitter_javascript::JSX_HIGHLIGHT_QUERY, + tree_sitter_typescript::HIGHLIGHTS_QUERY, + ), + tree_sitter_javascript::INJECTIONS_QUERY, + &format!("{} {}", + tree_sitter_javascript::LOCALS_QUERY, + tree_sitter_typescript::LOCALS_QUERY, ) ), ])