treesitter: add ocaml
This commit is contained in:
parent
be2963d931
commit
618925d8ef
22
Cargo.lock
generated
22
Cargo.lock
generated
|
@ -988,6 +988,8 @@ dependencies = [
|
|||
"tree-sitter-html",
|
||||
"tree-sitter-javascript",
|
||||
"tree-sitter-language",
|
||||
"tree-sitter-md",
|
||||
"tree-sitter-ocaml",
|
||||
"tree-sitter-python",
|
||||
"tree-sitter-regex",
|
||||
"tree-sitter-rust",
|
||||
|
@ -1788,6 +1790,26 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2545046bd1473dac6c626659cc2567c6c0ff302fc8b84a56c4243378276f7f57"
|
||||
|
||||
[[package]]
|
||||
name = "tree-sitter-md"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17f968c22a01010b83fc960455ae729db08dbeb6388617d9113897cb9204b030"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"tree-sitter-language",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tree-sitter-ocaml"
|
||||
version = "0.23.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0534f94f006cf4d4994e964212e91d4626efcaf6769b023d3f17530399a4d6e1"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"tree-sitter-language",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tree-sitter-python"
|
||||
version = "0.23.2"
|
||||
|
|
|
@ -34,8 +34,9 @@ tree-sitter-css = "0.23"
|
|||
tree-sitter-haskell = "0.23"
|
||||
tree-sitter-html = "0.23"
|
||||
tree-sitter-javascript = "0.23"
|
||||
# tree-sitter-md = "0.2"
|
||||
tree-sitter-md = "0.3"
|
||||
# tree-sitter-nix = { package = "npezza93-tree-sitter-nix", version = "0.0.2" }
|
||||
tree-sitter-ocaml = "0.23.1"
|
||||
tree-sitter-python = "0.23"
|
||||
tree-sitter-regex = "0.23"
|
||||
tree-sitter-rust = "0.23"
|
||||
|
|
|
@ -1,25 +1,24 @@
|
|||
use std::collections::HashMap;
|
||||
use once_cell::sync::Lazy;
|
||||
use std::collections::HashMap;
|
||||
use tree_sitter_highlight::HighlightConfiguration;
|
||||
|
||||
use super::captures;
|
||||
|
||||
|
||||
macro_rules! query {
|
||||
($path:literal) => {
|
||||
include_str!(concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/queries/",
|
||||
$path,
|
||||
".scm"
|
||||
))
|
||||
};
|
||||
($path:literal) => {
|
||||
include_str!(concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/queries/",
|
||||
$path,
|
||||
".scm"
|
||||
))
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! insert {
|
||||
($_:tt $str:literal) => {
|
||||
$str
|
||||
};
|
||||
($_:tt $str:literal) => {
|
||||
$str
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! merge {
|
||||
|
@ -29,192 +28,194 @@ macro_rules! merge {
|
|||
}
|
||||
|
||||
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
|
||||
}
|
||||
)
|
||||
};
|
||||
($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
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
static EXTENSIONS: Lazy<HashMap<&'static str, &'static str>> = Lazy::new(||
|
||||
HashMap::from([
|
||||
("hs", "haskell"),
|
||||
("js", "javascript"),
|
||||
("md", "markdown"),
|
||||
("mdx", "markdown"),
|
||||
("py", "python"),
|
||||
("scm", "scheme"),
|
||||
("ts", "typescript"),
|
||||
("typescript", "javascript")
|
||||
])
|
||||
);
|
||||
|
||||
static CONFIGS: Lazy<HashMap<&'static str, HighlightConfiguration>> = Lazy::new(||
|
||||
HashMap::from([
|
||||
// (
|
||||
// "astro",
|
||||
// config_for(
|
||||
// tree_sitter_astro::language(),
|
||||
// query!("astro/highlights"),
|
||||
// query!("astro/injections"),
|
||||
// "",
|
||||
// )
|
||||
// ),
|
||||
language!(
|
||||
"css",
|
||||
tree_sitter_css::LANGUAGE.into(),
|
||||
tree_sitter_css::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"haskell",
|
||||
tree_sitter_haskell::LANGUAGE.into(),
|
||||
tree_sitter_haskell::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_haskell::INJECTIONS_QUERY,
|
||||
tree_sitter_haskell::LOCALS_QUERY,
|
||||
),
|
||||
language!(
|
||||
"html",
|
||||
tree_sitter_html::LANGUAGE.into(),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"javascript",
|
||||
tree_sitter_javascript::LANGUAGE.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
),
|
||||
language!(
|
||||
"jsx",
|
||||
tree_sitter_javascript::LANGUAGE.into(),
|
||||
merge![
|
||||
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",
|
||||
// tree_sitter_md::language(),
|
||||
// tree_sitter_md::HIGHLIGHT_QUERY_BLOCK,
|
||||
// tree_sitter_md::INJECTION_QUERY_BLOCK,
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "markdown_inline",
|
||||
// tree_sitter_md::inline_language(),
|
||||
// tree_sitter_md::HIGHLIGHT_QUERY_INLINE,
|
||||
// tree_sitter_md::INJECTION_QUERY_INLINE,
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "nix",
|
||||
// tree_sitter_nix::language(),
|
||||
// tree_sitter_nix::HIGHLIGHTS_QUERY,
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
language!(
|
||||
"python",
|
||||
tree_sitter_python::LANGUAGE.into(),
|
||||
tree_sitter_python::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"regex",
|
||||
tree_sitter_regex::LANGUAGE.into(),
|
||||
tree_sitter_regex::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"rust",
|
||||
tree_sitter_rust::LANGUAGE.into(),
|
||||
tree_sitter_rust::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_rust::INJECTIONS_QUERY,
|
||||
"",
|
||||
),
|
||||
// language!(
|
||||
// "scss",
|
||||
// tree_sitter_scss::,
|
||||
// merge![
|
||||
// tree_sitter_css::HIGHLIGHTS_QUERY,
|
||||
// tree_sitter_scss::HIGHLIGHTS_QUERY,
|
||||
// ],
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "query",
|
||||
// tree_sitter_query::language(),
|
||||
// tree_sitter_query::HIGHLIGHTS_QUERY,
|
||||
// tree_sitter_query::INJECTIONS_QUERY,
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "toml",
|
||||
// tree_sitter_toml_ng::language(),
|
||||
// tree_sitter_toml_ng::HIGHLIGHTS_QUERY,
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
language!(
|
||||
"typescript",
|
||||
tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_typescript::HIGHLIGHTS_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
merge![
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
tree_sitter_typescript::LOCALS_QUERY,
|
||||
]
|
||||
),
|
||||
language!(
|
||||
"tsx",
|
||||
tree_sitter_typescript::LANGUAGE_TSX.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_javascript::JSX_HIGHLIGHT_QUERY,
|
||||
tree_sitter_typescript::HIGHLIGHTS_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
merge![
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
tree_sitter_typescript::LOCALS_QUERY,
|
||||
],
|
||||
),
|
||||
])
|
||||
);
|
||||
static EXTENSIONS: Lazy<HashMap<&'static str, &'static str>> = Lazy::new(|| {
|
||||
HashMap::from([
|
||||
("hs", "haskell"),
|
||||
("js", "javascript"),
|
||||
("md", "markdown"),
|
||||
("mdx", "markdown"),
|
||||
("ml", "ocaml"),
|
||||
("mli", "ocaml_interface"),
|
||||
("py", "python"),
|
||||
("scm", "scheme"),
|
||||
("ts", "typescript"),
|
||||
("typescript", "javascript"),
|
||||
])
|
||||
});
|
||||
|
||||
static CONFIGS: Lazy<HashMap<&'static str, HighlightConfiguration>> = Lazy::new(|| {
|
||||
HashMap::from([
|
||||
// (
|
||||
// "astro",
|
||||
// config_for(
|
||||
// tree_sitter_astro::language(),
|
||||
// query!("astro/highlights"),
|
||||
// query!("astro/injections"),
|
||||
// "",
|
||||
// )
|
||||
// ),
|
||||
language!(
|
||||
"css",
|
||||
tree_sitter_css::LANGUAGE.into(),
|
||||
tree_sitter_css::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"haskell",
|
||||
tree_sitter_haskell::LANGUAGE.into(),
|
||||
tree_sitter_haskell::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_haskell::INJECTIONS_QUERY,
|
||||
tree_sitter_haskell::LOCALS_QUERY,
|
||||
),
|
||||
language!("html", tree_sitter_html::LANGUAGE.into(), "", "", "",),
|
||||
language!(
|
||||
"javascript",
|
||||
tree_sitter_javascript::LANGUAGE.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
),
|
||||
language!(
|
||||
"jsx",
|
||||
tree_sitter_javascript::LANGUAGE.into(),
|
||||
merge![
|
||||
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",
|
||||
tree_sitter_md::LANGUAGE.into(),
|
||||
tree_sitter_md::HIGHLIGHT_QUERY_BLOCK,
|
||||
tree_sitter_md::INJECTION_QUERY_BLOCK,
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"markdown_inline",
|
||||
tree_sitter_md::INLINE_LANGUAGE.into(),
|
||||
tree_sitter_md::HIGHLIGHT_QUERY_INLINE,
|
||||
tree_sitter_md::INJECTION_QUERY_INLINE,
|
||||
"",
|
||||
),
|
||||
// language!(
|
||||
// "nix",
|
||||
// tree_sitter_nix::language(),
|
||||
// tree_sitter_nix::HIGHLIGHTS_QUERY,
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
language!(
|
||||
"ocaml",
|
||||
tree_sitter_ocaml::LANGUAGE_OCAML.into(),
|
||||
tree_sitter_ocaml::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_ocaml::LOCALS_QUERY,
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"ocaml_interface",
|
||||
tree_sitter_ocaml::LANGUAGE_OCAML_INTERFACE.into(),
|
||||
tree_sitter_ocaml::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_ocaml::LOCALS_QUERY,
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"python",
|
||||
tree_sitter_python::LANGUAGE.into(),
|
||||
tree_sitter_python::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"regex",
|
||||
tree_sitter_regex::LANGUAGE.into(),
|
||||
tree_sitter_regex::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
language!(
|
||||
"rust",
|
||||
tree_sitter_rust::LANGUAGE.into(),
|
||||
tree_sitter_rust::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_rust::INJECTIONS_QUERY,
|
||||
"",
|
||||
),
|
||||
// language!(
|
||||
// "scss",
|
||||
// tree_sitter_scss::,
|
||||
// merge![
|
||||
// tree_sitter_css::HIGHLIGHTS_QUERY,
|
||||
// tree_sitter_scss::HIGHLIGHTS_QUERY,
|
||||
// ],
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "query",
|
||||
// tree_sitter_query::language(),
|
||||
// tree_sitter_query::HIGHLIGHTS_QUERY,
|
||||
// tree_sitter_query::INJECTIONS_QUERY,
|
||||
// "",
|
||||
// ),
|
||||
// language!(
|
||||
// "toml",
|
||||
// tree_sitter_toml_ng::language(),
|
||||
// tree_sitter_toml_ng::HIGHLIGHTS_QUERY,
|
||||
// "",
|
||||
// "",
|
||||
// ),
|
||||
language!(
|
||||
"typescript",
|
||||
tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_typescript::HIGHLIGHTS_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
merge![
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
tree_sitter_typescript::LOCALS_QUERY,
|
||||
]
|
||||
),
|
||||
language!(
|
||||
"tsx",
|
||||
tree_sitter_typescript::LANGUAGE_TSX.into(),
|
||||
merge![
|
||||
query!("ecma/highlights"),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_javascript::JSX_HIGHLIGHT_QUERY,
|
||||
tree_sitter_typescript::HIGHLIGHTS_QUERY,
|
||||
],
|
||||
tree_sitter_javascript::INJECTIONS_QUERY,
|
||||
merge![
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
tree_sitter_typescript::LOCALS_QUERY,
|
||||
],
|
||||
),
|
||||
])
|
||||
});
|
||||
|
||||
pub fn get_config(name: &str) -> Option<&'static HighlightConfiguration> {
|
||||
match EXTENSIONS.get(name) {
|
||||
Some(name) => CONFIGS.get(name),
|
||||
None => CONFIGS.get(name),
|
||||
}
|
||||
match EXTENSIONS.get(name) {
|
||||
Some(name) => CONFIGS.get(name),
|
||||
None => CONFIGS.get(name),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue