blob: 9b85b8ef5c5d2835af2568d73afae603f81f55b1 [file] [log] [blame]
dkearnse30d8e42023-09-18 02:51:22 +10001" Vim syntax file
2" Language: Kotlin
3" Maintainer: Alexander Udalov
4" URL: https://github.com/udalov/kotlin-vim
5" Last Change: 30 December 2022
6
7if exists('b:current_syntax')
8 finish
9endif
10
11syn keyword ktStatement break continue return
12syn keyword ktConditional if else when
13syn keyword ktRepeat do for while
14syn keyword ktOperator in is by
15syn keyword ktKeyword get set out super this where
16syn keyword ktException try catch finally throw
17
18syn keyword ktInclude import package
19
20" Generated stdlib class names {{{
21" The following is generated by https://github.com/udalov/kotlin-vim/blob/master/extra/generate-stdlib-class-names.main.kts
22syn keyword ktType AbstractCollection AbstractCoroutineContextElement AbstractCoroutineContextKey AbstractDoubleTimeSource AbstractIterator AbstractList AbstractLongTimeSource
23syn keyword ktType AbstractMap AbstractMutableCollection AbstractMutableList AbstractMutableMap AbstractMutableSet AbstractSet AccessDeniedException Accessor Annotation
24syn keyword ktType AnnotationRetention AnnotationTarget Any Appendable ArithmeticException Array ArrayDeque ArrayList AssertionError Boolean BooleanArray BooleanIterator
25syn keyword ktType BuilderInference Byte ByteArray ByteIterator CName CallsInPlace CancellationException Char CharArray CharCategory CharDirectionality CharIterator CharProgression
26syn keyword ktType CharRange CharSequence CharacterCodingException Charsets ClassCastException Cloneable ClosedFloatingPointRange ClosedRange Collection Comparable
27syn keyword ktType ComparableTimeMark Comparator ConcurrentModificationException ConditionalEffect ContextFunctionTypeParams Continuation ContinuationInterceptor ContractBuilder
28syn keyword ktType CopyActionContext CopyActionResult CoroutineContext DeepRecursiveFunction DeepRecursiveScope Delegates Deprecated DeprecatedSinceKotlin DeprecationLevel
29syn keyword ktType Destructured Double DoubleArray DoubleIterator DslMarker Duration DurationUnit Effect Element EmptyCoroutineContext Entry Enum EnumEntries Error Exception
30syn keyword ktType ExperimentalContracts ExperimentalJsExport ExperimentalMultiplatform ExperimentalObjCName ExperimentalObjCRefinement ExperimentalPathApi ExperimentalStdlibApi
31syn keyword ktType ExperimentalSubclassOptIn ExperimentalTime ExperimentalTypeInference ExperimentalUnsignedTypes ExtensionFunctionType FileAlreadyExistsException
32syn keyword ktType FileSystemException FileTreeWalk FileVisitorBuilder FileWalkDirection Float FloatArray FloatIterator FreezingIsDeprecated Function Function0 Function1 Function10
33syn keyword ktType Function11 Function12 Function13 Function14 Function15 Function16 Function17 Function18 Function19 Function2 Function20 Function21 Function22 Function3 Function4
34syn keyword ktType Function5 Function6 Function7 Function8 Function9 FunctionN Getter Grouping HashMap HashSet HiddenFromObjC HidesFromObjC Ignore IllegalArgumentException
35syn keyword ktType IllegalStateException IndexOutOfBoundsException IndexedValue Int IntArray IntIterator IntProgression IntRange InvocationKind Iterable Iterator JsExport JsName
36syn keyword ktType JvmDefault JvmDefaultWithCompatibility JvmDefaultWithoutCompatibility JvmField JvmInline JvmMultifileClass JvmName JvmOverloads JvmRecord JvmSerializableLambda
37syn keyword ktType JvmStatic JvmSuppressWildcards JvmSynthetic JvmWildcard KAnnotatedElement KCallable KClass KClassifier KDeclarationContainer KFunction KMutableProperty
38syn keyword ktType KMutableProperty0 KMutableProperty1 KMutableProperty2 KParameter KProperty KProperty0 KProperty1 KProperty2 KType KTypeParameter KTypeProjection KVariance
39syn keyword ktType KVisibility Key Kind KotlinNullPointerException KotlinReflectionNotSupportedError KotlinVersion Lazy LazyThreadSafetyMode Level LinkedHashMap LinkedHashSet List
40syn keyword ktType ListIterator Long LongArray LongIterator LongProgression LongRange Map MatchGroup MatchGroupCollection MatchNamedGroupCollection MatchResult Metadata Monotonic
41syn keyword ktType MustBeDocumented MutableCollection MutableEntry MutableIterable MutableIterator MutableList MutableListIterator MutableMap MutableSet NoSuchElementException
42syn keyword ktType NoSuchFileException NoWhenBranchMatchedException NotImplementedError Nothing NullPointerException Number NumberFormatException ObjCName ObservableProperty
43syn keyword ktType OnErrorAction OnErrorResult OpenEndRange OptIn OptionalExpectation OverloadResolutionByLambdaReturnType Pair ParameterName PathWalkOption
44syn keyword ktType PropertyDelegateProvider PublishedApi PurelyImplements Random RandomAccess ReadOnlyProperty ReadWriteProperty RefinesInSwift Regex RegexOption Repeatable
45syn keyword ktType ReplaceWith RequiresOptIn RestrictsSuspension Result Retention Returns ReturnsNotNull RuntimeException Sequence SequenceScope Set Setter SharedImmutable Short
46syn keyword ktType ShortArray ShortIterator ShouldRefineInSwift SimpleEffect SinceKotlin Strictfp String StringBuilder SubclassOptInRequired Suppress Synchronized Target
47syn keyword ktType TestTimeSource ThreadLocal Throwable Throws TimeMark TimeSource TimedValue Transient Triple TypeCastException Typography UByte UByteArray UInt UIntArray
48syn keyword ktType UIntProgression UIntRange ULong ULongArray ULongProgression ULongRange UShort UShortArray UninitializedPropertyAccessException Unit UnsafeVariance
49syn keyword ktType UnsupportedOperationException ValueTimeMark Volatile WithComparableMarks
50" }}}
51
52syn keyword ktModifier annotation companion enum inner abstract final open override sealed vararg dynamic expect actual suspend
53syn keyword ktStructure class object interface typealias fun val var constructor init
54
55syn keyword ktReservedKeyword typeof
56
57syn keyword ktBoolean true false
58syn keyword ktConstant null
59
60syn keyword ktModifier reified external inline noinline crossinline
61
62syn match ktModifier "\v<data>\ze\@=.*<(class|object)>"
63syn match ktModifier "\v<value>\ze\@=.*<class>"
64syn match ktModifier "\v<(tailrec|operator|infix)>\ze\@=.*<fun>"
65syn match ktModifier "\v<const>\ze\@=.*<val>"
66syn match ktModifier "\v<lateinit>\ze\@=.*<var>"
67syn match ktModifier "\v<(internal|private|protected|public)>\ze\@=.*<(class|object|interface|typealias|fun|val|var|constructor|get|set)>"
68
69syn match ktOperator "\v\?:|::|\<\=? | \>\=?|[!=]\=\=?|<as>\??|[-*+/%]\=?|[!&|]"
70
71syn keyword ktTodo TODO FIXME XXX contained
72syn match ktShebang "\v^#!.*$"
73syn match ktLineComment "\v//.*$" contains=ktTodo,@Spell
74syn region ktComment matchgroup=ktCommentMatchGroup start="/\*" end="\*/" contains=ktComment,ktTodo,@Spell
75
76syn region ktDocComment start="/\*\*" end="\*/" contains=ktDocTag,ktTodo,@Spell
77syn match ktDocTag "\v\@(author|constructor|receiver|return|since|suppress)>" contained
78syn match ktDocTag "\v\@(exception|param|property|throws|see|sample)>\s*\S+" contains=ktDocTagParam contained
79syn match ktDocTagParam "\v(\s|\[)\S+" contained
80syn match ktComment "/\*\*/"
81
82syn match ktSpecialCharError "\v\\." contained
83syn match ktSpecialChar "\v\\([tbnr'"$\\]|u\x{4})" contained
84syn region ktString start='"' skip='\\"' end='"' contains=ktSimpleInterpolation,ktComplexInterpolation,ktSpecialChar,ktSpecialCharError,@Spell
85syn region ktString start='"""' end='""""*' contains=ktSimpleInterpolation,ktComplexInterpolation,@Spell
86syn match ktCharacter "\v'[^']*'" contains=ktSpecialChar,ktSpecialCharError
87syn match ktCharacter "\v'\\''" contains=ktSpecialChar
88syn match ktCharacter "\v'[^\\]'"
89
90syn match ktAnnotation "\v(\w)@<!\@[[:alnum:]_.]*(:[[:alnum:]_.]*)?"
91syn match ktLabel "\v\w+\@"
92syn match ktLabel "\v(\w)@<=\@\w+"
93
94syn match ktSimpleInterpolation "\v\$\h\w*" contained
95syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation,ktTodo,ktSpecialCharError,ktSpecialChar,ktDocTag,ktDocTagParam
96
97syn match ktNumber "\v<\d+[_[:digit:]]*(uL?|UL?|[LFf])?"
98syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*(uL?|UL?|L)?"
99syn match ktNumber "\v<0[Bb][01]+[_01]*(uL?|UL?|L)?"
100syn match ktFloat "\v<\d*(\d[eE][-+]?\d+|\.\d+([eE][-+]?\d+)?)[Ff]?"
101
102syn match ktEscapedName "\v`.*`"
103
104syn match ktExclExcl "!!"
105syn match ktArrow "->"
106
107syn region ktFold start="{" end="}" transparent fold
108
109exec "syntax sync ccomment ktComment minlines=10"
110
111hi def link ktStatement Statement
112hi def link ktConditional Conditional
113hi def link ktRepeat Repeat
114hi def link ktOperator Operator
115hi def link ktKeyword Keyword
116hi def link ktException Exception
117hi def link ktReservedKeyword Error
118
119hi def link ktInclude Include
120
121hi def link ktType Type
122hi def link ktModifier StorageClass
123hi def link ktStructure Structure
124hi def link ktTypedef Typedef
125
126hi def link ktBoolean Boolean
127hi def link ktConstant Constant
128
129hi def link ktTodo Todo
130hi def link ktShebang Comment
131hi def link ktLineComment Comment
132hi def link ktComment Comment
133hi def link ktCommentMatchGroup Comment
134hi def link ktDocComment Comment
135hi def link ktDocTag Special
136hi def link ktDocTagParam Identifier
137
138hi def link ktSpecialChar SpecialChar
139hi def link ktSpecialCharError Error
140hi def link ktString String
141hi def link ktCharacter Character
142
143hi def link ktAnnotation Identifier
144hi def link ktLabel Identifier
145
146hi def link ktSimpleInterpolation Identifier
147hi def link ktComplexInterpolationBrace Identifier
148
149hi def link ktNumber Number
150hi def link ktFloat Float
151
152hi def link ktExclExcl Special
153hi def link ktArrow Structure
154
155let b:current_syntax = 'kotlin'
156
157" vim:foldmethod=marker