Add tree-sitter-gdscript

pull/904/head
fish 2025-10-13 14:16:17 +07:00
parent 7b26247ec5
commit 6301ddf030
4 changed files with 21 additions and 0 deletions

@ -87,6 +87,11 @@ fn main() {
src_dir: "vendored_parsers/tree-sitter-elvish-src",
extra_files: vec![],
},
TreeSitterParser {
name: "tree-sitter-gdscript",
src_dir: "vendored_parsers/tree-sitter-gdscript-src",
extra_files: vec!["scanner.c"],
},
TreeSitterParser {
name: "tree-sitter-hack",
src_dir: "vendored_parsers/tree-sitter-hack-src",

@ -36,6 +36,7 @@ pub(crate) enum Language {
EmacsLisp,
Erlang,
FSharp,
GDScript,
Gleam,
Go,
Hack,
@ -137,6 +138,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
EmacsLisp => "Emacs Lisp",
Erlang => "Erlang",
FSharp => "F#",
GDScript => "GDScript",
Gleam => "Gleam",
Go => "Go",
Hack => "Hack",
@ -280,6 +282,7 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
"rebar.lock",
],
FSharp => &["*.fs", "*.fsx", "*.fsi"],
GDScript => &["*.gd"],
Gleam => &["*.gleam"],
Go => &["*.go"],
Hack => &["*.hack", "*.hck", "*.hhi"],

@ -73,6 +73,7 @@ extern "C" {
fn tree_sitter_commonlisp() -> ts::Language;
fn tree_sitter_elisp() -> ts::Language;
fn tree_sitter_elvish() -> ts::Language;
fn tree_sitter_gdscript() -> ts::Language;
fn tree_sitter_hare() -> ts::Language;
fn tree_sitter_hack() -> ts::Language;
fn tree_sitter_janet_simple() -> ts::Language;
@ -389,6 +390,17 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
sub_languages: vec![],
}
}
GDScript => {
let language = unsafe { tree_sitter_gdscript() };
TreeSitterConfig {
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
highlight_query: ts::Query::new(&language, "")
.unwrap(),
sub_languages: vec![],
}
}
Gleam => {
let language_fn = tree_sitter_gleam::LANGUAGE;
let language = tree_sitter::Language::new(language_fn);

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