Skip to content

Commit 0ee387d

Browse files
committed
fish: init
1 parent 5936671 commit 0ee387d

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ tree-sitter-elisp = "1.6.1"
9090
tree-sitter-elixir = "0.3.4"
9191
tree-sitter-elm = "5.8.0"
9292
tree-sitter-erlang = "0.13.0"
93+
tree-sitter-fish = "3.6.0"
9394
tree-sitter-fsharp = "0.1.0"
9495
tree-sitter-gleam = "1.0.0"
9596
tree-sitter-go = "0.23.4"

src/parse/guess_language.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pub(crate) enum Language {
3535
Elvish,
3636
EmacsLisp,
3737
Erlang,
38+
Fish,
3839
FSharp,
3940
Gleam,
4041
Go,
@@ -136,6 +137,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
136137
Elvish => "Elvish",
137138
EmacsLisp => "Emacs Lisp",
138139
Erlang => "Erlang",
140+
Fish => "fish",
139141
FSharp => "F#",
140142
Gleam => "Gleam",
141143
Go => "Go",
@@ -279,6 +281,7 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
279281
"rebar.config.lock",
280282
"rebar.lock",
281283
],
284+
Fish => &["*.fish"],
282285
FSharp => &["*.fs", "*.fsx", "*.fsi"],
283286
Gleam => &["*.gleam"],
284287
Go => &["*.go"],
@@ -537,6 +540,7 @@ fn from_emacs_mode_header(src: &str) -> Option<Language> {
537540
"elm" => Elm,
538541
"elvish" => Elvish,
539542
"emacs-lisp" => EmacsLisp,
543+
"fish" => Some(Fish),
540544
"fsharp" => FSharp,
541545
"gleam" => Gleam,
542546
"go" => Go,

src/parse/tree_sitter_parser.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,20 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
375375
sub_languages: vec![],
376376
}
377377
}
378+
Fish => {
379+
let language = tree_sitter_fish::language();
380+
381+
TreeSitterConfig {
382+
language: language.clone(),
383+
atom_nodes: ["single_quote_string", "double_quote_string"]
384+
.into_iter()
385+
.collect(),
386+
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
387+
highlight_query: ts::Query::new(&language, tree_sitter_fish::HIGHLIGHTS_QUERY)
388+
.unwrap(),
389+
sub_languages: vec![],
390+
}
391+
}
378392
FSharp => {
379393
let language_fn = tree_sitter_fsharp::LANGUAGE_FSHARP;
380394
let language = tree_sitter::Language::new(language_fn);

0 commit comments

Comments
 (0)