mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-20 04:10:06 -04:00
New kotlin parser
This commit is contained in:
parent
53797ad88f
commit
16a4da493c
3 changed files with 178 additions and 179 deletions
|
|
@ -117,7 +117,7 @@
|
||||||
"revision": "12ea597262125fc22fd2e91aa953ac69b19c26ca"
|
"revision": "12ea597262125fc22fd2e91aa953ac69b19c26ca"
|
||||||
},
|
},
|
||||||
"kotlin": {
|
"kotlin": {
|
||||||
"revision": "48bfb38abd93f8d617877d7bb7f92a6bb1166285"
|
"revision": "0369bdc8a7ed42830ff718af1173129d2028769a"
|
||||||
},
|
},
|
||||||
"latex": {
|
"latex": {
|
||||||
"revision": "2c0d03a36ee979bc697f6a9dd119174cf0ef15e0"
|
"revision": "2c0d03a36ee979bc697f6a9dd119174cf0ef15e0"
|
||||||
|
|
|
||||||
|
|
@ -205,10 +205,10 @@ list.java = {
|
||||||
|
|
||||||
list.kotlin = {
|
list.kotlin = {
|
||||||
install_info = {
|
install_info = {
|
||||||
url = "https://github.com/tormodatt/tree-sitter-kotlin",
|
url = "https://github.com/Joakker/tree-sitter-kotlin",
|
||||||
files = { "src/parser.c" },
|
files = { "src/parser.c" },
|
||||||
},
|
},
|
||||||
maintainers = { "@tormodatt" },
|
maintainers = { "@Joakker" },
|
||||||
}
|
}
|
||||||
|
|
||||||
list.html = {
|
list.html = {
|
||||||
|
|
|
||||||
|
|
@ -1,191 +1,190 @@
|
||||||
;;; Kotlin
|
|
||||||
|
|
||||||
(simple_identifier) @variable
|
|
||||||
; Reset some
|
|
||||||
(navigation_suffix (simple_identifier) @none)
|
|
||||||
(import_header (identifier (simple_identifier) @none))
|
|
||||||
(package_header (identifier (simple_identifier) @none))
|
|
||||||
|
|
||||||
|
|
||||||
;; Strings
|
|
||||||
(line_string_literal) @string
|
|
||||||
(multi_line_string_literal) @string
|
|
||||||
; Interpolated
|
|
||||||
(interpolated_identifier) @variable
|
|
||||||
(interpolated_expression) @none
|
|
||||||
|
|
||||||
|
|
||||||
;; Suffixes
|
|
||||||
(navigation_expression (navigation_suffix (simple_identifier) @property ))
|
|
||||||
; Reset some
|
|
||||||
(assignment (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
|
||||||
(call_expression (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
|
||||||
(navigation_expression (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; Variables/fields
|
|
||||||
; attribute in data classes etc.
|
|
||||||
(class_parameter (simple_identifier) @field)
|
|
||||||
; variable in normal classes
|
|
||||||
(property_declaration (variable_declaration (simple_identifier) @variable))
|
|
||||||
; accessed field in blocks. `logger` in `logger.info("")`
|
|
||||||
(statements (call_expression (navigation_expression (simple_identifier) @variable)))
|
|
||||||
(indexing_expression (call_expression (navigation_expression (simple_identifier) @variable)))
|
|
||||||
; `classProp` in `classProp.lastIndex`
|
|
||||||
(statements (navigation_expression (simple_identifier) @variable))
|
|
||||||
; `variable` in `variable = car.doors`
|
|
||||||
(directly_assignable_expression (simple_identifier) @variable)
|
|
||||||
|
|
||||||
|
|
||||||
;; Constants
|
|
||||||
; Assume all-caps names are constants
|
|
||||||
((simple_identifier) @constant
|
|
||||||
(#match? @constant "^[A-Z][A-Z_0-9]+$"))
|
|
||||||
((interpolated_identifier) @constant
|
|
||||||
(#vim-match? @constant "^[A-Z][A-Z_0-9]+$"))
|
|
||||||
|
|
||||||
|
|
||||||
(lambda_parameters) @parameter
|
|
||||||
|
|
||||||
|
|
||||||
;; Builtin functions
|
|
||||||
((simple_identifier) @function.macro
|
|
||||||
(#vim-match? @function.macro "^(commonPrefixWith|commonSuffixWith|endsWith|findAnyOf|findLastAnyOf|hasSurrogatePairAt|ifBlank|ifEmpty|indexOf|indexOfAny|isEmpty|isNotBlank|isNotEmpty|isNullOrBlank|isNullOrEmpty|lastIndexOf|lastIndexOfAny|lineSequence|lines|orEmpty|padEnd|padStart|removePrefix|removeRange|removeSuffix|removeSurrounding|replace|replaceAfter|replaceAfterLast|replaceBefore|replaceBeforeLast|replaceFirst|replaceRange|split|splitToSequence|startsWith|subSequence|substring|substringAfter|substringAfterLast|substringBefore|substringBeforeLast|trim|trimEnd|trimStart|containsKey|containsValue|filter|filterKeys|filterNot|filterNotTo|filterTo|filterValues|getOrElse|getOrPut|getValue|ifEmpty|isNotEmpty|isNullOrEmpty|mapKeys|mapKeysTo|mapValues|mapValuesTo|orEmpty|putAll|remove|toMap|toMutableMap|toPair|also|apply|let|run|takeIf|takeUnless|prependIndent|replaceIndent|replaceIndentByMargin|trimIndent|trimMargin|all|any|asIterable|asSequence|associate|associateBy|associateByTo|associateTo|associateWith|associateWithTo|chunked|chunkedSequence|count|drop|dropLast|dropLastWhile|dropWhile|elementAtOrElse|elementAtOrNull|filter|filterIndexed|filterIndexedTo|filterNot|filterNotTo|filterTo|find|findLast|first|firstOrNull|flatMap|flatMapIndexed|flatMapIndexedTo|flatMapTo|fold|foldIndexed|foldRight|foldRightIndexed|forEach|forEachIndexed|getOrElse|getOrNull|groupBy|groupByTo|groupingBy|indexOfFirst|indexOfLast|last|lastOrNull|map|mapIndexed|mapIndexedNotNull|mapIndexedNotNullTo|mapIndexedTo|mapNotNull|mapNotNullTo|mapTo|max|maxBy|maxByOrNull|maxOf|maxOfOrNull|maxOfWith|maxOfWithOrNull|maxOrNull|maxWith|maxWithOrNull|min|minBy|minByOrNull|minOf|minOfOrNull|minOfWith|minOfWithOrNull|minOrNull|minWith|minWithOrNull|none|onEach|onEachIndexed|partition|random|randomOrNull|reduce|reduceIndexed|reduceIndexedOrNull|reduceOrNull|reduceRight|reduceRightIndexed|reduceRightIndexedOrNull|reduceRightOrNull|reversed|runningFold|runningFoldIndexed|runningReduce|runningReduceIndexed|scan|scanIndexed|scanReduce|scanReduceIndexed|single|singleOrNull|slice|sumBy|sumByDouble|sumOf|take|takeLast|takeLastWhile|takeWhile|toCollection|toHashSet|toList|toMutableList|toSet|windowed|windowedSequence|withIndex|zip|zipWithNext)$"))
|
|
||||||
|
|
||||||
(call_expression
|
|
||||||
(simple_identifier) @function)
|
|
||||||
|
|
||||||
((simple_identifier) @function.builtin
|
|
||||||
(#vim-match? @function.builtin "^(print|println|buildMap|emptyMap|hashMapOf|linkedMapOf|mapOf|mutableMapOf|buildSet|emptySet|hashSetOf|linkedSetOf|mutableSetOf|setOf|setOfNotNull|TODO|repeat|run|with)$"))
|
|
||||||
|
|
||||||
|
|
||||||
;; Numbers
|
|
||||||
(integer_literal) @number
|
|
||||||
|
|
||||||
;; Booleans
|
|
||||||
(boolean_literal) @boolean
|
|
||||||
|
|
||||||
;; Types
|
|
||||||
(type_identifier) @type
|
|
||||||
|
|
||||||
;; Annotations
|
|
||||||
(annotation (single_annotation) @attribute)
|
|
||||||
(single_annotation (user_type (type_identifier) @attribute))
|
|
||||||
(single_annotation (constructor_invocation (user_type (type_identifier) @attribute)))
|
|
||||||
|
|
||||||
|
|
||||||
;; it
|
|
||||||
(indexing_expression (simple_identifier) @variable.builtin
|
|
||||||
(#vim-match? @variable.builtin "^it$"))
|
|
||||||
|
|
||||||
|
|
||||||
;; Operators
|
|
||||||
[
|
[
|
||||||
"="
|
(comment)
|
||||||
"-"
|
(shebang)
|
||||||
"->"
|
] @comment
|
||||||
"+"
|
|
||||||
"++"
|
|
||||||
"--"
|
|
||||||
"*"
|
|
||||||
] @operator
|
|
||||||
|
|
||||||
;; Keyword operators
|
|
||||||
[
|
|
||||||
"in"
|
|
||||||
] @keyword.operator
|
|
||||||
|
|
||||||
((simple_identifier) @keyword.operator
|
|
||||||
(#vim-match? @keyword.operator "^to$"))
|
|
||||||
|
|
||||||
|
|
||||||
;; Keywords
|
|
||||||
[
|
|
||||||
"this"
|
|
||||||
"override"
|
|
||||||
"enum"
|
|
||||||
"as"
|
|
||||||
"class"
|
|
||||||
"object"
|
|
||||||
"data"
|
|
||||||
"val"
|
|
||||||
"init"
|
|
||||||
"private"
|
|
||||||
"var"
|
|
||||||
"break"
|
|
||||||
"by"
|
|
||||||
"companion"
|
|
||||||
"constructor"
|
|
||||||
"throw"
|
|
||||||
] @keyword
|
|
||||||
|
|
||||||
"fun" @keyword.function
|
|
||||||
"return" @keyword.return
|
|
||||||
|
|
||||||
(null_literal) @keyword
|
|
||||||
|
|
||||||
; const etc.
|
|
||||||
(property_modifier) @keyword
|
|
||||||
|
|
||||||
|
|
||||||
;; Conditionals
|
|
||||||
[
|
|
||||||
"if"
|
|
||||||
"is"
|
|
||||||
"else"
|
|
||||||
"when"
|
|
||||||
] @conditional
|
|
||||||
|
|
||||||
|
|
||||||
;; Loops
|
|
||||||
[
|
|
||||||
"for"
|
|
||||||
"while"
|
|
||||||
] @repeat
|
|
||||||
|
|
||||||
|
|
||||||
;; Includes
|
|
||||||
|
|
||||||
"import" @include
|
|
||||||
"package" @include
|
|
||||||
|
|
||||||
|
|
||||||
;; Punctuation
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"::"
|
":"
|
||||||
";"
|
","
|
||||||
"."
|
"."
|
||||||
","
|
|
||||||
] @punctuation.delimiter
|
] @punctuation.delimiter
|
||||||
|
|
||||||
[
|
[
|
||||||
"$"
|
"("
|
||||||
"${"
|
")"
|
||||||
"}"
|
"{"
|
||||||
] @none
|
"}"
|
||||||
|
|
||||||
[
|
|
||||||
"["
|
|
||||||
"]"
|
|
||||||
"{"
|
|
||||||
"}"
|
|
||||||
"("
|
|
||||||
")"
|
|
||||||
] @punctuation.bracket
|
] @punctuation.bracket
|
||||||
|
|
||||||
[
|
[
|
||||||
"$"
|
"class"
|
||||||
] @punctuation.special
|
"object"
|
||||||
|
"fun"
|
||||||
|
"var"
|
||||||
|
"val"
|
||||||
|
"try"
|
||||||
|
"catch"
|
||||||
|
"finally"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
;; Comments
|
"import" @include
|
||||||
(comment) @comment
|
|
||||||
|
|
||||||
; Functions
|
"return" @keyword.return
|
||||||
(function_declaration (simple_identifier) @function)
|
|
||||||
|
|
||||||
|
(return_expr
|
||||||
|
"return@" @keyword.return
|
||||||
|
label: (identifier) @label)
|
||||||
|
(break_expr
|
||||||
|
"break@" @keyword
|
||||||
|
label: (identifier) @label)
|
||||||
|
|
||||||
|
(label
|
||||||
|
name: (identifier) @label) @constant
|
||||||
|
|
||||||
|
[
|
||||||
|
"for"
|
||||||
|
"do"
|
||||||
|
"while"
|
||||||
|
] @repeat
|
||||||
|
|
||||||
|
[
|
||||||
|
"||"
|
||||||
|
"&&"
|
||||||
|
"!="
|
||||||
|
"!=="
|
||||||
|
"=="
|
||||||
|
"==="
|
||||||
|
"<"
|
||||||
|
">"
|
||||||
|
"<="
|
||||||
|
">="
|
||||||
|
".."
|
||||||
|
"+"
|
||||||
|
"-"
|
||||||
|
"%"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
[
|
||||||
|
"as"
|
||||||
|
"as?"
|
||||||
|
"in"
|
||||||
|
] @keyword.operator
|
||||||
|
|
||||||
|
(class_decl
|
||||||
|
name: (identifier) @type)
|
||||||
|
(class_decl
|
||||||
|
super: (_) @type)
|
||||||
|
(object_decl
|
||||||
|
name: (identifier) @type)
|
||||||
|
|
||||||
|
(class_param
|
||||||
|
name: (identifier) @parameter
|
||||||
|
type: (_) @type)
|
||||||
|
|
||||||
|
(type_constraints
|
||||||
|
"where" @keyword
|
||||||
|
(type_constraint
|
||||||
|
type: (identifier) @type
|
||||||
|
super: (_) @type))
|
||||||
|
|
||||||
|
(property
|
||||||
|
name: (identifier) @property)
|
||||||
|
(property
|
||||||
|
type: (_) @type)
|
||||||
|
|
||||||
|
(enum_entry
|
||||||
|
name: (identifier) @constant)
|
||||||
|
|
||||||
|
(func_decl
|
||||||
|
name: (identifier) @function)
|
||||||
|
(func_decl
|
||||||
|
return: (_) @type)
|
||||||
|
|
||||||
|
(param_decl
|
||||||
|
name: (identifier) @parameter
|
||||||
|
type: (_) @type)
|
||||||
|
|
||||||
|
(type_param
|
||||||
|
name: (identifier) @type)
|
||||||
|
|
||||||
|
(call
|
||||||
|
function: (identifier) @function)
|
||||||
|
(call
|
||||||
|
function: (selector
|
||||||
|
field: (identifier) @function))
|
||||||
|
|
||||||
|
(getter
|
||||||
|
"get" @function.builtin)
|
||||||
|
(setter
|
||||||
|
"set" @function.builtin)
|
||||||
|
|
||||||
|
((identifier) @function.builtin
|
||||||
|
(#any-of? @function.builtin
|
||||||
|
"arrayOf"
|
||||||
|
"arrayOfNulls"
|
||||||
|
"assert"
|
||||||
|
"booleanArrayOf"
|
||||||
|
"byteArrayOf"
|
||||||
|
"Char"
|
||||||
|
"charArrayOf"
|
||||||
|
"check"
|
||||||
|
"checkNotNull"
|
||||||
|
"doubleArrayOf"
|
||||||
|
"emptyArray"
|
||||||
|
"enumValueOf"
|
||||||
|
"enumValues"
|
||||||
|
"error"
|
||||||
|
"floatArrayOf"
|
||||||
|
"intArrayOf"
|
||||||
|
"lazy"
|
||||||
|
"lazyOf"
|
||||||
|
"longArrayOf"
|
||||||
|
"repeat"
|
||||||
|
"require"
|
||||||
|
"requireNotNull"
|
||||||
|
"run"
|
||||||
|
"runCatching"
|
||||||
|
"shortArrayOf"
|
||||||
|
"suspend"
|
||||||
|
"synchronized"
|
||||||
|
"TODO"
|
||||||
|
"ubyteArrayOf"
|
||||||
|
"UintArray"
|
||||||
|
"uintArrayOf"
|
||||||
|
"ULongArray"
|
||||||
|
"ulongArrayOf"
|
||||||
|
"UShortArray"
|
||||||
|
"ushortArrayOf"
|
||||||
|
"with"
|
||||||
|
"print"
|
||||||
|
"println"
|
||||||
|
"readLine"))
|
||||||
|
((identifier) @constant.builtin
|
||||||
|
(#eq? @constant.builtin "it"))
|
||||||
|
|
||||||
|
(lambda
|
||||||
|
args: (var_decl
|
||||||
|
name: (identifier) @parameter))
|
||||||
|
(lambda
|
||||||
|
args: (var_decl
|
||||||
|
type: (_) @type ))
|
||||||
|
|
||||||
|
(binary_expr
|
||||||
|
operator: (identifier) @keyword.operator)
|
||||||
|
|
||||||
(ERROR) @error
|
(ERROR) @error
|
||||||
|
|
||||||
; TODO parameter
|
(integer) @number
|
||||||
|
(float) @float
|
||||||
|
|
||||||
|
(string) @string
|
||||||
|
|
||||||
|
"null" @constant
|
||||||
|
|
||||||
|
[
|
||||||
|
"true"
|
||||||
|
"false"
|
||||||
|
] @boolean
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue