pull/847/merge
Marcel 2025-12-08 16:56:04 +07:00 committed by GitHub
commit 419b10de01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 0 deletions

11
Cargo.lock generated

@ -289,6 +289,7 @@ dependencies = [
"tree-sitter-elixir",
"tree-sitter-elm",
"tree-sitter-erlang",
"tree-sitter-fish",
"tree-sitter-fsharp",
"tree-sitter-gleam",
"tree-sitter-go",
@ -1164,6 +1165,16 @@ dependencies = [
"tree-sitter-language",
]
[[package]]
name = "tree-sitter-fish"
version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "014e3b299f251e9c2e372e3b5e1b0323ef21196e9aa2e90a5bc1f6130cbe8b18"
dependencies = [
"cc",
"tree-sitter",
]
[[package]]
name = "tree-sitter-fsharp"
version = "0.1.0"

@ -90,6 +90,7 @@ tree-sitter-elisp = "1.6.1"
tree-sitter-elixir = "0.3.4"
tree-sitter-elm = "5.8.0"
tree-sitter-erlang = "0.13.0"
tree-sitter-fish = "3.6.0"
tree-sitter-fsharp = "0.1.0"
tree-sitter-gleam = "1.0.0"
tree-sitter-go = "0.23.4"

@ -35,6 +35,7 @@ pub(crate) enum Language {
Elvish,
EmacsLisp,
Erlang,
Fish,
FSharp,
Gleam,
Go,
@ -136,6 +137,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
Elvish => "Elvish",
EmacsLisp => "Emacs Lisp",
Erlang => "Erlang",
Fish => "fish",
FSharp => "F#",
Gleam => "Gleam",
Go => "Go",
@ -279,6 +281,7 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
"rebar.config.lock",
"rebar.lock",
],
Fish => &["*.fish"],
FSharp => &["*.fs", "*.fsx", "*.fsi"],
Gleam => &["*.gleam"],
Go => &["*.go"],
@ -537,6 +540,7 @@ fn from_emacs_mode_header(src: &str) -> Option<Language> {
"elm" => Elm,
"elvish" => Elvish,
"emacs-lisp" => EmacsLisp,
"fish" => Fish,
"fsharp" => FSharp,
"gleam" => Gleam,
"go" => Go,

@ -375,6 +375,20 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
sub_languages: vec![],
}
}
Fish => {
let language = tree_sitter_fish::language();
TreeSitterConfig {
language: language.clone(),
atom_nodes: ["single_quote_string", "double_quote_string"]
.into_iter()
.collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(&language, tree_sitter_fish::HIGHLIGHTS_QUERY)
.unwrap(),
sub_languages: vec![],
}
}
FSharp => {
let language_fn = tree_sitter_fsharp::LANGUAGE_FSHARP;
let language = tree_sitter::Language::new(language_fn);