Add support for Scheme

pull/640/head
Panagiotis Koutsourakis 2024-02-12 10:20:57 +07:00
parent 1dc45d84c6
commit 67ada1ccd4
9 changed files with 37 additions and 0 deletions

@ -306,6 +306,11 @@ fn main() {
src_dir: "vendored_parsers/tree-sitter-scala-src",
extra_files: vec!["scanner.c"],
},
TreeSitterParser {
name: "tree-sitter-scheme",
src_dir: "vendored_parsers/tree-sitter-scheme-src",
extra_files: vec![],
},
TreeSitterParser {
name: "tree-sitter-scss",
src_dir: "vendored_parsers/tree-sitter-scss-src",

@ -47,6 +47,7 @@ with `difft --list-languages`.
| Ruby | [tree-sitter/tree-sitter-ruby](https://github.com/tree-sitter/tree-sitter-ruby) |
| Rust | [tree-sitter/tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) |
| Scala | [tree-sitter/tree-sitter-scala](https://github.com/tree-sitter/tree-sitter-scala) |
| Scheme | [6cdh/tree-sitter-scheme](https://github.com/6cdh/tree-sitter-scheme) |
| Solidity | [JoranHonig/tree-sitter-solidity](https://github.com/JoranHonig/tree-sitter-solidity) |
| SQL | [m-novikov/tree-sitter-sql](https://github.com/m-novikov/tree-sitter-sql) |
| Swift | [alex-pinkus/tree-sitter-swift](https://github.com/alex-pinkus/tree-sitter-swift) |

@ -202,6 +202,9 @@ e690af6874c954b271ef7ea8eb1d8af1 -
sample_files/scala_before.scala sample_files/scala_after.scala
8b2d6102b120d4a0de790c33409eedc3 -
sample_files/scheme_before.scm sample_files/scheme_after.scm
d00fcfe46aca3e2877bda566f1a3908b -
sample_files/simple_before.js sample_files/simple_after.js
c9c5d1c61b7e8a953a361343bcd13c95 -

@ -0,0 +1,3 @@
|# A block comment before a simple function, but changed. #|
(define (sub x y) ; This function returns the difference of its arguments
(- x y))

@ -0,0 +1,3 @@
|# A block comment before a very simple function. #|
(define (add x y) ; This function returns the sum of its arguments
(+ x y))

@ -66,6 +66,7 @@ pub(crate) enum Language {
Ruby,
Rust,
Scala,
Scheme,
Scss,
Solidity,
Sql,
@ -155,6 +156,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
Ruby => "Ruby",
Rust => "Rust",
Scala => "Scala",
Scheme => "Scheme",
Scss => "SCSS",
Solidity => "Solidity",
Sql => "SQL",
@ -341,6 +343,7 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
],
Rust => &["*.rs"],
Scala => &["*.scala", "*.sbt", "*.sc"],
Scheme => &["*.scm"],
Scss => &["*.scss"],
Solidity => &["*.sol"],
Sql => &["*.sql", "*.pgsql"],

@ -107,6 +107,7 @@ extern "C" {
fn tree_sitter_ruby() -> ts::Language;
fn tree_sitter_rust() -> ts::Language;
fn tree_sitter_scala() -> ts::Language;
fn tree_sitter_scheme() -> ts::Language;
fn tree_sitter_scss() -> ts::Language;
fn tree_sitter_solidity() -> ts::Language;
fn tree_sitter_sql() -> ts::Language;
@ -962,6 +963,22 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
sub_languages: vec![],
}
}
Scheme => {
let language = unsafe { tree_sitter_scheme() };
TreeSitterConfig {
language,
atom_nodes: vec!["block_comment", "comment", "string"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
include_str!("../../vendored_parsers/highlights/scheme.scm"),
)
.unwrap(),
sub_languages: vec![],
}
}
Scss => {
let language = unsafe { tree_sitter_scss() };
TreeSitterConfig {

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

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