158 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:     Kotlin
 | |
| " Maintainer:   Alexander Udalov
 | |
| " URL:          https://github.com/udalov/kotlin-vim
 | |
| " Last Change:  30 December 2022
 | |
| 
 | |
| if exists('b:current_syntax')
 | |
|     finish
 | |
| endif
 | |
| 
 | |
| syn keyword ktStatement break continue return
 | |
| syn keyword ktConditional if else when
 | |
| syn keyword ktRepeat do for while
 | |
| syn keyword ktOperator in is by
 | |
| syn keyword ktKeyword get set out super this where
 | |
| syn keyword ktException try catch finally throw
 | |
| 
 | |
| syn keyword ktInclude import package
 | |
| 
 | |
| " Generated stdlib class names {{{
 | |
| " The following is generated by https://github.com/udalov/kotlin-vim/blob/master/extra/generate-stdlib-class-names.main.kts
 | |
| syn keyword ktType AbstractCollection AbstractCoroutineContextElement AbstractCoroutineContextKey AbstractDoubleTimeSource AbstractIterator AbstractList AbstractLongTimeSource
 | |
| syn keyword ktType AbstractMap AbstractMutableCollection AbstractMutableList AbstractMutableMap AbstractMutableSet AbstractSet AccessDeniedException Accessor Annotation
 | |
| syn keyword ktType AnnotationRetention AnnotationTarget Any Appendable ArithmeticException Array ArrayDeque ArrayList AssertionError Boolean BooleanArray BooleanIterator
 | |
| syn keyword ktType BuilderInference Byte ByteArray ByteIterator CName CallsInPlace CancellationException Char CharArray CharCategory CharDirectionality CharIterator CharProgression
 | |
| syn keyword ktType CharRange CharSequence CharacterCodingException Charsets ClassCastException Cloneable ClosedFloatingPointRange ClosedRange Collection Comparable
 | |
| syn keyword ktType ComparableTimeMark Comparator ConcurrentModificationException ConditionalEffect ContextFunctionTypeParams Continuation ContinuationInterceptor ContractBuilder
 | |
| syn keyword ktType CopyActionContext CopyActionResult CoroutineContext DeepRecursiveFunction DeepRecursiveScope Delegates Deprecated DeprecatedSinceKotlin DeprecationLevel
 | |
| syn keyword ktType Destructured Double DoubleArray DoubleIterator DslMarker Duration DurationUnit Effect Element EmptyCoroutineContext Entry Enum EnumEntries Error Exception
 | |
| syn keyword ktType ExperimentalContracts ExperimentalJsExport ExperimentalMultiplatform ExperimentalObjCName ExperimentalObjCRefinement ExperimentalPathApi ExperimentalStdlibApi
 | |
| syn keyword ktType ExperimentalSubclassOptIn ExperimentalTime ExperimentalTypeInference ExperimentalUnsignedTypes ExtensionFunctionType FileAlreadyExistsException
 | |
| syn keyword ktType FileSystemException FileTreeWalk FileVisitorBuilder FileWalkDirection Float FloatArray FloatIterator FreezingIsDeprecated Function Function0 Function1 Function10
 | |
| syn keyword ktType Function11 Function12 Function13 Function14 Function15 Function16 Function17 Function18 Function19 Function2 Function20 Function21 Function22 Function3 Function4
 | |
| syn keyword ktType Function5 Function6 Function7 Function8 Function9 FunctionN Getter Grouping HashMap HashSet HiddenFromObjC HidesFromObjC Ignore IllegalArgumentException
 | |
| syn keyword ktType IllegalStateException IndexOutOfBoundsException IndexedValue Int IntArray IntIterator IntProgression IntRange InvocationKind Iterable Iterator JsExport JsName
 | |
| syn keyword ktType JvmDefault JvmDefaultWithCompatibility JvmDefaultWithoutCompatibility JvmField JvmInline JvmMultifileClass JvmName JvmOverloads JvmRecord JvmSerializableLambda
 | |
| syn keyword ktType JvmStatic JvmSuppressWildcards JvmSynthetic JvmWildcard KAnnotatedElement KCallable KClass KClassifier KDeclarationContainer KFunction KMutableProperty
 | |
| syn keyword ktType KMutableProperty0 KMutableProperty1 KMutableProperty2 KParameter KProperty KProperty0 KProperty1 KProperty2 KType KTypeParameter KTypeProjection KVariance
 | |
| syn keyword ktType KVisibility Key Kind KotlinNullPointerException KotlinReflectionNotSupportedError KotlinVersion Lazy LazyThreadSafetyMode Level LinkedHashMap LinkedHashSet List
 | |
| syn keyword ktType ListIterator Long LongArray LongIterator LongProgression LongRange Map MatchGroup MatchGroupCollection MatchNamedGroupCollection MatchResult Metadata Monotonic
 | |
| syn keyword ktType MustBeDocumented MutableCollection MutableEntry MutableIterable MutableIterator MutableList MutableListIterator MutableMap MutableSet NoSuchElementException
 | |
| syn keyword ktType NoSuchFileException NoWhenBranchMatchedException NotImplementedError Nothing NullPointerException Number NumberFormatException ObjCName ObservableProperty
 | |
| syn keyword ktType OnErrorAction OnErrorResult OpenEndRange OptIn OptionalExpectation OverloadResolutionByLambdaReturnType Pair ParameterName PathWalkOption
 | |
| syn keyword ktType PropertyDelegateProvider PublishedApi PurelyImplements Random RandomAccess ReadOnlyProperty ReadWriteProperty RefinesInSwift Regex RegexOption Repeatable
 | |
| syn keyword ktType ReplaceWith RequiresOptIn RestrictsSuspension Result Retention Returns ReturnsNotNull RuntimeException Sequence SequenceScope Set Setter SharedImmutable Short
 | |
| syn keyword ktType ShortArray ShortIterator ShouldRefineInSwift SimpleEffect SinceKotlin Strictfp String StringBuilder SubclassOptInRequired Suppress Synchronized Target
 | |
| syn keyword ktType TestTimeSource ThreadLocal Throwable Throws TimeMark TimeSource TimedValue Transient Triple TypeCastException Typography UByte UByteArray UInt UIntArray
 | |
| syn keyword ktType UIntProgression UIntRange ULong ULongArray ULongProgression ULongRange UShort UShortArray UninitializedPropertyAccessException Unit UnsafeVariance
 | |
| syn keyword ktType UnsupportedOperationException ValueTimeMark Volatile WithComparableMarks
 | |
| " }}}
 | |
| 
 | |
| syn keyword ktModifier annotation companion enum inner abstract final open override sealed vararg dynamic expect actual suspend
 | |
| syn keyword ktStructure class object interface typealias fun val var constructor init
 | |
| 
 | |
| syn keyword ktReservedKeyword typeof
 | |
| 
 | |
| syn keyword ktBoolean true false
 | |
| syn keyword ktConstant null
 | |
| 
 | |
| syn keyword ktModifier reified external inline noinline crossinline
 | |
| 
 | |
| syn match ktModifier "\v<data>\ze\@=.*<(class|object)>"
 | |
| syn match ktModifier "\v<value>\ze\@=.*<class>"
 | |
| syn match ktModifier "\v<(tailrec|operator|infix)>\ze\@=.*<fun>"
 | |
| syn match ktModifier "\v<const>\ze\@=.*<val>"
 | |
| syn match ktModifier "\v<lateinit>\ze\@=.*<var>"
 | |
| syn match ktModifier "\v<(internal|private|protected|public)>\ze\@=.*<(class|object|interface|typealias|fun|val|var|constructor|get|set)>"
 | |
| 
 | |
| syn match ktOperator "\v\?:|::|\<\=? | \>\=?|[!=]\=\=?|<as>\??|[-*+/%]\=?|[!&|]"
 | |
| 
 | |
| syn keyword ktTodo TODO FIXME XXX contained
 | |
| syn match ktShebang "\v^#!.*$"
 | |
| syn match ktLineComment "\v//.*$" contains=ktTodo,@Spell
 | |
| syn region ktComment matchgroup=ktCommentMatchGroup start="/\*" end="\*/" contains=ktComment,ktTodo,@Spell
 | |
| 
 | |
| syn region ktDocComment start="/\*\*" end="\*/" contains=ktDocTag,ktTodo,@Spell
 | |
| syn match ktDocTag "\v\@(author|constructor|receiver|return|since|suppress)>" contained
 | |
| syn match ktDocTag "\v\@(exception|param|property|throws|see|sample)>\s*\S+" contains=ktDocTagParam contained
 | |
| syn match ktDocTagParam "\v(\s|\[)\S+" contained
 | |
| syn match ktComment "/\*\*/"
 | |
| 
 | |
| syn match ktSpecialCharError "\v\\." contained
 | |
| syn match ktSpecialChar "\v\\([tbnr'"$\\]|u\x{4})" contained
 | |
| syn region ktString start='"' skip='\\"' end='"' contains=ktSimpleInterpolation,ktComplexInterpolation,ktSpecialChar,ktSpecialCharError,@Spell
 | |
| syn region ktString start='"""' end='""""*' contains=ktSimpleInterpolation,ktComplexInterpolation,@Spell
 | |
| syn match ktCharacter "\v'[^']*'" contains=ktSpecialChar,ktSpecialCharError
 | |
| syn match ktCharacter "\v'\\''" contains=ktSpecialChar
 | |
| syn match ktCharacter "\v'[^\\]'"
 | |
| 
 | |
| syn match ktAnnotation "\v(\w)@<!\@[[:alnum:]_.]*(:[[:alnum:]_.]*)?"
 | |
| syn match ktLabel "\v\w+\@"
 | |
| syn match ktLabel "\v(\w)@<=\@\w+"
 | |
| 
 | |
| syn match ktSimpleInterpolation "\v\$\h\w*" contained
 | |
| syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation,ktTodo,ktSpecialCharError,ktSpecialChar,ktDocTag,ktDocTagParam
 | |
| 
 | |
| syn match ktNumber "\v<\d+[_[:digit:]]*(uL?|UL?|[LFf])?"
 | |
| syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*(uL?|UL?|L)?"
 | |
| syn match ktNumber "\v<0[Bb][01]+[_01]*(uL?|UL?|L)?"
 | |
| syn match ktFloat "\v<\d*(\d[eE][-+]?\d+|\.\d+([eE][-+]?\d+)?)[Ff]?"
 | |
| 
 | |
| syn match ktEscapedName "\v`.*`"
 | |
| 
 | |
| syn match ktExclExcl "!!"
 | |
| syn match ktArrow "->"
 | |
| 
 | |
| syn region ktFold start="{" end="}" transparent fold
 | |
| 
 | |
| exec "syntax sync ccomment ktComment minlines=10"
 | |
| 
 | |
| hi def link ktStatement Statement
 | |
| hi def link ktConditional Conditional
 | |
| hi def link ktRepeat Repeat
 | |
| hi def link ktOperator Operator
 | |
| hi def link ktKeyword Keyword
 | |
| hi def link ktException Exception
 | |
| hi def link ktReservedKeyword Error
 | |
| 
 | |
| hi def link ktInclude Include
 | |
| 
 | |
| hi def link ktType Type
 | |
| hi def link ktModifier StorageClass
 | |
| hi def link ktStructure Structure
 | |
| hi def link ktTypedef Typedef
 | |
| 
 | |
| hi def link ktBoolean Boolean
 | |
| hi def link ktConstant Constant
 | |
| 
 | |
| hi def link ktTodo Todo
 | |
| hi def link ktShebang Comment
 | |
| hi def link ktLineComment Comment
 | |
| hi def link ktComment Comment
 | |
| hi def link ktCommentMatchGroup Comment
 | |
| hi def link ktDocComment Comment
 | |
| hi def link ktDocTag Special
 | |
| hi def link ktDocTagParam Identifier
 | |
| 
 | |
| hi def link ktSpecialChar SpecialChar
 | |
| hi def link ktSpecialCharError Error
 | |
| hi def link ktString String
 | |
| hi def link ktCharacter Character
 | |
| 
 | |
| hi def link ktAnnotation Identifier
 | |
| hi def link ktLabel Identifier
 | |
| 
 | |
| hi def link ktSimpleInterpolation Identifier
 | |
| hi def link ktComplexInterpolationBrace Identifier
 | |
| 
 | |
| hi def link ktNumber Number
 | |
| hi def link ktFloat Float
 | |
| 
 | |
| hi def link ktExclExcl Special
 | |
| hi def link ktArrow Structure
 | |
| 
 | |
| let b:current_syntax = 'kotlin'
 | |
| 
 | |
| " vim:foldmethod=marker
 |