mirror of https://github.com/hamaluik/mkbook
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
634 lines
19 KiB
YAML
634 lines
19 KiB
YAML
%YAML 1.2
|
|
---
|
|
# http://www.sublimetext.com/docs/3/syntax.html
|
|
name: Haxe
|
|
file_extensions:
|
|
- hx
|
|
- hxsl
|
|
- hscript
|
|
scope: source.haxe.2
|
|
contexts:
|
|
main:
|
|
- include: all
|
|
all:
|
|
- include: package
|
|
- include: import
|
|
- include: import-using
|
|
- include: type-abstract
|
|
- include: type-class
|
|
- include: type-enum
|
|
- include: type-interface
|
|
- include: type-typedef
|
|
- include: meta-static
|
|
- include: method
|
|
- include: variable
|
|
- include: block
|
|
- include: block-contents
|
|
arrays:
|
|
- match: '(\[)'
|
|
captures:
|
|
1: punctuation.definition.array.begin.haxe.2
|
|
push:
|
|
- meta_scope: meta.array.haxe.2
|
|
- match: '(\])'
|
|
captures:
|
|
1: punctuation.definition.array.end.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
block:
|
|
- match: '(\{)'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
push:
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
block-contents:
|
|
- include: regex
|
|
- include: arrays
|
|
- include: parameters
|
|
- include: constants
|
|
- include: comments
|
|
- include: strings
|
|
- include: macro
|
|
- include: modifiers
|
|
- include: keywords
|
|
- include: keywords-magic
|
|
- include: keywords-reification
|
|
- include: conditional-compilation
|
|
- include: operator-assignment
|
|
- include: operators
|
|
- include: punctuation-separator
|
|
- include: punctuation-terminator
|
|
- include: punctuation-brackets
|
|
- include: support-class-name
|
|
comments:
|
|
- match: (/\*)
|
|
captures:
|
|
1: punctuation.definition.comment.haxe.2
|
|
push:
|
|
- meta_scope: comment.block.haxe.2
|
|
- match: (\*/)
|
|
captures:
|
|
1: punctuation.definition.comment.haxe.2
|
|
pop: true
|
|
- match: (//).*$\n?
|
|
scope: comment.line.double-slash.haxe.2
|
|
captures:
|
|
1: punctuation.definition.comment.haxe.2
|
|
conditional-compilation:
|
|
- match: (#(end|else))
|
|
scope: keyword.control.directive.conditional.haxe.2
|
|
- match: '((#(if|elseif))\s+([a-zA-Z0-9_]*)\s)'
|
|
captures:
|
|
0: meta.control.directive.conditional.haxe.2
|
|
2: keyword.control.directive.conditional.haxe.2
|
|
- match: ((#(if|elseif))\s*?\()
|
|
captures:
|
|
0: meta.control.directive.conditional.haxe.2
|
|
2: keyword.control.directive.conditional.haxe.2
|
|
push:
|
|
- meta_scope: meta.control.directive.conditional.haxe.2
|
|
- match: (\))
|
|
pop: true
|
|
- match: '(#([a-zA-Z0-9_]*))\s'
|
|
scope: meta.control.directive.conditional.haxe.2
|
|
constants:
|
|
- match: \b(true|false|null)\b
|
|
scope: constant.language.haxe.2
|
|
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
|
|
scope: constant.numeric.haxe.2
|
|
entity-name-class:
|
|
- match: '\b([_A-Za-z]\w*)\b'
|
|
scope: entity.name.type.class.haxe.2
|
|
entity-name-function:
|
|
- match: '([_A-Za-z]\w*)\b(?=\s*[\(])'
|
|
scope: entity.name.function.haxe.2
|
|
import:
|
|
- match: \b(import)\b
|
|
captures:
|
|
1: storage.type.import.haxe.2
|
|
push:
|
|
- meta_scope: meta.import.haxe.2
|
|
- match: (;)
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- match: '((\b[a-z]\w*\.)*)((\b[A-Z]\w*\.?|\*)+)(\b[_a-z]\w*|\*)?'
|
|
captures:
|
|
1: support.package.haxe.2
|
|
3: support.class.haxe.2
|
|
import-using:
|
|
- match: \b(using)\b
|
|
captures:
|
|
1: storage.type.using.haxe.2
|
|
push:
|
|
- meta_scope: meta.using.haxe.2
|
|
- match: (;)
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- match: '(([a-z]\w*\.)*)(([A-Z]\w*\.?)+)'
|
|
captures:
|
|
1: support.package.haxe.2
|
|
3: support.class.haxe.2
|
|
keywords:
|
|
- match: \b(try|catch|throw)\b
|
|
scope: keyword.control.catch-exception.haxe.2
|
|
- match: \b(if|return|while|for|return|break|case|default|continue|do|while|for|switch|if|else)\b
|
|
scope: keyword.control.haxe.flow-control.2
|
|
- match: (\.\.\.)
|
|
scope: keyword.control.directive.haxe.2
|
|
- match: \b(cast|untyped)\b
|
|
scope: keyword.other.untyped.haxe.2
|
|
- match: \btrace\b
|
|
scope: keyword.other.trace.haxe.2
|
|
- match: \b(this|super)\b
|
|
scope: variable.language.haxe.2
|
|
- match: \bnew\b
|
|
scope: keyword.control.new.haxe.2
|
|
- match: \bvar\b
|
|
scope: storage.type.variable.haxe.2
|
|
- match: \bfunction\b
|
|
scope: storage.type.function.haxe.2
|
|
- match: \b(abstract|class|enum|interface|typedef)\b
|
|
scope: storage.type.class.haxe.2
|
|
keywords-abstract:
|
|
- match: \b(from|to)\b
|
|
scope: keyword.other.haxe.2
|
|
keywords-accessor:
|
|
- match: \b(default|get|set|dynamic|never|null)\b
|
|
scope: keyword.other.haxe.2
|
|
keywords-magic:
|
|
- match: \b__\w*__\b
|
|
scope: support.function.magic.haxe.2
|
|
- match: \bprototype\b
|
|
scope: support.variable.magic.haxe.2
|
|
keywords-reification:
|
|
- match: '(\$)([iea])\('
|
|
captures:
|
|
1: punctuation.definition.variable.haxe.2
|
|
2: support.reification.haxe.2
|
|
- match: '((\$)([a-zA-Z.]*))'
|
|
captures:
|
|
2: punctuation.definition.variable.haxe.2
|
|
3: support.reification.haxe.2
|
|
macro:
|
|
- match: ((@:)(require|final|hack|native|coreApi|fakeEnum|macro|build|keep|keepSub|overload|extern|optional|feature|noCompletion|noUsing|allow|access|generic|publicFields|expose|defineFeature|runtime|initPackage|bind|bitmap|file|font|sound|ns|protected|getter|setter|meta|debug|noDebug|headerCode|headerClassCode|cppFileCode|functionCode|functionTailCode|buildXml|cppNamespaceCode|headerNamespaceCode|noStack|depend|include|internal|volatile|transient|functionBody|classContents|remove)\b)
|
|
captures:
|
|
2: punctuation.definition.variable.haxe.2
|
|
3: storage.modifier.macro.haxe.2
|
|
- match: "((@:?)([a-zA-Z_]*))"
|
|
captures:
|
|
2: punctuation.definition.variable.haxe.2
|
|
3: support.macro.haxe.2
|
|
meta-static:
|
|
- match: (static)
|
|
captures:
|
|
1: storage.modifier.haxe.2
|
|
push:
|
|
- meta_scope: meta.static.haxe.2
|
|
- match: '(?<=[\};])'
|
|
pop: true
|
|
- include: modifiers
|
|
- include: method
|
|
- include: variable
|
|
- include: punctuation-terminator
|
|
method:
|
|
- match: (?=function)
|
|
push:
|
|
- meta_scope: meta.method.haxe.2
|
|
- match: '(?<=[\};])'
|
|
pop: true
|
|
- include: method-name
|
|
- include: method-name-post
|
|
- include: method-block
|
|
method-block:
|
|
- match: '(?<=\{)'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
push:
|
|
- meta_scope: meta.method.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
method-name:
|
|
- match: \b(function)\b
|
|
captures:
|
|
1: storage.type.function.haxe.2
|
|
push:
|
|
- meta_scope: meta.method.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.function.haxe.2
|
|
pop: true
|
|
method-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '(\{)|(;)'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
2: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
modifiers:
|
|
- match: \b(public|private|static|dynamic|inline|macro|extern|override)\b
|
|
scope: storage.modifier.haxe.2
|
|
modifiers-inheritance:
|
|
- match: \b(implements|extends)\b
|
|
scope: storage.modifier.haxe.2
|
|
operator-assignment:
|
|
- match: (=)
|
|
scope: keyword.operator.assignment.haxe.2
|
|
operator-optional:
|
|
- match: (\?)(?!\s)
|
|
scope: punctuation.definition.variable.haxe.2
|
|
operators:
|
|
- match: (!|&&|\|\|)
|
|
scope: keyword.operator.logical.haxe.2
|
|
- match: (~|&|\||\^|<<|>>|>>>)
|
|
scope: keyword.operator.bitwise.haxe.2
|
|
- match: (==|!=|<=|>=|<>|<|>)
|
|
scope: keyword.operator.comparison.haxe.2
|
|
- match: (\-\-|\+\+)
|
|
scope: keyword.operator.increment-decrement.haxe.2
|
|
- match: (\-|\+|\*|\/|%)
|
|
scope: keyword.operator.arithmetic.haxe.2
|
|
package:
|
|
- match: '\b(package)(\s+([\w.*]*))?\s*(;)'
|
|
scope: meta.package.haxe.2
|
|
captures:
|
|
1: storage.type.package.haxe.2
|
|
2: support.package.haxe.2
|
|
4: punctuation.terminator.haxe.2
|
|
parameters:
|
|
- match: (\()
|
|
captures:
|
|
1: punctuation.definition.parameters.begin.haxe.2
|
|
push:
|
|
- meta_scope: meta.parameters.haxe.2
|
|
- match: (\))
|
|
captures:
|
|
1: punctuation.definition.parameters.end.haxe.2
|
|
pop: true
|
|
- include: operator-optional
|
|
- include: block
|
|
- include: block-contents
|
|
punctuation-brackets:
|
|
- match: '([\(\<\)\>])'
|
|
scope: punctuation.definition.other.haxe.2
|
|
punctuation-separator:
|
|
- match: "([,:.?])"
|
|
scope: punctuation.separator.haxe.2
|
|
punctuation-terminator:
|
|
- match: ;
|
|
scope: punctuation.terminator.haxe.2
|
|
regex:
|
|
- match: ~/
|
|
captures:
|
|
1: string.regexp.begin.haxe.2
|
|
push:
|
|
- meta_scope: string.regexp.haxe.2
|
|
- match: '(/[gimsu]*)|(\n$)'
|
|
captures:
|
|
1: string.regexp.end.haxe.2
|
|
2: invalid.illegal.haxe.2
|
|
pop: true
|
|
- match: \\.
|
|
scope: constant.character.escape.haxe.2
|
|
strings:
|
|
- match: '"'
|
|
captures:
|
|
0: punctuation.definition.string.begin.haxe.2
|
|
push:
|
|
- meta_scope: string.quoted.double.haxe.2
|
|
- match: '"'
|
|
captures:
|
|
0: punctuation.definition.string.end.haxe.2
|
|
pop: true
|
|
- match: \\.
|
|
scope: constant.character.escape.haxe.2
|
|
- match: "'"
|
|
captures:
|
|
0: punctuation.definition.string.begin.haxe.2
|
|
push:
|
|
- meta_scope: string.quoted.single.haxe.2
|
|
- match: "'"
|
|
captures:
|
|
0: punctuation.definition.string.end.haxe.2
|
|
pop: true
|
|
- match: \\.
|
|
scope: constant.character.escape.haxe.2
|
|
- match: \$\$
|
|
scope: constant.character.escape.haxe.2
|
|
- match: '(\$)(\{)([^}]*)(\})'
|
|
comment: 'String interpolation : "${test.ole}"'
|
|
captures:
|
|
1: variable.other.haxe.2
|
|
2: variable.other.haxe.2
|
|
3: variable.other.haxe.2
|
|
4: variable.other.haxe.2
|
|
- match: '(\$)([\w]*)'
|
|
comment: 'String interpolation : "$test"'
|
|
captures:
|
|
1: variable.other.haxe.2
|
|
2: variable.other.haxe.2
|
|
support-class-name:
|
|
- match: '\b(([a-z][a-zA-Z0-9]*\.)*)(([A-Z]\w*\.?)+)\b'
|
|
captures:
|
|
1: support.package.haxe.2
|
|
3: support.class.haxe.2
|
|
type-abstract:
|
|
- match: (?=abstract)
|
|
push:
|
|
- meta_scope: meta.type.abstract.haxe.2
|
|
- match: '(?<=\})|(;)'
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: type-abstract-name
|
|
- include: type-abstract-name-post
|
|
- include: type-abstract-block
|
|
type-abstract-block:
|
|
- match: '(?<=\{)'
|
|
push:
|
|
- meta_scope: meta.type.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: meta-static
|
|
- include: method
|
|
- include: modifiers
|
|
- include: variable
|
|
- include: block
|
|
- include: block-contents
|
|
type-abstract-name:
|
|
- match: \b(abstract)\b
|
|
captures:
|
|
1: storage.type.class.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.type.class.haxe.2
|
|
pop: true
|
|
type-abstract-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '([\{;])'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
pop: true
|
|
- include: parameters
|
|
- include: keywords-abstract
|
|
- include: punctuation-brackets
|
|
- include: punctuation-separator
|
|
- include: support-class-name
|
|
type-class:
|
|
- match: (?=class)
|
|
push:
|
|
- meta_scope: meta.type.class.haxe.2
|
|
- match: '(?<=\})|(;)'
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: type-class-name
|
|
- include: type-class-name-post
|
|
- include: type-class-block
|
|
type-class-block:
|
|
- match: '(?<=\{)'
|
|
push:
|
|
- meta_scope: meta.type.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: meta-static
|
|
- include: method
|
|
- include: modifiers
|
|
- include: variable
|
|
- include: block
|
|
- include: block-contents
|
|
type-class-name:
|
|
- match: \b(class)\b
|
|
captures:
|
|
1: storage.type.class.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.type.class.haxe.2
|
|
pop: true
|
|
type-class-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '([\{;])'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
pop: true
|
|
- include: type-parameters
|
|
- include: modifiers-inheritance
|
|
- include: punctuation-brackets
|
|
- include: punctuation-separator
|
|
- include: support-class-name
|
|
type-enum:
|
|
- match: (?=enum)
|
|
push:
|
|
- meta_scope: meta.type.enum.haxe.2
|
|
- match: '(?<=\})|(;)'
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: type-enum-name
|
|
- include: type-enum-name-post
|
|
- include: type-enum-block
|
|
type-enum-block:
|
|
- match: '(?<=\{)'
|
|
push:
|
|
- meta_scope: meta.type.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: type-parameters
|
|
- include: block
|
|
- include: block-contents
|
|
type-enum-name:
|
|
- match: \b(enum)\b
|
|
captures:
|
|
1: storage.type.class.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.type.class.haxe.2
|
|
pop: true
|
|
type-enum-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '([\{;])'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
pop: true
|
|
- include: type-parameters
|
|
- include: punctuation-brackets
|
|
- include: punctuation-separator
|
|
- include: support-class-name
|
|
type-interface:
|
|
- match: (?=interface)
|
|
push:
|
|
- meta_scope: meta.type.interface.haxe.2
|
|
- match: '(?<=\})|(;)'
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: type-interface-name
|
|
- include: type-interface-name-post
|
|
- include: type-interface-block
|
|
type-interface-block:
|
|
- match: '(?<=\{)'
|
|
push:
|
|
- meta_scope: meta.type.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: method
|
|
- include: variable
|
|
- include: block
|
|
- include: block-contents
|
|
type-interface-name:
|
|
- match: \b(interface)\b
|
|
captures:
|
|
1: storage.type.class.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.type.class.haxe.2
|
|
pop: true
|
|
type-interface-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '([\{;])'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
pop: true
|
|
- include: modifiers-inheritance
|
|
- include: punctuation-brackets
|
|
- include: punctuation-separator
|
|
- include: support-class-name
|
|
type-parameters:
|
|
- match: (\<)
|
|
captures:
|
|
1: punctuation.definition.parameters.begin.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.parameters.haxe.2
|
|
- match: (\>)
|
|
captures:
|
|
1: punctuation.definition.parameters.end.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
type-typedef:
|
|
- match: (?=typedef)
|
|
push:
|
|
- meta_scope: meta.type.typedef.haxe.2
|
|
- match: '(?<=\})|(;)'
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: type-typedef-name
|
|
- include: type-typedef-name-post
|
|
- include: type-typedef-block
|
|
type-typedef-block:
|
|
- match: '(?<=\{)'
|
|
push:
|
|
- meta_scope: meta.type.block.haxe.2
|
|
- match: '(\})'
|
|
captures:
|
|
1: punctuation.definition.block.end.haxe.2
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
type-typedef-name:
|
|
- match: \b(typedef)\b
|
|
captures:
|
|
1: storage.type.class.haxe.2
|
|
push:
|
|
- meta_scope: meta.type.name.haxe.2
|
|
- match: '([_A-Za-z]\w*)'
|
|
captures:
|
|
1: entity.name.type.class.haxe.2
|
|
pop: true
|
|
type-typedef-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: '(\{)|(?=;)'
|
|
captures:
|
|
1: punctuation.definition.block.begin.haxe.2
|
|
pop: true
|
|
- include: punctuation-brackets
|
|
- include: punctuation-separator
|
|
- include: operator-assignment
|
|
- include: support-class-name
|
|
variable:
|
|
- match: (?=var)
|
|
push:
|
|
- meta_scope: meta.variable.haxe.2
|
|
- match: (;)
|
|
captures:
|
|
1: punctuation.terminator.haxe.2
|
|
pop: true
|
|
- include: variable-name
|
|
- include: variable-assign
|
|
- include: variable-name-post
|
|
variable-accessors:
|
|
- match: (\()
|
|
captures:
|
|
1: punctuation.definition.parameters.begin.haxe.2
|
|
push:
|
|
- meta_scope: meta.parameters.haxe.2
|
|
- match: (\))
|
|
captures:
|
|
1: punctuation.definition.parameters.end.haxe.2
|
|
pop: true
|
|
- include: operator-optional
|
|
- include: keywords-accessor
|
|
- include: punctuation-separator
|
|
variable-assign:
|
|
- match: (=)
|
|
captures:
|
|
1: keyword.operator.assignment.haxe.2
|
|
push:
|
|
- match: (?=;)
|
|
pop: true
|
|
- include: block
|
|
- include: block-contents
|
|
variable-name:
|
|
- match: \b(var)\b
|
|
captures:
|
|
1: storage.type.variable.haxe.2
|
|
push:
|
|
- meta_scope: meta.variable.name.haxe.2
|
|
- match: '([_a-zA-Z]\w*)'
|
|
captures:
|
|
1: entity.name.variable.haxe.2
|
|
pop: true
|
|
variable-name-post:
|
|
- match: (?<=\w)
|
|
push:
|
|
- match: (?=;)|(?==)
|
|
pop: true
|
|
- include: variable-accessors
|
|
- include: block-contents
|