Skip to content

Commit 6301ddf

Browse files
committed
Add tree-sitter-gdscript
1 parent 7b26247 commit 6301ddf

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

build.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ fn main() {
8787
src_dir: "vendored_parsers/tree-sitter-elvish-src",
8888
extra_files: vec![],
8989
},
90+
TreeSitterParser {
91+
name: "tree-sitter-gdscript",
92+
src_dir: "vendored_parsers/tree-sitter-gdscript-src",
93+
extra_files: vec!["scanner.c"],
94+
},
9095
TreeSitterParser {
9196
name: "tree-sitter-hack",
9297
src_dir: "vendored_parsers/tree-sitter-hack-src",

src/parse/guess_language.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pub(crate) enum Language {
3636
EmacsLisp,
3737
Erlang,
3838
FSharp,
39+
GDScript,
3940
Gleam,
4041
Go,
4142
Hack,
@@ -137,6 +138,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
137138
EmacsLisp => "Emacs Lisp",
138139
Erlang => "Erlang",
139140
FSharp => "F#",
141+
GDScript => "GDScript",
140142
Gleam => "Gleam",
141143
Go => "Go",
142144
Hack => "Hack",
@@ -280,6 +282,7 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
280282
"rebar.lock",
281283
],
282284
FSharp => &["*.fs", "*.fsx", "*.fsi"],
285+
GDScript => &["*.gd"],
283286
Gleam => &["*.gleam"],
284287
Go => &["*.go"],
285288
Hack => &["*.hack", "*.hck", "*.hhi"],

src/parse/tree_sitter_parser.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ extern "C" {
7373
fn tree_sitter_commonlisp() -> ts::Language;
7474
fn tree_sitter_elisp() -> ts::Language;
7575
fn tree_sitter_elvish() -> ts::Language;
76+
fn tree_sitter_gdscript() -> ts::Language;
7677
fn tree_sitter_hare() -> ts::Language;
7778
fn tree_sitter_hack() -> ts::Language;
7879
fn tree_sitter_janet_simple() -> ts::Language;
@@ -389,6 +390,17 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
389390
sub_languages: vec![],
390391
}
391392
}
393+
GDScript => {
394+
let language = unsafe { tree_sitter_gdscript() };
395+
TreeSitterConfig {
396+
language: language.clone(),
397+
atom_nodes: vec![].into_iter().collect(),
398+
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
399+
highlight_query: ts::Query::new(&language, "")
400+
.unwrap(),
401+
sub_languages: vec![],
402+
}
403+
}
392404
Gleam => {
393405
let language_fn = tree_sitter_gleam::LANGUAGE;
394406
let language = tree_sitter::Language::new(language_fn);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
tree-sitter-gdscript/src/

0 commit comments

Comments
 (0)