Skip to content

Commit 56bb5dd

Browse files
committed
Merge pull request #2782 from compnerd/vim-syntax-highlighting-improvements
Vim syntax highlighting improvements
2 parents d8e9295 + 844a7d6 commit 56bb5dd

File tree

1 file changed

+52
-17
lines changed

1 file changed

+52
-17
lines changed

utils/vim/syntax/swift.vim

Lines changed: 52 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ syn keyword swiftDefinitionModifier
5454
\ internal
5555
\ private
5656
\ public
57+
\ rethrows
5758
\ static
5859
\ throws
5960

@@ -64,20 +65,50 @@ syn keyword swiftIdentifierKeyword
6465
\ self
6566
\ super
6667

67-
syn keyword swiftFuncKeyword nextgroup=swiftTypeParameters
68-
\ deinit
68+
syn keyword swiftFuncKeywordGeneral skipwhite nextgroup=swiftTypeParameters
6969
\ init
70+
71+
syn keyword swiftFuncKeyword
72+
\ deinit
7073
\ subscript
7174

7275
syn keyword swiftScope
7376
\ autoreleasepool
7477

75-
syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName
76-
77-
syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/ contained nextgroup=swiftTypeParameters
78-
syn region swiftArrayType start=/\[/ end=/\]/ contained skipwhite nextgroup=swiftTypeName
78+
syn keyword swiftTypeDefinition skipwhite nextgroup=swiftTypeName
79+
\ class
80+
\ enum
81+
\ extension
82+
\ protocol
83+
\ struct
84+
\ typealias
7985

80-
syn region swiftTypeParameters start="<" end=">" contained
86+
syn keyword swiftNew skipwhite nextgroup=swiftTypeName
87+
\ new
88+
89+
syn match swiftTypeName contained nextgroup=swiftTypeParameters
90+
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>/
91+
92+
" TypeName[Optionality]?
93+
syn match swiftType contained nextgroup=swiftTypeParameters
94+
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
95+
" [Type:Type] (dictionary) or [Type] (array)
96+
syn region swiftType contained contains=swiftTypePair,swiftType
97+
\ start=/\[/ end=/\]/
98+
syn match swiftTypePair contained nextgroup=swiftTypeParameters,swiftTypeDeclaration
99+
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
100+
" (Type[, Type]) (tuple)
101+
syn region swiftType contained contains=swiftType,swiftParamDelim
102+
\ start="[^@](" end=")"
103+
syn match swiftParamDelim contained
104+
\ /,/
105+
" <Generic Clause> (generics)
106+
syn region swiftTypeParameters contained contains=swiftArchetype,swiftConstraint
107+
\ start="<" end=">"
108+
syn match swiftArchetype contained skipwhite nextgroup=swiftTypeDeclaration
109+
\ /\<[A-Za-z_][A-Za-z_0-9]*\>/
110+
syn keyword swiftConstraint contained
111+
\ where
81112

82113
syn keyword swiftMutating mutating skipwhite nextgroup=swiftFuncDefinition
83114
syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncName,swiftOperator
@@ -89,11 +120,8 @@ syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained
89120

90121
syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/
91122

92-
syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftTypeName
93-
syn match swiftTypeDeclaration /->/ skipwhite nextgroup=swiftTypeName
94-
95-
96-
syn keyword swiftNew new skipwhite nextgroup=swiftTypeName
123+
syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftType
124+
syn match swiftTypeDeclaration /->/ skipwhite nextgroup=swiftType
97125

98126
syn keyword swiftBoolean true false
99127

@@ -117,32 +145,39 @@ syn keyword swiftLabel get set
117145
syn match swiftPreproc /^\s*#\(\<if\>\|\<else\>\|\<elseif\>\|\<endif\>\)/
118146
syn region swiftPreprocFalse start="^\s*#\<if\>\s\+\<false\>" end="^\s*#\(\<else\>\|\<elseif\>\|\<endif\>\)"
119147

120-
syn match swiftAttribute /@\<\w\+\>/
148+
syn match swiftAttribute /@\<\w\+\>/ skipwhite nextgroup=swiftType
121149

122150
syn keyword swiftTodo TODO FIXME contained
123151
syn keyword swiftNil nil
124152

125-
syn match swiftCastOp "\<as\>[!?]\?" skipwhite nextgroup=swiftTypeName,swiftArrayType
153+
syn match swiftCastOp "\<as\>[!?]\?" skipwhite nextgroup=swiftType
126154

127155
syn match swiftNilOps "??"
128156

157+
syn region swiftReservedIdentifier oneline
158+
\ start=/`/ end=/`/
159+
129160
hi def link swiftImport Include
130161
hi def link swiftImportModule Title
131162
hi def link swiftImportComponent Identifier
132163
hi def link swiftKeyword Statement
133164
hi def link swiftTypeDefinition Define
134-
hi def link swiftTypeName Type
135-
hi def link swiftArrayType Type
136-
hi def link swiftTypeParameters Special
165+
hi def link swiftType Type
166+
hi def link swiftTypePair Type
167+
hi def link swiftTypeName Function
168+
hi def link swiftArchetype Identifier
169+
hi def link swiftConstraint Special
137170
hi def link swiftFuncDefinition Define
138171
hi def link swiftDefinitionModifier Define
139172
hi def link swiftFuncName Function
140173
hi def link swiftFuncKeyword Function
174+
hi def link swiftFuncKeywordGeneral Function
141175
hi def link swiftVarDefinition Define
142176
hi def link swiftVarName Identifier
143177
hi def link swiftImplicitVarName Identifier
144178
hi def link swiftIdentifierKeyword Identifier
145179
hi def link swiftTypeDeclaration Delimiter
180+
hi def link swiftTypeParameters Delimiter
146181
hi def link swiftBoolean Boolean
147182
hi def link swiftString String
148183
hi def link swiftInterpolation Special

0 commit comments

Comments
 (0)