@@ -0,0 +1,76 @@
1+;; SPDX-License-Identifier: 0BSD
2+;; SPDX-FileCopyrightText: 2022 Tobias Frilling
6+(if "if" @keyword.control.conditional)
7+(if (elif "elif" @keyword.control.conditional))
8+(if (else "else" @keyword.control.conditional))
10+(while "while" @keyword.control.repeat)
11+(while (else "else" @keyword.control.repeat))
12+(for "for" @keyword.control.repeat)
13+(for (else "else" @keyword.control.repeat))
15+(try "try" @keyword.control.exception)
16+(try (catch "catch" @keyword.control.exception))
17+(try (else "else" @keyword.control.exception))
18+(try (finally "finally" @keyword.control.exception))
20+(import "use" @keyword.control.import)
21+(import (bareword) @string.special)
23+(wildcard ["*" "**" "?"] @string.special)
25+(command argument: (bareword) @variable.parameter)
26+(command head: (identifier) @function)
27+((command head: (identifier) @keyword.control.return)
28+ (#eq? @keyword.control.return "return"))
29+((command (identifier) @keyword.operator)
30+ (#match? @keyword.operator "(and|or|coalesce)"))
31+((command head: _ @function)
32+ (#match? @function "([+]|[-]|[*]|[/]|[%]|[<]|[<][=]|[=][=]|[!][=]|[>]|[>][=]|[<][s]|[<][=][s]|[=][=][s]|[!][=][s]|[>][s]|[>][=][s])"))
34+(pipeline "|" @operator)
35+(redirection [">" "<" ">>" "<>"] @operator)
37+(io_port) @constant.numeric
40+ "fn" @keyword.function
41+ (identifier) @function)
43+(parameter_list) @variable.parameter
44+(parameter_list "|" @punctuation.bracket)
48+ (lhs (identifier) @variable))
52+ (lhs (identifier) @variable))
56+ (lhs (identifier) @variable))
60+ (identifier) @variable)
63+(number) @constant.numeric
66+((variable (identifier) @function)
67+ (#match? @function ".+\\~$"))
68+((variable (identifier) @constant.builtin.boolean)
69+ (#match? @constant.builtin.boolean "(true|false)"))
70+((variable (identifier) @constant.builtin)
71+ (#match? @constant.builtin "(_|after-chdir|args|before-chdir|buildinfo|nil|notify-bg-job-success|num-bg-jobs|ok|paths|pid|pwd|value-out-indicator|version)"))
72+(variable (identifier) @variable)
74+["$" "@"] @punctuation.special
75+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
76+";" @punctuation.delimiter