mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			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 |