390 lines
11 KiB
Plaintext
390 lines
11 KiB
Plaintext
|
%YAML 1.2
|
||
|
---
|
||
|
# http://www.sublimetext.com/docs/3/syntax.html
|
||
|
name: Kotlin
|
||
|
file_extensions:
|
||
|
- kt
|
||
|
- kts
|
||
|
scope: source.Kotlin
|
||
|
contexts:
|
||
|
main:
|
||
|
- include: comments
|
||
|
- match: '^\s*(package)\b(?:\s*([^ ;$]+)\s*)?'
|
||
|
captures:
|
||
|
1: keyword.other.kotlin
|
||
|
2: entity.name.package.kotlin
|
||
|
- include: imports
|
||
|
- include: statements
|
||
|
classes:
|
||
|
- match: (?=\s*(?:companion|class|object|interface))
|
||
|
push:
|
||
|
- match: "}|(?=$)"
|
||
|
pop: true
|
||
|
- match: \b(companion\s*)?(class|object|interface)\b
|
||
|
captures:
|
||
|
1: keyword.other.kotlin
|
||
|
push:
|
||
|
- match: '(?=<|{|\(|:)'
|
||
|
pop: true
|
||
|
- match: \b(object)\b
|
||
|
scope: keyword.other.kotlin
|
||
|
- match: \w+
|
||
|
scope: entity.name.type.class.kotlin
|
||
|
- match: <
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: generics
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: parameters
|
||
|
- match: (:)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: "(?={|$)"
|
||
|
pop: true
|
||
|
- match: \w+
|
||
|
scope: entity.other.inherited-class.kotlin
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '\}'
|
||
|
pop: true
|
||
|
- include: statements
|
||
|
comments:
|
||
|
- match: /\*
|
||
|
captures:
|
||
|
0: punctuation.definition.comment.kotlin
|
||
|
push:
|
||
|
- meta_scope: comment.block.kotlin
|
||
|
- match: \*/
|
||
|
captures:
|
||
|
0: punctuation.definition.comment.kotlin
|
||
|
pop: true
|
||
|
- match: \s*((//).*$\n?)
|
||
|
captures:
|
||
|
1: comment.line.double-slash.kotlin
|
||
|
2: punctuation.definition.comment.kotlin
|
||
|
constants:
|
||
|
- match: \b(true|false|null|this|super)\b
|
||
|
scope: constant.language.kotlin
|
||
|
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b'
|
||
|
scope: constant.numeric.kotlin
|
||
|
- match: '\b([A-Z][A-Z0-9_]+)\b'
|
||
|
scope: constant.other.kotlin
|
||
|
expressions:
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- include: types
|
||
|
- include: strings
|
||
|
- include: constants
|
||
|
- include: comments
|
||
|
- include: keywords
|
||
|
functions:
|
||
|
- match: (?=\s*(?:fun))
|
||
|
push:
|
||
|
- match: "}|(?=$)"
|
||
|
pop: true
|
||
|
- match: \b(fun)\b
|
||
|
captures:
|
||
|
1: keyword.other.kotlin
|
||
|
push:
|
||
|
- match: (?=\()
|
||
|
pop: true
|
||
|
- match: <
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: generics
|
||
|
- match: '([\.<\?>\w]+\.)?(\w+)'
|
||
|
captures:
|
||
|
2: entity.name.function.kotlin
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: parameters
|
||
|
- match: (:)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: "(?={|=|$)"
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '(?=\})'
|
||
|
pop: true
|
||
|
- include: statements
|
||
|
- match: (=)
|
||
|
captures:
|
||
|
1: keyword.operator.assignment.kotlin
|
||
|
push:
|
||
|
- match: (?=$)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
generics:
|
||
|
- match: (:)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: (?=,|>)
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- include: keywords
|
||
|
- match: \w+
|
||
|
scope: storage.type.generic.kotlin
|
||
|
getters-and-setters:
|
||
|
- match: \b(get)\b\s*\(\s*\)
|
||
|
captures:
|
||
|
1: entity.name.function.kotlin
|
||
|
push:
|
||
|
- match: '\}|(?=\bset\b)|$'
|
||
|
pop: true
|
||
|
- match: (=)
|
||
|
captures:
|
||
|
1: keyword.operator.assignment.kotlin
|
||
|
push:
|
||
|
- match: (?=$|\bset\b)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '\}'
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- match: \b(set)\b\s*(?=\()
|
||
|
captures:
|
||
|
1: entity.name.function.kotlin
|
||
|
push:
|
||
|
- match: '\}|(?=\bget\b)|$'
|
||
|
pop: true
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: parameters
|
||
|
- match: (=)
|
||
|
captures:
|
||
|
1: keyword.operator.assignment.kotlin
|
||
|
push:
|
||
|
- match: (?=$|\bset\b)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '\}'
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
imports:
|
||
|
- match: '^\s*(import)\s+[^ $]+\s+(as)?'
|
||
|
captures:
|
||
|
1: keyword.other.kotlin
|
||
|
2: keyword.other.kotlin
|
||
|
keywords:
|
||
|
- match: \b(var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\b
|
||
|
scope: storage.modifier.kotlin
|
||
|
- match: \b(try|catch|finally|throw)\b
|
||
|
scope: keyword.control.catch-exception.kotlin
|
||
|
- match: \b(if|else|while|for|do|return|when|where|break|continue)\b
|
||
|
scope: keyword.control.kotlin
|
||
|
- match: \b(in|is|as|assert)\b
|
||
|
scope: keyword.operator.kotlin
|
||
|
- match: (==|!=|===|!==|<=|>=|<|>)
|
||
|
scope: keyword.operator.comparison.kotlin
|
||
|
- match: (=)
|
||
|
scope: keyword.operator.assignment.kotlin
|
||
|
- match: (:)
|
||
|
scope: keyword.operator.declaration.kotlin
|
||
|
- match: (\.)
|
||
|
scope: keyword.operator.dot.kotlin
|
||
|
- match: (\-\-|\+\+)
|
||
|
scope: keyword.operator.increment-decrement.kotlin
|
||
|
- match: (\-|\+|\*|\/|%)
|
||
|
scope: keyword.operator.arithmetic.kotlin
|
||
|
- match: (\+=|\-=|\*=|\/=)
|
||
|
scope: keyword.operator.arithmetic.assign.kotlin
|
||
|
- match: (!|&&|\|\|)
|
||
|
scope: keyword.operator.logical.kotlin
|
||
|
- match: (\.\.)
|
||
|
scope: keyword.operator.range.kotlin
|
||
|
- match: (;)
|
||
|
scope: punctuation.terminator.kotlin
|
||
|
namespaces:
|
||
|
- match: \b(namespace)\b
|
||
|
scope: keyword.other.kotlin
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '\}'
|
||
|
pop: true
|
||
|
- include: statements
|
||
|
parameters:
|
||
|
- match: (:)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: (?=,|\)|=)
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- match: (=)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: (?=,|\))
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- include: keywords
|
||
|
- match: \w+
|
||
|
scope: variable.parameter.function.kotlin
|
||
|
statements:
|
||
|
- include: namespaces
|
||
|
- include: typedefs
|
||
|
- include: classes
|
||
|
- include: functions
|
||
|
- include: variables
|
||
|
- include: getters-and-setters
|
||
|
- include: expressions
|
||
|
strings:
|
||
|
- match: '"""'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.begin.kotlin
|
||
|
push:
|
||
|
- meta_scope: string.quoted.third.kotlin
|
||
|
- match: '"""'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.end.kotlin
|
||
|
pop: true
|
||
|
- match: '(\$\w+|\$\{[^\}]+\})'
|
||
|
scope: variable.parameter.template.kotlin
|
||
|
- match: \\.
|
||
|
scope: constant.character.escape.kotlin
|
||
|
- match: '"'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.begin.kotlin
|
||
|
push:
|
||
|
- meta_scope: string.quoted.double.kotlin
|
||
|
- match: '"'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.end.kotlin
|
||
|
pop: true
|
||
|
- match: '(\$\w+|\$\{[^\}]+\})'
|
||
|
scope: variable.parameter.template.kotlin
|
||
|
- match: \\.
|
||
|
scope: constant.character.escape.kotlin
|
||
|
- match: "'"
|
||
|
captures:
|
||
|
0: punctuation.definition.string.begin.kotlin
|
||
|
push:
|
||
|
- meta_scope: string.quoted.single.kotlin
|
||
|
- match: "'"
|
||
|
captures:
|
||
|
0: punctuation.definition.string.end.kotlin
|
||
|
pop: true
|
||
|
- match: \\.
|
||
|
scope: constant.character.escape.kotlin
|
||
|
- match: "`"
|
||
|
captures:
|
||
|
0: punctuation.definition.string.begin.kotlin
|
||
|
push:
|
||
|
- meta_scope: string.quoted.single.kotlin
|
||
|
- match: "`"
|
||
|
captures:
|
||
|
0: punctuation.definition.string.end.kotlin
|
||
|
pop: true
|
||
|
typedefs:
|
||
|
- match: (?=\s*(?:type))
|
||
|
push:
|
||
|
- match: (?=$)
|
||
|
pop: true
|
||
|
- match: \b(type)\b
|
||
|
scope: keyword.other.kotlin
|
||
|
- match: <
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: generics
|
||
|
- include: expressions
|
||
|
types:
|
||
|
- match: \b(Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b
|
||
|
scope: storage.type.buildin.kotlin
|
||
|
- match: \b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b
|
||
|
scope: storage.type.buildin.array.kotlin
|
||
|
- match: \b(Array|List|Map)<\b
|
||
|
captures:
|
||
|
1: storage.type.buildin.collection.kotlin
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- include: keywords
|
||
|
- match: \w+<
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- include: keywords
|
||
|
- match: (#)\(
|
||
|
captures:
|
||
|
1: keyword.operator.tuple.kotlin
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- match: '\{'
|
||
|
push:
|
||
|
- match: '\}'
|
||
|
pop: true
|
||
|
- include: statements
|
||
|
- match: \(
|
||
|
push:
|
||
|
- match: \)
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- match: (->)
|
||
|
scope: keyword.operator.declaration.kotlin
|
||
|
variables:
|
||
|
- match: (?=\s*(?:var|val))
|
||
|
push:
|
||
|
- match: (?=:|=|$)
|
||
|
pop: true
|
||
|
- match: \b(var|val)\b
|
||
|
captures:
|
||
|
1: keyword.other.kotlin
|
||
|
push:
|
||
|
- match: (?=:|=|$)
|
||
|
pop: true
|
||
|
- match: <
|
||
|
push:
|
||
|
- match: ">"
|
||
|
pop: true
|
||
|
- include: generics
|
||
|
- match: '([\.<\?>\w]+\.)?(\w+)'
|
||
|
captures:
|
||
|
2: entity.name.variable.kotlin
|
||
|
- match: (:)
|
||
|
captures:
|
||
|
1: keyword.operator.declaration.kotlin
|
||
|
push:
|
||
|
- match: (?==|$)
|
||
|
pop: true
|
||
|
- include: types
|
||
|
- include: getters-and-setters
|
||
|
- match: (=)
|
||
|
captures:
|
||
|
1: keyword.operator.assignment.kotlin
|
||
|
push:
|
||
|
- match: (?=$)
|
||
|
pop: true
|
||
|
- include: expressions
|
||
|
- include: getters-and-setters
|