19180
|
1 " This source file is part of the Swift.org open source project
|
|
2 "
|
|
3 " Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
|
4 " Licensed under Apache License v2.0 with Runtime Library Exception
|
|
5 "
|
|
6 " See https://swift.org/LICENSE.txt for license information
|
|
7 " See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
8 "
|
|
9 " Vim syntax file
|
|
10 " Language: swift
|
|
11 " Maintainer: Joe Groff <jgroff@apple.com>
|
|
12 " Last Change: 2018 Jan 21
|
|
13 "
|
|
14 " Vim maintainer: Emir SARI <bitigchi@me.com>
|
|
15
|
|
16 if exists("b:current_syntax")
|
|
17 finish
|
|
18 endif
|
|
19
|
|
20 let s:keepcpo = &cpo
|
|
21 set cpo&vim
|
|
22
|
|
23 syn keyword swiftKeyword
|
|
24 \ break
|
23305
|
25 \ case
|
19180
|
26 \ catch
|
|
27 \ continue
|
23305
|
28 \ default
|
19180
|
29 \ defer
|
|
30 \ do
|
|
31 \ else
|
|
32 \ fallthrough
|
|
33 \ for
|
|
34 \ guard
|
|
35 \ if
|
|
36 \ in
|
|
37 \ repeat
|
|
38 \ return
|
|
39 \ switch
|
|
40 \ throw
|
|
41 \ try
|
|
42 \ where
|
|
43 \ while
|
|
44 syn match swiftMultiwordKeyword
|
|
45 \ "indirect case"
|
|
46
|
23305
|
47 syn keyword swiftCoreTypes
|
|
48 \ Any
|
|
49 \ AnyObject
|
|
50
|
19180
|
51 syn keyword swiftImport skipwhite skipempty nextgroup=swiftImportModule
|
|
52 \ import
|
|
53
|
|
54 syn keyword swiftDefinitionModifier
|
|
55 \ convenience
|
|
56 \ dynamic
|
|
57 \ fileprivate
|
|
58 \ final
|
|
59 \ internal
|
|
60 \ lazy
|
|
61 \ nonmutating
|
|
62 \ open
|
|
63 \ override
|
|
64 \ prefix
|
|
65 \ private
|
|
66 \ public
|
|
67 \ required
|
|
68 \ rethrows
|
|
69 \ static
|
|
70 \ throws
|
|
71 \ weak
|
|
72
|
|
73 syn keyword swiftInOutKeyword skipwhite skipempty nextgroup=swiftTypeName
|
|
74 \ inout
|
|
75
|
|
76 syn keyword swiftIdentifierKeyword
|
|
77 \ Self
|
|
78 \ metatype
|
|
79 \ self
|
|
80 \ super
|
|
81
|
|
82 syn keyword swiftFuncKeywordGeneral skipwhite skipempty nextgroup=swiftTypeParameters
|
|
83 \ init
|
|
84
|
|
85 syn keyword swiftFuncKeyword
|
|
86 \ deinit
|
|
87 \ subscript
|
|
88
|
|
89 syn keyword swiftScope
|
|
90 \ autoreleasepool
|
|
91
|
|
92 syn keyword swiftMutating skipwhite skipempty nextgroup=swiftFuncDefinition
|
|
93 \ mutating
|
|
94 syn keyword swiftFuncDefinition skipwhite skipempty nextgroup=swiftTypeName,swiftOperator
|
|
95 \ func
|
|
96
|
|
97 syn keyword swiftTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
|
|
98 \ class
|
|
99 \ enum
|
|
100 \ extension
|
23305
|
101 \ operator
|
|
102 \ precedencegroup
|
19180
|
103 \ protocol
|
|
104 \ struct
|
|
105
|
|
106 syn keyword swiftTypeAliasDefinition skipwhite skipempty nextgroup=swiftTypeAliasName
|
23305
|
107 \ associatedtype
|
19180
|
108 \ typealias
|
|
109
|
|
110 syn match swiftMultiwordTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
|
|
111 \ "indirect enum"
|
|
112
|
|
113 syn keyword swiftVarDefinition skipwhite skipempty nextgroup=swiftVarName
|
|
114 \ let
|
|
115 \ var
|
|
116
|
|
117 syn keyword swiftLabel
|
|
118 \ get
|
|
119 \ set
|
|
120 \ didSet
|
|
121 \ willSet
|
|
122
|
|
123 syn keyword swiftBoolean
|
|
124 \ false
|
|
125 \ true
|
|
126
|
|
127 syn keyword swiftNil
|
|
128 \ nil
|
|
129
|
|
130 syn match swiftImportModule contained nextgroup=swiftImportComponent
|
|
131 \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
|
132 syn match swiftImportComponent contained nextgroup=swiftImportComponent
|
|
133 \ /\.\<[A-Za-z_][A-Za-z_0-9]*\>/
|
|
134
|
|
135 syn match swiftTypeAliasName contained skipwhite skipempty nextgroup=swiftTypeAliasValue
|
|
136 \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
|
137 syn match swiftTypeName contained skipwhite skipempty nextgroup=swiftTypeParameters
|
|
138 \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>/
|
|
139 syn match swiftVarName contained skipwhite skipempty nextgroup=swiftTypeDeclaration
|
|
140 \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
|
141 syn match swiftImplicitVarName
|
|
142 \ /\$\<[A-Za-z_0-9]\+\>/
|
|
143
|
|
144 " TypeName[Optionality]?
|
|
145 syn match swiftType contained skipwhite skipempty nextgroup=swiftTypeParameters
|
|
146 \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
|
|
147 " [Type:Type] (dictionary) or [Type] (array)
|
|
148 syn region swiftType contained contains=swiftTypePair,swiftType
|
|
149 \ matchgroup=Delimiter start=/\[/ end=/\]/
|
|
150 syn match swiftTypePair contained skipwhite skipempty nextgroup=swiftTypeParameters,swiftTypeDeclaration
|
|
151 \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
|
|
152 " (Type[, Type]) (tuple)
|
|
153 " FIXME: we should be able to use skip="," and drop swiftParamDelim
|
|
154 syn region swiftType contained contains=swiftType,swiftParamDelim
|
|
155 \ matchgroup=Delimiter start="[^@]\?(" end=")" matchgroup=NONE skip=","
|
|
156 syn match swiftParamDelim contained
|
|
157 \ /,/
|
|
158 " <Generic Clause> (generics)
|
|
159 syn region swiftTypeParameters contained contains=swiftVarName,swiftConstraint
|
|
160 \ matchgroup=Delimiter start="<" end=">" matchgroup=NONE skip=","
|
|
161 syn keyword swiftConstraint contained
|
|
162 \ where
|
|
163
|
|
164 syn match swiftTypeAliasValue skipwhite skipempty nextgroup=swiftType
|
|
165 \ /=/
|
|
166 syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType,swiftInOutKeyword
|
|
167 \ /:/
|
|
168 syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType
|
|
169 \ /->/
|
|
170
|
|
171 syn match swiftKeyword
|
|
172 \ /\<case\>/
|
|
173 syn region swiftCaseLabelRegion
|
|
174 \ matchgroup=swiftKeyword start=/\<case\>/ matchgroup=Delimiter end=/:/ oneline contains=TOP
|
|
175 syn region swiftDefaultLabelRegion
|
|
176 \ matchgroup=swiftKeyword start=/\<default\>/ matchgroup=Delimiter end=/:/ oneline
|
|
177
|
|
178 syn region swiftParenthesisRegion contains=TOP
|
|
179 \ matchgroup=NONE start=/(/ end=/)/
|
|
180
|
|
181 syn region swiftString contains=swiftInterpolationRegion
|
|
182 \ start=/"/ skip=/\\\\\|\\"/ end=/"/
|
|
183 syn region swiftInterpolationRegion contained contains=TOP
|
|
184 \ matchgroup=swiftInterpolation start=/\\(/ end=/)/
|
|
185 syn region swiftComment contains=swiftComment,swiftLineComment,swiftTodo
|
|
186 \ start="/\*" end="\*/"
|
|
187 syn region swiftLineComment contains=swiftComment,swiftTodo
|
|
188 \ start="//" end="$"
|
|
189
|
|
190 syn match swiftDecimal
|
|
191 \ /[+\-]\?\<\([0-9][0-9_]*\)\([.][0-9_]*\)\?\([eE][+\-]\?[0-9][0-9_]*\)\?\>/
|
|
192 syn match swiftHex
|
|
193 \ /[+\-]\?\<0x[0-9A-Fa-f][0-9A-Fa-f_]*\(\([.][0-9A-Fa-f_]*\)\?[pP][+\-]\?[0-9][0-9_]*\)\?\>/
|
|
194 syn match swiftOct
|
|
195 \ /[+\-]\?\<0o[0-7][0-7_]*\>/
|
|
196 syn match swiftBin
|
|
197 \ /[+\-]\?\<0b[01][01_]*\>/
|
|
198
|
|
199 syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
|
|
200 \ "\.\@<!\.\.\.\@!\|[/=\-+*%<>!&|^~]\@<!\(/[/*]\@![/=\-+*%<>!&|^~]*\|*/\@![/=\-+*%<>!&|^~]*\|->\@![/=\-+*%<>!&|^~]*\|[=+%<>!&|^~][/=\-+*%<>!&|^~]*\)"
|
|
201 syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
|
|
202 \ "\.\.[<.]"
|
|
203
|
|
204 syn match swiftChar
|
|
205 \ /'\([^'\\]\|\\\(["'tnr0\\]\|x[0-9a-fA-F]\{2}\|u[0-9a-fA-F]\{4}\|U[0-9a-fA-F]\{8}\)\)'/
|
|
206
|
|
207 syn match swiftTupleIndexNumber contains=swiftDecimal
|
|
208 \ /\.[0-9]\+/
|
|
209 syn match swiftDecimal contained
|
|
210 \ /[0-9]\+/
|
|
211
|
|
212 syn match swiftPreproc
|
23305
|
213 \ /#\(\<column\>\|\<dsohandle\>\|\<file\>\|\<line\>\|\<function\>\)/
|
19180
|
214 syn match swiftPreproc
|
|
215 \ /^\s*#\(\<if\>\|\<else\>\|\<elseif\>\|\<endif\>\|\<error\>\|\<warning\>\)/
|
|
216 syn region swiftPreprocFalse
|
|
217 \ start="^\s*#\<if\>\s\+\<false\>" end="^\s*#\(\<else\>\|\<elseif\>\|\<endif\>\)"
|
|
218
|
|
219 syn match swiftAttribute
|
|
220 \ /@\<\w\+\>/ skipwhite skipempty nextgroup=swiftType,swiftTypeDefinition
|
|
221
|
|
222 syn keyword swiftTodo MARK TODO FIXME contained
|
|
223
|
23305
|
224 syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
|
19180
|
225 \ "\<is\>"
|
23305
|
226 syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
|
19180
|
227 \ "\<as\>[!?]\?"
|
|
228
|
|
229 syn match swiftNilOps
|
|
230 \ "??"
|
|
231
|
|
232 syn region swiftReservedIdentifier oneline
|
|
233 \ start=/`/ end=/`/
|
|
234
|
|
235 hi def link swiftImport Include
|
|
236 hi def link swiftImportModule Title
|
|
237 hi def link swiftImportComponent Identifier
|
|
238 hi def link swiftKeyword Statement
|
23305
|
239 hi def link swiftCoreTypes Type
|
19180
|
240 hi def link swiftMultiwordKeyword Statement
|
|
241 hi def link swiftTypeDefinition Define
|
|
242 hi def link swiftMultiwordTypeDefinition Define
|
|
243 hi def link swiftType Type
|
|
244 hi def link swiftTypePair Type
|
|
245 hi def link swiftTypeAliasName Identifier
|
|
246 hi def link swiftTypeName Function
|
|
247 hi def link swiftConstraint Special
|
|
248 hi def link swiftFuncDefinition Define
|
|
249 hi def link swiftDefinitionModifier Operator
|
|
250 hi def link swiftInOutKeyword Define
|
|
251 hi def link swiftFuncKeyword Function
|
|
252 hi def link swiftFuncKeywordGeneral Function
|
|
253 hi def link swiftTypeAliasDefinition Define
|
|
254 hi def link swiftVarDefinition Define
|
|
255 hi def link swiftVarName Identifier
|
|
256 hi def link swiftImplicitVarName Identifier
|
|
257 hi def link swiftIdentifierKeyword Identifier
|
|
258 hi def link swiftTypeAliasValue Delimiter
|
|
259 hi def link swiftTypeDeclaration Delimiter
|
|
260 hi def link swiftTypeParameters Delimiter
|
|
261 hi def link swiftBoolean Boolean
|
|
262 hi def link swiftString String
|
|
263 hi def link swiftInterpolation Special
|
|
264 hi def link swiftComment Comment
|
|
265 hi def link swiftLineComment Comment
|
|
266 hi def link swiftDecimal Number
|
|
267 hi def link swiftHex Number
|
|
268 hi def link swiftOct Number
|
|
269 hi def link swiftBin Number
|
|
270 hi def link swiftOperator Function
|
|
271 hi def link swiftChar Character
|
|
272 hi def link swiftLabel Operator
|
|
273 hi def link swiftMutating Statement
|
|
274 hi def link swiftPreproc PreCondit
|
|
275 hi def link swiftPreprocFalse Comment
|
|
276 hi def link swiftAttribute Type
|
|
277 hi def link swiftTodo Todo
|
|
278 hi def link swiftNil Constant
|
|
279 hi def link swiftCastOp Operator
|
|
280 hi def link swiftNilOps Operator
|
|
281 hi def link swiftScope PreProc
|
|
282
|
|
283 let b:current_syntax = "swift"
|
|
284
|
|
285 let &cpo = s:keepcpo
|
|
286 unlet s:keepcpo
|