Add Julia support

Fixes #284
pull/315/head
Wilfred Hughes 2022-07-04 15:50:28 +07:00
parent 9c19905c22
commit 970fd7f9d3
4 changed files with 26 additions and 1 deletions

@ -164,6 +164,11 @@ fn main() {
src_dir: "vendor/tree-sitter-json-src",
extra_files: vec![],
},
TreeSitterParser {
name: "tree-sitter-julia",
src_dir: "vendor/tree-sitter-julia-src",
extra_files: vec!["scanner.c"],
},
TreeSitterParser {
name: "tree-sitter-kotlin",
src_dir: "vendor/tree-sitter-kotlin-src",

@ -64,7 +64,7 @@ fn prefer_outer_delimiter(language: guess_language::Language) -> bool {
// languages have syntax like `foo(bar)` or `foo[bar]` where
// the inner delimiter is more relevant.
Bash | C | CPlusPlus | CSharp | Css | Dart | Elixir | Elm | Elvish | Gleam | Go
| Haskell | Html | Java | JavaScript | Jsx | Kotlin | Lua | Nix | OCaml
| Haskell | Html | Java | JavaScript | Jsx | Julia | Kotlin | Lua | Nix | OCaml
| OCamlInterface | Perl | Php | Python | Ruby | Rust | Scala | Swift | Tsx | TypeScript
| Yaml | Zig => false,
}

@ -39,6 +39,7 @@ pub enum Language {
Java,
JavaScript,
Json,
Julia,
Jsx,
Kotlin,
Lua,
@ -232,6 +233,7 @@ pub fn from_extension(extension: &OsStr) -> Option<Language> {
| "mcmeta" | "tfstate" | "tfstate.backup" | "topojson" | "webapp" | "webmanifest" => {
Some(Json)
}
"jl" => Some(Julia),
"kt" | "ktm" | "kts" => Some(Kotlin),
"lua" => Some(Lua),
"nix" => Some(Nix),

@ -64,6 +64,7 @@ extern "C" {
fn tree_sitter_java() -> ts::Language;
fn tree_sitter_javascript() -> ts::Language;
fn tree_sitter_json() -> ts::Language;
fn tree_sitter_julia() -> ts::Language;
fn tree_sitter_kotlin() -> ts::Language;
fn tree_sitter_lua() -> ts::Language;
fn tree_sitter_nix() -> ts::Language;
@ -445,6 +446,23 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.unwrap(),
}
}
Julia => {
let language = unsafe { tree_sitter_julia() };
TreeSitterConfig {
name: "Julia",
language,
atom_nodes: vec![
"string_literal",
"prefixed_string_literal",
"command_literal",
"character_literal",
]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
highlight_query: ts::Query::new(language, "").unwrap(),
}
}
Kotlin => {
let language = unsafe { tree_sitter_kotlin() };
TreeSitterConfig {