pair-mode 0.2.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +12 -0
- package/.codex-plugin/plugin.json +29 -0
- package/README.md +79 -0
- package/assets/syntax/clojure.yaml +36 -0
- package/assets/syntax/cmake.yaml +41 -0
- package/assets/syntax/crystal.yaml +71 -0
- package/assets/syntax/csharp.yaml +51 -0
- package/assets/syntax/dart.yaml +45 -0
- package/assets/syntax/elm.yaml +38 -0
- package/assets/syntax/erb.yaml +42 -0
- package/assets/syntax/erlang.yaml +45 -0
- package/assets/syntax/fsharp.yaml +48 -0
- package/assets/syntax/graphql.yaml +47 -0
- package/assets/syntax/groovy.yaml +111 -0
- package/assets/syntax/haml.yaml +16 -0
- package/assets/syntax/haskell.yaml +52 -0
- package/assets/syntax/ini.yaml +23 -0
- package/assets/syntax/java.yaml +36 -0
- package/assets/syntax/julia.yaml +56 -0
- package/assets/syntax/kotlin.yaml +65 -0
- package/assets/syntax/makefile.yaml +37 -0
- package/assets/syntax/nginx.yaml +22 -0
- package/assets/syntax/nim.yaml +27 -0
- package/assets/syntax/nix.yaml +32 -0
- package/assets/syntax/objc.yaml +60 -0
- package/assets/syntax/ocaml.yaml +43 -0
- package/assets/syntax/perl.yaml +58 -0
- package/assets/syntax/php.yaml +60 -0
- package/assets/syntax/r.yaml +30 -0
- package/assets/syntax/scala.yaml +32 -0
- package/assets/syntax/svelte.yaml +27 -0
- package/assets/syntax/swift.yaml +102 -0
- package/assets/syntax/vue.yaml +63 -0
- package/assets/syntax/xml.yaml +37 -0
- package/assets/syntax/zig.yaml +52 -0
- package/dist/claude-code.js +461 -149
- package/dist/cli.js +1490 -476
- package/dist/codex.js +461 -149
- package/dist/opencode.js +453 -142
- package/dist/pair-tui.js +172 -26
- package/dist/pi.js +508 -155
- package/hooks/codex.json +17 -0
- package/hooks/hooks.json +16 -0
- package/package.json +8 -3
- package/skills/toggle/SKILL.md +24 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
filetype: groovy
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "(\\.(groovy|gy|gvy|gsh|gradle)$|^[Jj]enkinsfile$)"
|
|
5
|
+
header: "^#!.*/(env +)?groovy *$"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
# And the style guide for constants is CONSTANT_CASE
|
|
9
|
+
- identifier: "\\b[A-Z_$]+\\b"
|
|
10
|
+
# The style guide for JVM languages is PascalCase for classes and interfaces
|
|
11
|
+
- identifier.class: "\\b[A-Z][a-zA-Z0-9$]+\\b"
|
|
12
|
+
|
|
13
|
+
# Primitive types
|
|
14
|
+
- type: "\\b(byte|short|int|long|float|double|char|boolean|void)\\b"
|
|
15
|
+
|
|
16
|
+
# Type-related keywords
|
|
17
|
+
- type.keyword: "\\b(private|public|protected|static|final|var|def)\\b"
|
|
18
|
+
|
|
19
|
+
# Keywords
|
|
20
|
+
- statement: "\\b(for|while|do|if|else|switch|case|default|try|catch|finally)\\b"
|
|
21
|
+
- statement: "\\b(break|continue|return|throw|assert)\\b"
|
|
22
|
+
- statement: "\\b(package|import|class|interface|trait|enum|extends|implements|throws)\\b"
|
|
23
|
+
- statement: "\\b(this|super)\\b"
|
|
24
|
+
# Unsused, but reserved keywords
|
|
25
|
+
- statement: "\\b(goto|const)\\b"
|
|
26
|
+
|
|
27
|
+
# Operators and punctuation
|
|
28
|
+
- symbol.operator: "[-+*/%=<>^~&|!?:;,.@]|\\b(in|is|as|instanceof|new)\\b"
|
|
29
|
+
- symbol.brackets: "[(){}]|\\[|\\]"
|
|
30
|
+
|
|
31
|
+
# Decimal integer literal
|
|
32
|
+
- constant.number: "(?i)\\b[1-9]([_0-9]*[0-9])?[GLIDF]?\\b"
|
|
33
|
+
# Binary integer literal
|
|
34
|
+
- constant.number: "(?i)\\b0b[01]([01_]*[01])?[GLIDF]?\\b"
|
|
35
|
+
# Octal integer literal
|
|
36
|
+
- constant.number: "(?i)\\b0[0-7]([0-7_]*[0-7])?[GLIDF]?\\b"
|
|
37
|
+
# Hexadecimal integer literal
|
|
38
|
+
- constant.number: "(?i)\\b0x[0-9a-fA-F]([0-9a-f_]*[0-9a-fA-F])?[GLIDF]?\\b"
|
|
39
|
+
# Floating-point literal
|
|
40
|
+
- constant.number: "(?i)\\b[0-9]([0-9_]*[0-9])?([.][0-9]([0-9_]*[0-9])?)?(e[+-]?[0-9]([0-9_]*[0-9])?)?[DF]?\\b"
|
|
41
|
+
- constant.bool: "\\b(true|false|null)\\b"
|
|
42
|
+
|
|
43
|
+
# Annotations
|
|
44
|
+
- identifier: "@[A-Za-z_$][A-Za-z0-9_$]*\\b"
|
|
45
|
+
|
|
46
|
+
# Triple-double-quoted strings
|
|
47
|
+
- constant.string:
|
|
48
|
+
start: '"""'
|
|
49
|
+
end: '"""'
|
|
50
|
+
skip: "\\\\."
|
|
51
|
+
rules:
|
|
52
|
+
- constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})"
|
|
53
|
+
- identifier.var: "\\x24[\\w\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+([.][a-zA-Z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+)*"
|
|
54
|
+
- identifier:
|
|
55
|
+
start: "[$][{]"
|
|
56
|
+
end: "[}]"
|
|
57
|
+
rules: []
|
|
58
|
+
|
|
59
|
+
# Triple-single-quoted strings
|
|
60
|
+
- constant.string:
|
|
61
|
+
start: "'''"
|
|
62
|
+
end: "'''"
|
|
63
|
+
skip: "\\\\."
|
|
64
|
+
rules:
|
|
65
|
+
- constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})"
|
|
66
|
+
|
|
67
|
+
# Nesting ${} are never going to be matched correctly with just regex either, so highlighting will break if one is to nest interpolation
|
|
68
|
+
# Double-quoted strings
|
|
69
|
+
- constant.string:
|
|
70
|
+
start: '"'
|
|
71
|
+
end: '"'
|
|
72
|
+
skip: "\\\\."
|
|
73
|
+
rules:
|
|
74
|
+
- constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})"
|
|
75
|
+
- identifier.var: "\\x24[\\w\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+([.][a-zA-Z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+)*"
|
|
76
|
+
- identifier: "\\x24[{].*[}]"
|
|
77
|
+
|
|
78
|
+
# Single-quoted strings
|
|
79
|
+
- constant.string:
|
|
80
|
+
start: "'"
|
|
81
|
+
end: "'"
|
|
82
|
+
skip: "\\\\."
|
|
83
|
+
rules:
|
|
84
|
+
- constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})"
|
|
85
|
+
|
|
86
|
+
# Slashy strings are left out, because they match in unwanted places pretty much all the time
|
|
87
|
+
# Dollar-slashy strings
|
|
88
|
+
- constant.string:
|
|
89
|
+
start: "[$]/"
|
|
90
|
+
end: "/[$]"
|
|
91
|
+
rules: []
|
|
92
|
+
|
|
93
|
+
# Single-line comments
|
|
94
|
+
- comment:
|
|
95
|
+
start: "//"
|
|
96
|
+
end: "$"
|
|
97
|
+
rules:
|
|
98
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
99
|
+
|
|
100
|
+
# Multiline comments
|
|
101
|
+
- comment:
|
|
102
|
+
start: "/[*]"
|
|
103
|
+
end: "[*]/"
|
|
104
|
+
rules:
|
|
105
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
106
|
+
|
|
107
|
+
# Groovydoc comments
|
|
108
|
+
- comment:
|
|
109
|
+
start: "/[*][*]@?"
|
|
110
|
+
end: "[*]/"
|
|
111
|
+
rules: []
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
filetype: haml
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.haml$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- symbol: "-|="
|
|
8
|
+
- default: "->|=>"
|
|
9
|
+
- constant: "([ ]|^)%[0-9A-Za-z_]+>"
|
|
10
|
+
- special: ":[0-9A-Za-z_]+>"
|
|
11
|
+
- type: "\\.[A-Za-z_]+>"
|
|
12
|
+
- constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!"
|
|
13
|
+
- constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!"
|
|
14
|
+
- identifier: "#\\{[^}]*\\}"
|
|
15
|
+
- identifier.var: "(@|@@)[0-9A-Z_a-z]+"
|
|
16
|
+
- comment: "#[^{].*$|#$"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
filetype: haskell
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.hs$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- symbol.operator: "[!#$%&:*+/<=>?@.\\\\^\\|~\\p{Sm}\\-]+"
|
|
8
|
+
|
|
9
|
+
# Identifiers (with or without a module name)
|
|
10
|
+
- type: "\\b([A-Z][A-Za-z0-9_]*\\.)*[A-Z]+[A-Za-z0-9_']*\\b"
|
|
11
|
+
- default: "\\b([A-Z][A-Za-z0-9_]*\\.)*[a-z][A-Za-z0-9_']*\\b"
|
|
12
|
+
|
|
13
|
+
- statement: ";"
|
|
14
|
+
- symbol.bracket: "[\\(\\)\\[\\]\\{\\}]"
|
|
15
|
+
- special: "`[A-Za-z0-9']+`"
|
|
16
|
+
|
|
17
|
+
# Keywords
|
|
18
|
+
- statement: "\\b(case|of|class|data|default|deriving|do|forall|foreign|hiding|if|then|else|import|infix|infixl|infixr|instance|let|in|mdo|module|newtype|qualified|type|where)\\b"
|
|
19
|
+
|
|
20
|
+
# Data constructors
|
|
21
|
+
- constant.bool: "\\b(True|False)\\b"
|
|
22
|
+
- constant: "\\b(Nothing|Just|Left|Right|LT|EQ|GT)\\b"
|
|
23
|
+
|
|
24
|
+
- constant: "\\(\\)" # Unit
|
|
25
|
+
- constant.number: "\\b(0[xX][0-9A-Fa-f]+|0[oO][0-7]+|0[bB][01]+|[-]?[0-9]+([.][0-9]+)?([eE][+-]?[0-9]+)?)\\b"
|
|
26
|
+
|
|
27
|
+
# Data classes
|
|
28
|
+
- identifier.class: "\\b(Additive|Applicative|Bounded|Data|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|MonadPlus|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Semigroup|Show|Traversable|Typeable|Zip)[ ]"
|
|
29
|
+
|
|
30
|
+
# Strings
|
|
31
|
+
- constant.string:
|
|
32
|
+
start: '"'
|
|
33
|
+
end: '"'
|
|
34
|
+
skip: "\\\\."
|
|
35
|
+
rules:
|
|
36
|
+
- special: "\\\\&"
|
|
37
|
+
- constant.specialChar: "\\\\([abfnrtv\"'\\\\]|[0-9]+|x[0-9a-fA-F]+|o[0-7]+|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC[1-4]|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL)"
|
|
38
|
+
|
|
39
|
+
# Comments
|
|
40
|
+
- comment:
|
|
41
|
+
start: "--"
|
|
42
|
+
end: "$"
|
|
43
|
+
rules:
|
|
44
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
45
|
+
|
|
46
|
+
- comment:
|
|
47
|
+
start: "\\{-"
|
|
48
|
+
end: "-\\}"
|
|
49
|
+
rules:
|
|
50
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
51
|
+
|
|
52
|
+
- identifier.macro: "undefined"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
filetype: ini
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.(ini|desktop|lfl|override|tscn|tres)$|(mimeapps\\.list|pinforc|setup\\.cfg|project\\.godot)$|weechat/.+\\.conf$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- constant.bool.true: "\\btrue\\b"
|
|
8
|
+
- constant.bool.false: "\\bfalse\\b"
|
|
9
|
+
- identifier: "^[[:space:]]*[^=]*="
|
|
10
|
+
- special: "^[[:space:]]*\\[.*\\]$"
|
|
11
|
+
- statement: "[=;]"
|
|
12
|
+
- constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"
|
|
13
|
+
|
|
14
|
+
- comment:
|
|
15
|
+
start: "#"
|
|
16
|
+
end: "$"
|
|
17
|
+
rules:
|
|
18
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
19
|
+
- comment:
|
|
20
|
+
start: ";"
|
|
21
|
+
end: "$"
|
|
22
|
+
rules:
|
|
23
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
filetype: java
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.java$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- type: "\\b(boolean|byte|char|double|float|int|long|new|var|short|this|transient|void)\\b"
|
|
8
|
+
- statement: "\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b"
|
|
9
|
+
- type: "\\b(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\\b"
|
|
10
|
+
- constant: "\\b(true|false|null)\\b"
|
|
11
|
+
- constant.number: "\\b[0-9]+\\b"
|
|
12
|
+
|
|
13
|
+
- constant.string:
|
|
14
|
+
start: '"'
|
|
15
|
+
end: '"'
|
|
16
|
+
skip: "\\\\."
|
|
17
|
+
rules:
|
|
18
|
+
- constant.specialChar: "\\\\."
|
|
19
|
+
|
|
20
|
+
- constant.string:
|
|
21
|
+
start: "'"
|
|
22
|
+
end: "'"
|
|
23
|
+
skip: "\\\\."
|
|
24
|
+
rules:
|
|
25
|
+
- preproc: "..+"
|
|
26
|
+
- constant.specialChar: "\\\\."
|
|
27
|
+
|
|
28
|
+
- comment:
|
|
29
|
+
start: "//"
|
|
30
|
+
end: "$"
|
|
31
|
+
rules: []
|
|
32
|
+
|
|
33
|
+
- comment:
|
|
34
|
+
start: "/\\*"
|
|
35
|
+
end: "\\*/"
|
|
36
|
+
rules: []
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
filetype: julia
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.jl$"
|
|
5
|
+
header: "^#!.*/(env +)?julia( |$)"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
# built-in objects
|
|
9
|
+
- constant.bool: "\\b(true|false)\\b"
|
|
10
|
+
- constant: "\\b(nothing|missing)\\b"
|
|
11
|
+
# built-in attributes
|
|
12
|
+
- constant: "__[A-Za-z0-9_]+__"
|
|
13
|
+
# definitions
|
|
14
|
+
- identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]"
|
|
15
|
+
# keywords
|
|
16
|
+
- statement: "\\b(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|finally|for|function|global|if|import|let|local|macro|module|public|quote|return|struct|try|using|while)\\b"
|
|
17
|
+
- statement: "\\b(abstract\\s+type|primitive\\s+type|mutable\\s+struct)\\b"
|
|
18
|
+
# decorators
|
|
19
|
+
- identifier.macro: "@[A-Za-z0-9_]+"
|
|
20
|
+
# operators
|
|
21
|
+
- symbol.operator: "[:+*|=!%~<>/\\-?&\\\\÷∈∉∘]|\\b(in|isa|where)\\b"
|
|
22
|
+
# for some reason having ^ in the same regex with the other operators broke things
|
|
23
|
+
- symbol.operator: "\\^"
|
|
24
|
+
# parentheses
|
|
25
|
+
- symbol.brackets: "([(){}]|\\[|\\])"
|
|
26
|
+
# numbers
|
|
27
|
+
- constant.number: "\\b([0-9]+(_[0-9]+)*|0x[0-9a-fA-F]+(_[0-9a-fA-F]+)*|0b[01]+(_[01]+)*|0o[0-7]+(_[0-7]+)*|Inf(16|32|64)?|NaN(16|32|64)?)\\b"
|
|
28
|
+
|
|
29
|
+
- constant.string:
|
|
30
|
+
start: '"""'
|
|
31
|
+
end: '"""'
|
|
32
|
+
rules: []
|
|
33
|
+
|
|
34
|
+
- constant.string:
|
|
35
|
+
start: '"'
|
|
36
|
+
end: '"'
|
|
37
|
+
skip: "\\\\."
|
|
38
|
+
rules:
|
|
39
|
+
- constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{1,4}|U[0-9A-Fa-f]{1,8})"
|
|
40
|
+
|
|
41
|
+
# Lifted from Rust's syntax highlighting
|
|
42
|
+
- constant.string: "'(\\\\.|.)'"
|
|
43
|
+
- constant.string:
|
|
44
|
+
start: '''"'
|
|
45
|
+
end: "'"
|
|
46
|
+
rules: []
|
|
47
|
+
|
|
48
|
+
- comment:
|
|
49
|
+
start: "#="
|
|
50
|
+
end: "=#"
|
|
51
|
+
rules: []
|
|
52
|
+
|
|
53
|
+
- comment:
|
|
54
|
+
start: "#"
|
|
55
|
+
end: "$"
|
|
56
|
+
rules: []
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
filetype: kotlin
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.kts?$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
# Operators
|
|
8
|
+
- symbol.operator: ([.:;,+*|=!?\\%]|<|>|/|-|&)
|
|
9
|
+
|
|
10
|
+
# Statements Keywords
|
|
11
|
+
- statement: \b(as|by|class|constructor|companion|const|fun|import|in|infix|interface|inline|is|out|operator|package|return|suspend|super|this|when|val|var)\b
|
|
12
|
+
- statement.properties: \b(get|set)\b
|
|
13
|
+
- statement.control: \b(break|continue|else|do|if|try|catch|finally|for|while)\b
|
|
14
|
+
- statement.class: \b(abstract|annotation|data|enum|final|open|sealed)\b
|
|
15
|
+
- statement.member: \b(override|lateinit|init)\b
|
|
16
|
+
- statement.access: \b(internal|private|protected|public)\b
|
|
17
|
+
- statement.parameter: \b(crossinline|noinline|reified|vararg)\b
|
|
18
|
+
|
|
19
|
+
# Expression and types
|
|
20
|
+
- type: \b(dynamic|object|throw|typealias)\b
|
|
21
|
+
|
|
22
|
+
# Meta
|
|
23
|
+
- statement.meta: \@(\bfile|delegate|field|get|property|receiver|set|setparam|param|)\b
|
|
24
|
+
|
|
25
|
+
# Constant
|
|
26
|
+
- constant: \b(true|false|null)
|
|
27
|
+
- constant.number: ([0-9]+)
|
|
28
|
+
|
|
29
|
+
# Storage Types
|
|
30
|
+
- type.storage: \b(Byte|UByte|Char|Double|Float|Int|UInt|Long|ULong|Short|UShort|Boolean|Unit|Nothing)\b
|
|
31
|
+
|
|
32
|
+
# Collections
|
|
33
|
+
- type.collections: \b(Array)\b
|
|
34
|
+
|
|
35
|
+
# String
|
|
36
|
+
- constant.string:
|
|
37
|
+
start: \"
|
|
38
|
+
end: \"
|
|
39
|
+
skip: \\.
|
|
40
|
+
rules:
|
|
41
|
+
- constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\')
|
|
42
|
+
- constant.unicode: \\u\{[[:xdigit:]]+}
|
|
43
|
+
|
|
44
|
+
# Shebang Line
|
|
45
|
+
- comment.shebang: ^(#!).*
|
|
46
|
+
|
|
47
|
+
# Line Comment
|
|
48
|
+
- comment.line: "//.*"
|
|
49
|
+
|
|
50
|
+
# Block Comment
|
|
51
|
+
- comment.block:
|
|
52
|
+
start: "/\\*"
|
|
53
|
+
end: "\\*/"
|
|
54
|
+
rules:
|
|
55
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
56
|
+
|
|
57
|
+
# Doc Block Comment
|
|
58
|
+
- comment.block:
|
|
59
|
+
start: "/\\*\\*"
|
|
60
|
+
end: "\\*/"
|
|
61
|
+
rules:
|
|
62
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
63
|
+
|
|
64
|
+
# Todo
|
|
65
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
filetype: makefile
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "([Mm]akefile|\\.ma?k)$"
|
|
5
|
+
header: "^#!.*/(env +)?[bg]?make( |$)"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- preproc: "\\<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>"
|
|
9
|
+
- statement: "^(export|include|override)\\>"
|
|
10
|
+
- symbol.operator: "^[^:= ]+:"
|
|
11
|
+
- symbol.operator: "([=,%]|\\+=|\\?=|:=|&&|\\|\\|)"
|
|
12
|
+
- statement: "\\$\\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]"
|
|
13
|
+
- statement: "\\$\\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]"
|
|
14
|
+
- statement: "\\$\\((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]"
|
|
15
|
+
- statement: "\\$\\((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]"
|
|
16
|
+
- statement: "\\$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]"
|
|
17
|
+
- identifier: "^.+:"
|
|
18
|
+
- identifier: "[()$]"
|
|
19
|
+
- constant.string:
|
|
20
|
+
start: '"'
|
|
21
|
+
end: '"'
|
|
22
|
+
skip: "\\\\."
|
|
23
|
+
rules:
|
|
24
|
+
- constant.specialChar: "\\\\."
|
|
25
|
+
- constant.string:
|
|
26
|
+
start: "'"
|
|
27
|
+
end: "'"
|
|
28
|
+
skip: "\\\\."
|
|
29
|
+
rules:
|
|
30
|
+
- constant.specialChar: "\\\\."
|
|
31
|
+
- identifier: "\\$+(\\{[^} ]+\\}|\\([^) ]+\\))"
|
|
32
|
+
- identifier: "\\$[@^<*?%|+]|\\$\\([@^<*?%+-][DF]\\)"
|
|
33
|
+
- identifier: "\\$\\$|\\\\.?"
|
|
34
|
+
- comment:
|
|
35
|
+
start: "#"
|
|
36
|
+
end: "$"
|
|
37
|
+
rules: []
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
filetype: nginx
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "nginx.*\\.conf$|\\.nginx$|\\.sub(domain|folder)\\.conf$"
|
|
5
|
+
header: "^(server|upstream)[a-z ]*\\{$"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- preproc: "\\b(events|server|http|location|upstream)[[:space:]]*\\{"
|
|
9
|
+
- statement: "(^|[[:space:]{;])(access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth_basic|auth_basic_user_file|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|default_type|deny|directio|directio_alignment|disable_symlinks|empty_gif|env|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|log_format|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|port_in_redirect|postpone_output|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_read_timeout|proxy_redirect|proxy_send_timeout|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|working_directory|xml_entities|xslt_stylesheet|xslt_types)([[:space:]]|$)"
|
|
10
|
+
- constant.bool.true: "\\b(on)\\b"
|
|
11
|
+
- constant.bool.false: "\\b(off)\\b"
|
|
12
|
+
- identifier: "\\$[A-Za-z][A-Za-z0-9_]*"
|
|
13
|
+
- symbol: "[*]"
|
|
14
|
+
- constant-string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"
|
|
15
|
+
- constant.string:
|
|
16
|
+
start: "'$"
|
|
17
|
+
end: "';$"
|
|
18
|
+
rules: []
|
|
19
|
+
|
|
20
|
+
- comment: "(^|[[:space:]])#([^{].*)?$"
|
|
21
|
+
- indent-char.whitespace: "[[:space:]]+$"
|
|
22
|
+
- indent-char: " + +| + +"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
filetype: nim
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.nims?$|nim.cfg"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- preproc: "[\\{\\|]\\b(atom|lit|sym|ident|call|lvalue|sideeffect|nosideeffect|param|genericparam|module|type|let|var|const|result|proc|method|iterator|converter|macro|template|field|enumfield|forvar|label|nk[a-zA-Z]+|alias|noalias)\\b[\\}\\|]"
|
|
8
|
+
- statement: "\\b(addr|and|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|div|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|in|include|interface|is|isnot|iterator|let|macro|method|mixin|mod|nil|not|notin|object|of|or|out|proc|ptr|raise|ref|return|shl|shr|static|template|try|tuple|type|using|var|when|while|with|without|xor|yield)\\b"
|
|
9
|
+
- statement: "\\b(deprecated|noSideEffect|constructor|destructor|override|procvar|compileTime|noReturn|acyclic|final|shallow|pure|asmNoStackFrame|error|fatal|warning|hint|line|linearScanEnd|computedGoto|unroll|immediate|checks|boundsChecks|overflowChecks|nilChecks|assertations|warnings|hints|optimization|patterns|callconv|push|pop|global|pragma|experimental|bitsize|volatile|noDecl|header|incompleteStruct|compile|link|passC|passL|emit|importc|importcpp|importobjc|codegenDecl|injectStmt|intdefine|strdefine|varargs|exportc|extern|bycopy|byref|union|packed|unchecked|dynlib|cdecl|thread|gcsafe|threadvar|guard|locks|compileTime)\\b"
|
|
10
|
+
- symbol.operator: "[=\\+\\-\\*/<>@\\$~&%\\|!\\?\\^\\.:\\\\]+"
|
|
11
|
+
- special: "\\{\\.|\\.\\}|\\[\\.|\\.\\]|\\(\\.|\\.\\)|;|,|`"
|
|
12
|
+
- statement: "\\.\\."
|
|
13
|
+
- type: "\\b(int|cint|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|float32|float64|bool|char|enum|string|cstring|cstringArray|cdouble|csize_t|pointer|array|openarray|seq|varargs|tuple|object|set|void|auto|cshort|clong|range|nil|T|untyped|typedesc)\\b"
|
|
14
|
+
- type: "'[iI](8|16|32|64)?\\b|'[uU](8|16|32|64)?\\b|'[fF](32|64|128)?\\b|'[dD]\\b"
|
|
15
|
+
- constant.number: "\\b[0-9]+\\b"
|
|
16
|
+
- constant.number: "\\b0[xX][0-9A-Fa-f][0-9_A-Fa-f]+\\b"
|
|
17
|
+
- constant.number: "\\b0[ocC][0-7][0-7_]+\\b"
|
|
18
|
+
- constant.number: "\\b0[bB][01][01_]+\\b"
|
|
19
|
+
- constant.number: "\\b[0-9_]((\\.?)[0-9_]+)?[eE][+\\-][0-9][0-9_]+\\b"
|
|
20
|
+
- constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"
|
|
21
|
+
- comment: "[[:space:]]*(?:[^\\\\]|^)#.*$"
|
|
22
|
+
- comment:
|
|
23
|
+
start: "\\#\\["
|
|
24
|
+
end: "\\]\\#"
|
|
25
|
+
rules: []
|
|
26
|
+
|
|
27
|
+
- todo: "(TODO|FIXME|XXX):?"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
filetype: nix
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.nix$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- special: "\\b(Ellipsis|null|self|super|true|false|abort)\\b"
|
|
8
|
+
- statement: "\\b(let|in|with|import|rec|inherit)\\b"
|
|
9
|
+
- symbol.operator: "([~^.:;,+*|=!\\%@]|<|>|/|-|&)"
|
|
10
|
+
- symbol.brackets: "([(){}]|\\[|\\])"
|
|
11
|
+
|
|
12
|
+
- constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b"
|
|
13
|
+
|
|
14
|
+
- constant.string:
|
|
15
|
+
start: '"'
|
|
16
|
+
end: '"'
|
|
17
|
+
rules: []
|
|
18
|
+
|
|
19
|
+
- constant.string:
|
|
20
|
+
start: "''"
|
|
21
|
+
end: "''"
|
|
22
|
+
rules: []
|
|
23
|
+
|
|
24
|
+
- comment:
|
|
25
|
+
start: "#"
|
|
26
|
+
end: "$"
|
|
27
|
+
rules: []
|
|
28
|
+
|
|
29
|
+
- comment:
|
|
30
|
+
start: "/\\*"
|
|
31
|
+
end: "\\*/"
|
|
32
|
+
rules: []
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
filetype: objective-c
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.(m|mm|h)$"
|
|
5
|
+
signature: "(obj|objective)-c|#import|@(encode|end|interface|implementation|selector|protocol|synchronized|try|catch|finally|property|optional|required|import|autoreleasepool)"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- type: "\\b(float|double|CGFloat|id|bool|BOOL|Boolean|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline|Class|SEL|IMP|NS(U)?Integer)\\b"
|
|
9
|
+
- type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\\b"
|
|
10
|
+
- type: "\\b[A-Z][A-Z][[:alnum:]]*\\b"
|
|
11
|
+
- type: "\\b[A-Za-z0-9_]*_t\\b"
|
|
12
|
+
- type: "\\bdispatch_[a-zA-Z0-9_]*_t\\b"
|
|
13
|
+
|
|
14
|
+
- statement: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__|__unused|_Nonnull|_Nullable|__block|__builtin.*)"
|
|
15
|
+
- statement: "\\b(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\\b"
|
|
16
|
+
- statement: "\\b(for|if|while|do|else|case|default|switch)\\b"
|
|
17
|
+
- statement: "\\b(try|throw|catch|operator|new|delete)\\b"
|
|
18
|
+
- statement: "\\b(goto|continue|break|return)\\b"
|
|
19
|
+
- statement: "\\b(nonatomic|atomic|readonly|readwrite|strong|weak|assign)\\b"
|
|
20
|
+
- statement: "@(encode|end|interface|implementation|class|selector|protocol|synchronized|try|catch|finally|property|optional|required|import|autoreleasepool)"
|
|
21
|
+
|
|
22
|
+
- preproc: "^[[:space:]]*#[[:space:]]*(define|include|import|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma).*$"
|
|
23
|
+
- preproc: "__[A-Z0-9_]*__"
|
|
24
|
+
|
|
25
|
+
- special: "^[[:space:]]*[#|@][[:space:]]*(import|include)[[:space:]]*[\"|<].*\\/?[>|\"][[:space:]]*$"
|
|
26
|
+
|
|
27
|
+
- statement: "([.:;,+*|=!\\%\\[\\]]|<|>|/|-|&)"
|
|
28
|
+
|
|
29
|
+
- constant.number: "(\\b(-?)?[0-9]+\\b|\\b\\[0-9]+\\.[0-9]+\\b|\\b0x[0-9a-fA-F]+\\b)"
|
|
30
|
+
- constant: "(@\\[(\\\\.|[^\\]])*\\]|@\\{(\\\\.|[^\\}])*\\}|@\\((\\\\.|[^\\)])*\\))"
|
|
31
|
+
- constant: "\\b<(\\\\.[^\\>])*\\>\\b"
|
|
32
|
+
- constant: "\\b(nil|NULL|YES|NO|TRUE|true|FALSE|false|self)\\b"
|
|
33
|
+
- constant: "\\bk[[:alnum]]*\\b"
|
|
34
|
+
- constant.string: "'.'"
|
|
35
|
+
|
|
36
|
+
- constant.string:
|
|
37
|
+
start: '@"'
|
|
38
|
+
end: '"'
|
|
39
|
+
skip: "\\\\."
|
|
40
|
+
rules:
|
|
41
|
+
- constant.specialChar: "\\\\."
|
|
42
|
+
|
|
43
|
+
- constant.string:
|
|
44
|
+
start: '"'
|
|
45
|
+
end: '"'
|
|
46
|
+
skip: "\\\\."
|
|
47
|
+
rules:
|
|
48
|
+
- constant.specialChar: "\\\\."
|
|
49
|
+
|
|
50
|
+
- comment:
|
|
51
|
+
start: "//"
|
|
52
|
+
end: "$"
|
|
53
|
+
rules:
|
|
54
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
55
|
+
|
|
56
|
+
- comment:
|
|
57
|
+
start: "/\\*"
|
|
58
|
+
end: "\\*/"
|
|
59
|
+
rules:
|
|
60
|
+
- todo: "(TODO|XXX|FIXME):?"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
filetype: ocaml
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.mli?$"
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- identifier: "\\b[A-Z][0-9a-z_]{2,}\\b"
|
|
8
|
+
#declarations
|
|
9
|
+
- statement: "\\b(let|val|method|in|and|rec|private|virtual|constraint)\\b"
|
|
10
|
+
#structure items
|
|
11
|
+
- type: "\\b(type|open|class|module|exception|external)\\b"
|
|
12
|
+
#patterns
|
|
13
|
+
- statement: "\\b(fun|function|functor|match|try|with)\\b"
|
|
14
|
+
#patterns-modifiers
|
|
15
|
+
- statement: "\\b(as|when|of)\\b"
|
|
16
|
+
#conditions
|
|
17
|
+
- statement: "\\b(if|then|else)\\b"
|
|
18
|
+
#blocs
|
|
19
|
+
- type: "\\b(begin|end|object|struct|sig|for|while|do|done|to|downto)\\b"
|
|
20
|
+
- type: "'[0-9A-Za-z_]+"
|
|
21
|
+
#constantes
|
|
22
|
+
- constant.bool: "\\b(true|false)\\b"
|
|
23
|
+
#modules/classes
|
|
24
|
+
- special: "\\b(include|inherit|initializer)\\b"
|
|
25
|
+
#expr modifiers
|
|
26
|
+
- special: "\\b(new|ref|mutable|lazy|assert|raise)\\b"
|
|
27
|
+
#character literal
|
|
28
|
+
- constant.string: "'(\\\\[0-7]{3}|\\\\x[A-Fa-f0-9]{2}|\\\\u[A-Fa-f0-9]{4}|\\\\U[A-Fa-f0-9]{8}|\\\\[abfnrtv'\\\"\\\\]|.)'"
|
|
29
|
+
- constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
|
|
30
|
+
- constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
|
|
31
|
+
#string literal
|
|
32
|
+
- constant.string:
|
|
33
|
+
start: '"'
|
|
34
|
+
end: '"'
|
|
35
|
+
skip: "\\\\."
|
|
36
|
+
rules:
|
|
37
|
+
- constant.specialChar: "%."
|
|
38
|
+
- constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
|
|
39
|
+
- constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
|
|
40
|
+
- comment:
|
|
41
|
+
start: "\\(\\*"
|
|
42
|
+
end: "\\*\\)"
|
|
43
|
+
rules: []
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
filetype: perl
|
|
2
|
+
|
|
3
|
+
detect:
|
|
4
|
+
filename: "\\.p[lmp]$"
|
|
5
|
+
header: "^#!.*/(env +)?perl( |$)"
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- type: "\\b(accept|alarm|atan2|bin(d|mode)|c(aller|homp|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\\b|\\b(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\\b|\\b(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|say|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\\b|\\b(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\\b|\\b(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\\b"
|
|
9
|
+
- statement: "\\b(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\\b"
|
|
10
|
+
|
|
11
|
+
- special: "\\-\\>"
|
|
12
|
+
- symbol: "(,|\\.)"
|
|
13
|
+
|
|
14
|
+
#regexes
|
|
15
|
+
- identifier.macro: "m?\\/.*?\\/[a-z]*"
|
|
16
|
+
- identifier.macro: "m?\\|.*?\\|[a-z]*"
|
|
17
|
+
- identifier.macro: "\\bs/.*?/.*?/[a-z]*"
|
|
18
|
+
- identifier.macro: "\\bs\\|.*?\\|.*?\\|[a-z]*"
|
|
19
|
+
|
|
20
|
+
- constant.string:
|
|
21
|
+
start: '"'
|
|
22
|
+
end: '"'
|
|
23
|
+
skip: '\\"'
|
|
24
|
+
rules:
|
|
25
|
+
- identifier.var: '[\\$@%].[a-zA-Z0-9_]*'
|
|
26
|
+
|
|
27
|
+
- constant.string:
|
|
28
|
+
start: "'"
|
|
29
|
+
end: "'"
|
|
30
|
+
skip: "\\\\'"
|
|
31
|
+
rules: []
|
|
32
|
+
|
|
33
|
+
- comment:
|
|
34
|
+
start: "#"
|
|
35
|
+
end: "$"
|
|
36
|
+
rules: []
|
|
37
|
+
|
|
38
|
+
- constant.string: "\"\\(.*\\)\"|qq?\\|.*\\||qq?\\{.*\\}|qq?\\/.*\\/"
|
|
39
|
+
- constant.number: "\\b([0-9]*[.])?[0-9]+"
|
|
40
|
+
- constant.number: "\\b[0-9]+"
|
|
41
|
+
- constant.number: "\\b0x[a-f0-9]+"
|
|
42
|
+
- constant.string.url: "`(.+?)`"
|
|
43
|
+
- identifier.var: '[\\$@%].[a-zA-Z0-9_]*'
|
|
44
|
+
|
|
45
|
+
- preproc:
|
|
46
|
+
start: "(^use| = new)"
|
|
47
|
+
end: ";"
|
|
48
|
+
rules: []
|
|
49
|
+
|
|
50
|
+
- comment:
|
|
51
|
+
start: "^="
|
|
52
|
+
end: "^=cut"
|
|
53
|
+
rules: []
|
|
54
|
+
|
|
55
|
+
- identifier.macro:
|
|
56
|
+
start: "<< 'STOP'"
|
|
57
|
+
end: "STOP"
|
|
58
|
+
rules: []
|