433879046e
This allows more complex detection upon regex rules for a certain amount of lines.
58 lines
1.7 KiB
YAML
58 lines
1.7 KiB
YAML
filetype: julia
|
|
|
|
detect:
|
|
filename: "\\.jl$"
|
|
signature: "^#!.*/(env +)?julia( |$)"
|
|
|
|
rules:
|
|
|
|
# built-in objects
|
|
- constant.bool: "\\b(true|false)\\b"
|
|
- constant: "\\b(nothing|missing)\\b"
|
|
# built-in attributes
|
|
- constant: "__[A-Za-z0-9_]+__"
|
|
# definitions
|
|
- identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]"
|
|
# keywords
|
|
- statement: "\\b(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|finally|for|function|global|if|import|let|local|macro|module|quote|return|struct|try|using|while)\\b"
|
|
- statement: "\\b(abstract\\s+type|primitive\\s+type|mutable\\s+struct)\\b"
|
|
# decorators
|
|
- identifier.macro: "@[A-Za-z0-9_]+"
|
|
# operators
|
|
- symbol.operator: "[:+*|=!%~<>/\\-?&\\\\÷∈∉∘]|\\b(in|isa|where)\\b"
|
|
# for some reason having ^ in the same regex with the other operators broke things
|
|
- symbol.operator: "\\^"
|
|
# parentheses
|
|
- symbol.brackets: "([(){}]|\\[|\\])"
|
|
# numbers
|
|
- 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"
|
|
|
|
- constant.string:
|
|
start: "\"\"\""
|
|
end: "\"\"\""
|
|
rules: []
|
|
|
|
- constant.string:
|
|
start: "\""
|
|
end: "\""
|
|
skip: "\\\\."
|
|
rules:
|
|
- 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})"
|
|
|
|
# Lifted from Rust's syntax highlighting
|
|
- constant.string: "'(\\\\.|.)'"
|
|
- constant.string:
|
|
start: "'\""
|
|
end: "'"
|
|
rules: []
|
|
|
|
- comment:
|
|
start: "#="
|
|
end: "=#"
|
|
rules: []
|
|
|
|
- comment:
|
|
start: "#"
|
|
end: "$"
|
|
rules: []
|