mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 01:16:18 +04:00
Add fish highlighting (#1308)
The highlights were copied and modified from https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/fish/highlights.scm
This commit is contained in:
parent
f16651b590
commit
205dc8776b
4
.gitmodules
vendored
4
.gitmodules
vendored
@ -162,3 +162,7 @@
|
||||
path = helix-syntax/languages/tree-sitter-dart
|
||||
url = https://github.com/UserNobody14/tree-sitter-dart.git
|
||||
shallow = true
|
||||
[submodule "helix-syntax/languages/tree-sitter-fish"]
|
||||
path = helix-syntax/languages/tree-sitter-fish
|
||||
url = https://github.com/ram02z/tree-sitter-fish
|
||||
shallow = true
|
||||
|
@ -9,6 +9,7 @@
|
||||
| css | ✓ | | | |
|
||||
| dart | ✓ | | ✓ | `dart` |
|
||||
| elixir | ✓ | | | `elixir-ls` |
|
||||
| fish | ✓ | ✓ | ✓ | |
|
||||
| glsl | ✓ | | ✓ | |
|
||||
| go | ✓ | ✓ | ✓ | `gopls` |
|
||||
| html | ✓ | | | |
|
||||
|
1
helix-syntax/languages/tree-sitter-fish
Submodule
1
helix-syntax/languages/tree-sitter-fish
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 04e54ab6585dfd4fee6ddfe5849af56f101b6d4f
|
@ -45,6 +45,17 @@ comment-token = "#"
|
||||
language-server = { command = "elixir-ls" }
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
|
||||
[[language]]
|
||||
name = "fish"
|
||||
scope = "source.fish"
|
||||
injection-regex = "fish"
|
||||
file-types = ["fish"]
|
||||
shebangs = ["fish"]
|
||||
roots = []
|
||||
comment-token = "#"
|
||||
|
||||
indent = { tab-width = 4, unit = " " }
|
||||
|
||||
[[language]]
|
||||
name = "mint"
|
||||
scope = "source.mint"
|
||||
|
156
runtime/queries/fish/highlights.scm
Normal file
156
runtime/queries/fish/highlights.scm
Normal file
@ -0,0 +1,156 @@
|
||||
;; Operators
|
||||
|
||||
[
|
||||
"&&"
|
||||
"||"
|
||||
"|"
|
||||
"&"
|
||||
"="
|
||||
"!="
|
||||
".."
|
||||
"!"
|
||||
(direction)
|
||||
(stream_redirect)
|
||||
(test_option)
|
||||
] @operator
|
||||
|
||||
[
|
||||
"not"
|
||||
"and"
|
||||
"or"
|
||||
] @keyword.operator
|
||||
|
||||
;; Conditionals
|
||||
|
||||
(if_statement
|
||||
[
|
||||
"if"
|
||||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(switch_statement
|
||||
[
|
||||
"switch"
|
||||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(case_clause
|
||||
[
|
||||
"case"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(else_clause
|
||||
[
|
||||
"else"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(else_if_clause
|
||||
[
|
||||
"else"
|
||||
"if"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
;; Loops/Blocks
|
||||
|
||||
(while_statement
|
||||
[
|
||||
"while"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(for_statement
|
||||
[
|
||||
"for"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(begin_statement
|
||||
[
|
||||
"begin"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
;; Keywords
|
||||
|
||||
[
|
||||
"in"
|
||||
(break)
|
||||
(continue)
|
||||
] @keyword
|
||||
|
||||
"return" @keyword.control.return
|
||||
|
||||
;; Punctuation
|
||||
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
"("
|
||||
")"
|
||||
] @punctuation.bracket
|
||||
|
||||
"," @punctuation.delimiter
|
||||
|
||||
;; Commands
|
||||
|
||||
(command
|
||||
argument: [
|
||||
(word) @variable.parameter (#match? @variable.parameter "^-")
|
||||
]
|
||||
)
|
||||
|
||||
; non-bultin command names
|
||||
(command name: (word) @function)
|
||||
|
||||
; derived from builtin -n (fish 3.2.2)
|
||||
(command
|
||||
name: [
|
||||
(word) @function.builtin
|
||||
(#match? @function.builtin "^(\.|:|_|alias|argparse|bg|bind|block|breakpoint|builtin|cd|command|commandline|complete|contains|count|disown|echo|emit|eval|exec|exit|fg|functions|history|isatty|jobs|math|printf|pwd|random|read|realpath|set|set_color|source|status|string|test|time|type|ulimit|wait)$")
|
||||
]
|
||||
)
|
||||
|
||||
(test_command "test" @function.builtin)
|
||||
|
||||
;; Functions
|
||||
|
||||
(function_definition ["function" "end"] @keyword.function)
|
||||
|
||||
(function_definition
|
||||
name: [
|
||||
(word) (concatenation)
|
||||
]
|
||||
@function)
|
||||
|
||||
(function_definition
|
||||
option: [
|
||||
(word)
|
||||
(concatenation (word))
|
||||
] @variable.parameter (#match? @variable.parameter "^-")
|
||||
)
|
||||
|
||||
;; Strings
|
||||
|
||||
[(double_quote_string) (single_quote_string)] @string
|
||||
(escape_sequence) @constant.character.escape
|
||||
|
||||
;; Variables
|
||||
|
||||
(variable_name) @variable
|
||||
(variable_expansion) @constant
|
||||
|
||||
;; Nodes
|
||||
|
||||
(integer) @constant.numeric.integer
|
||||
(float) @constant.numeric.float
|
||||
(comment) @comment
|
||||
(test_option) @string
|
||||
|
||||
((word) @constant.builtin.boolean
|
||||
(#match? @constant.builtin.boolean "^(true|false)$"))
|
||||
|
||||
;; Error
|
||||
|
||||
(ERROR) @error
|
12
runtime/queries/fish/indents.toml
Normal file
12
runtime/queries/fish/indents.toml
Normal file
@ -0,0 +1,12 @@
|
||||
indent = [
|
||||
"function_definition",
|
||||
"while_statement",
|
||||
"for_statement",
|
||||
"if_statement",
|
||||
"begin_statement",
|
||||
"switch_statement",
|
||||
]
|
||||
|
||||
outdent = [
|
||||
"end"
|
||||
]
|
2
runtime/queries/fish/injections.scm
Normal file
2
runtime/queries/fish/injections.scm
Normal file
@ -0,0 +1,2 @@
|
||||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
1
runtime/queries/fish/textobjects.scm
Normal file
1
runtime/queries/fish/textobjects.scm
Normal file
@ -0,0 +1 @@
|
||||
(function_definition) @function.around
|
Loading…
Reference in New Issue
Block a user