Add support for Hare

pull/369/head
Ember Sawady 2022-09-10 15:47:20 +07:00
parent 6015c77a99
commit 7ed685ae52
8 changed files with 46 additions and 0 deletions

@ -202,6 +202,11 @@ fn main() {
src_dir: "vendor/tree-sitter-hack-src",
extra_files: vec!["scanner.cc"],
},
TreeSitterParser {
name: "tree-sitter-hare",
src_dir: "vendor/tree-sitter-hare-src",
extra_files: vec![],
},
TreeSitterParser {
name: "tree-sitter-haskell",
src_dir: "vendor/tree-sitter-haskell-src",

@ -46,6 +46,9 @@ bfb410815de1fb0fd47fa078fbd8e329 -
sample_files/hack_before.php sample_files/hack_after.php
50babcb945cf3b3ba12d5481a1bf8ccf -
sample_files/hare_before.ha sample_files/hare_after.ha
8edc2f3ae2eaeba7bcf328ed00398767 -
sample_files/haskell_before.hs sample_files/haskell_after.hs
324d1c9b2a04133a75b1975272ffb6ad -

@ -0,0 +1,14 @@
use fmt;
export fn main() void = {
const greetings = [
"Hello, world!",
"¡Hola Mundo!",
"Γειά σου Κόσμε!",
"Привет, мир!",
"こんにちは世界!",
];
for (let i = 0z; i < len(greetings); i += 1) {
fmt::println(greetings[i])!;
};
};

@ -0,0 +1,5 @@
use fmt;
export fn main() void = {
fmt::println("Hello, world!");
};

@ -34,6 +34,7 @@ pub enum Language {
Gleam,
Go,
Hack,
Hare,
Haskell,
Hcl,
Html,
@ -85,6 +86,7 @@ pub fn language_name(language: Language) -> &'static str {
Gleam => "Gleam",
Go => "Go",
Hack => "Hack",
Hare => "Hare",
Haskell => "Haskell",
Hcl => "HCL",
Html => "HTML",
@ -149,6 +151,7 @@ pub const LANG_EXTENSIONS: &'static [(Language, &[&str])] = &[
(Gleam, &["gleam"]),
(Go, &["go"]),
(Hack, &["hack", "hck", "hhi"]),
(Hare, &["ha"]),
(Haskell, &["hs"]),
(Hcl, &["hcl", "nomad", "tf", "tfvars", "workflow"]),
(Html, &["html", "htm", "xhtml"]),

@ -55,6 +55,7 @@ extern "C" {
fn tree_sitter_elvish() -> ts::Language;
fn tree_sitter_gleam() -> ts::Language;
fn tree_sitter_go() -> ts::Language;
fn tree_sitter_hare() -> ts::Language;
fn tree_sitter_hack() -> ts::Language;
fn tree_sitter_haskell() -> ts::Language;
fn tree_sitter_hcl() -> ts::Language;
@ -327,6 +328,19 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.unwrap(),
}
}
Hare => {
let language = unsafe { tree_sitter_hare() };
TreeSitterConfig {
language,
atom_nodes: vec!["string_constant", "rune_constant"].into_iter().collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")"), ("{", "}")],
highlight_query: ts::Query::new(
language,
include_str!("../../vendor/highlights/hare.scm"),
)
.unwrap(),
}
}
Haskell => {
let language = unsafe { tree_sitter_haskell() };
TreeSitterConfig {

@ -0,0 +1 @@
../tree-sitter-hare/queries/highlights.scm

@ -0,0 +1 @@
tree-sitter-hare/src/