From 188b70da95fd8559f5ec6eedb73ab2a9648fd70d Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 19:58:04 -0700 Subject: [PATCH 01/10] vim: remove support for obsolete attribute syntax Bracketed attributes have not been supported since pre-1.0. Let us consider them obsoleted. --- utils/vim/syntax/swift.vim | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index bc01d82285e45..666436f80e79a 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -49,14 +49,12 @@ syn keyword swiftKeyword \ while syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName -syn region swiftTypeAttributes start="\[" end="\]" contained skipwhite nextgroup=swiftTypeName syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters syn region swiftTypeParameters start="<" end=">" contained syn keyword swiftMutating mutating skipwhite nextgroup=swiftFuncDefinition -syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncAttributes,swiftFuncName,swiftOperator -syn region swiftFuncAttributes start="\[" end="\]" contained skipwhite nextgroup=swiftFuncName,swiftOperator +syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncName,swiftOperator syn match swiftFuncName /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained skipwhite nextgroup=swiftTypeParameters syn keyword swiftFuncKeyword subscript init destructor nextgroup=swiftTypeParameters @@ -68,8 +66,8 @@ syn keyword swiftDefinitionModifier static public internal private syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/ -syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftTypeAttributes,swiftTypeName -syn match swiftTypeDeclaration /->/ skipwhite nextgroup=swiftTypeAttributes,swiftTypeName +syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftTypeName +syn match swiftTypeDeclaration /->/ skipwhite nextgroup=swiftTypeName syn keyword swiftIdentifierKeyword metatype super self Self @@ -111,11 +109,9 @@ hi def link swiftKeyword Statement hi def link swiftTypeDefinition Define hi def link swiftTypeName Type hi def link swiftTypeParameters Special -hi def link swiftTypeAttributes PreProc hi def link swiftFuncDefinition Define hi def link swiftDefinitionModifier Define hi def link swiftFuncName Function -hi def link swiftFuncAttributes PreProc hi def link swiftFuncKeyword Function hi def link swiftVarDefinition Define hi def link swiftVarName Identifier From 2986b11a15f91fdc498ea804c1f1a22f2fc52359 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 20:30:13 -0700 Subject: [PATCH 02/10] vim: add `dynamicType` Include the `dynamicType` keyword in the identifier keywords. --- utils/vim/syntax/swift.vim | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 666436f80e79a..bd92c1c0ff276 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -48,6 +48,13 @@ syn keyword swiftKeyword \ where \ while +syn keyword swiftIdentifierKeyword + \ Self + \ dynamicType + \ metatype + \ self + \ super + syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters @@ -63,13 +70,11 @@ syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained syn keyword swiftDefinitionModifier static public internal private - syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/ syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftTypeName syn match swiftTypeDeclaration /->/ skipwhite nextgroup=swiftTypeName -syn keyword swiftIdentifierKeyword metatype super self Self syn keyword swiftNew new skipwhite nextgroup=swiftTypeName From e0a5eddcf39b5395d9cc4dfcf6e9fdb348cf1e1e Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 20:46:20 -0700 Subject: [PATCH 03/10] vim: tweak casting operator highlighting Tweak the matching for swift 2 casting operators (as, as?, as!). --- utils/vim/syntax/swift.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index bd92c1c0ff276..4eb4d01fd5d75 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -104,7 +104,9 @@ syn match swiftAttribute /@\<\w\+\>/ syn keyword swiftTodo TODO FIXME contained syn keyword swiftNil nil -syn match swiftNilOps "\" + +syn match swiftCastOp "\[!?]\?" skipwhite nextgroup=swiftTypeName + syn match swiftNilOps "??" hi def link swiftImport Include @@ -142,6 +144,7 @@ hi def link swiftPreprocFalse Comment hi def link swiftAttribute Type hi def link swiftTodo Todo hi def link swiftNil Constant +hi def link swiftCastOp Operator hi def link swiftNilOps Operator let b:current_syntax = "swift" From 8c5161d6c6eaa0e3d97da39e8d59e486224b6e93 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 20:55:31 -0700 Subject: [PATCH 04/10] vim: highlight array types in cast target Highlight array types when used for type names as types. --- utils/vim/syntax/swift.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 4eb4d01fd5d75..3fdbc0dd8fb9e 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -56,7 +56,9 @@ syn keyword swiftIdentifierKeyword \ super syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName + syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters +syn region swiftArrayType start=/\[/ end=/\]/ contained skipwhite nextgroup=swiftTypeName syn region swiftTypeParameters start="<" end=">" contained @@ -105,7 +107,7 @@ syn match swiftAttribute /@\<\w\+\>/ syn keyword swiftTodo TODO FIXME contained syn keyword swiftNil nil -syn match swiftCastOp "\[!?]\?" skipwhite nextgroup=swiftTypeName +syn match swiftCastOp "\[!?]\?" skipwhite nextgroup=swiftTypeName,swiftArrayType syn match swiftNilOps "??" @@ -115,6 +117,7 @@ hi def link swiftImportComponent Identifier hi def link swiftKeyword Statement hi def link swiftTypeDefinition Define hi def link swiftTypeName Type +hi def link swiftArrayType Type hi def link swiftTypeParameters Special hi def link swiftFuncDefinition Define hi def link swiftDefinitionModifier Define From bfd78da590163afede318aad060e5f7a40fa0dd6 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:02:44 -0700 Subject: [PATCH 05/10] vim: highlight `dynamic` modifier Treat `dynamic` as a modifier for functions. --- utils/vim/syntax/swift.vim | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 3fdbc0dd8fb9e..90786fba74c4a 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -48,6 +48,13 @@ syn keyword swiftKeyword \ where \ while +syn keyword swiftDefinitionModifier + \ dynamic + \ internal + \ private + \ public + \ static + syn keyword swiftIdentifierKeyword \ Self \ dynamicType @@ -71,7 +78,6 @@ syn keyword swiftVarDefinition var skipwhite nextgroup=swiftVarName syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained -syn keyword swiftDefinitionModifier static public internal private syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/ syn match swiftTypeDeclaration /:/ skipwhite nextgroup=swiftTypeName From 980b408882ea217c5a68d794575734380c02ee60 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:10:28 -0700 Subject: [PATCH 06/10] vim: remove `destructor` keyword for `deinit` This fixes the highlighting for the "destructor" in swift. --- utils/vim/syntax/swift.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 90786fba74c4a..130fc7efdb360 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -62,6 +62,11 @@ syn keyword swiftIdentifierKeyword \ self \ super +syn keyword swiftFuncKeyword nextgroup=swiftTypeParameters + \ deinit + \ init + \ subscript + syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters @@ -72,7 +77,6 @@ syn region swiftTypeParameters start="<" end=">" contained syn keyword swiftMutating mutating skipwhite nextgroup=swiftFuncDefinition syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncName,swiftOperator syn match swiftFuncName /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained skipwhite nextgroup=swiftTypeParameters -syn keyword swiftFuncKeyword subscript init destructor nextgroup=swiftTypeParameters syn keyword swiftVarDefinition var skipwhite nextgroup=swiftVarName syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName From 6b8eae03c3876e1ced51cb976dbf43114931caa0 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:23:05 -0700 Subject: [PATCH 07/10] vim: consider optionality as part of the type Include the optionality of a type as part of the type name. --- utils/vim/syntax/swift.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 130fc7efdb360..26631c4b104e6 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -69,7 +69,7 @@ syn keyword swiftFuncKeyword nextgroup=swiftTypeParameters syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName -syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters +syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/ contained nextgroup=swiftTypeParameters syn region swiftArrayType start=/\[/ end=/\]/ contained skipwhite nextgroup=swiftTypeName syn region swiftTypeParameters start="<" end=">" contained From 156bfe8e119919531d71bd0930f7c076b40aae34 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:25:10 -0700 Subject: [PATCH 08/10] vim: add `throw` keyword --- utils/vim/syntax/swift.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index 26631c4b104e6..ad503540fd15a 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -42,6 +42,7 @@ syn keyword swiftKeyword \ return \ static \ switch + \ throw \ try \ typealias \ var From 6435ba6748b1a7e0b3b7877c30f99786671cc16c Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:26:06 -0700 Subject: [PATCH 09/10] vim: highlight the `throws` modifier Highlight the `throws` keyword which indicates a function may throw an exception. --- utils/vim/syntax/swift.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index ad503540fd15a..fd2f63d2c68f6 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -55,6 +55,7 @@ syn keyword swiftDefinitionModifier \ private \ public \ static + \ throws syn keyword swiftIdentifierKeyword \ Self From 314699e83ccb89fc1ef7044020cb23307fb7913d Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 28 May 2016 21:35:55 -0700 Subject: [PATCH 10/10] vim: highlight `autoreleasepool` --- utils/vim/syntax/swift.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim index fd2f63d2c68f6..133bebbbec5a5 100644 --- a/utils/vim/syntax/swift.vim +++ b/utils/vim/syntax/swift.vim @@ -69,6 +69,9 @@ syn keyword swiftFuncKeyword nextgroup=swiftTypeParameters \ init \ subscript +syn keyword swiftScope + \ autoreleasepool + syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/ contained nextgroup=swiftTypeParameters @@ -161,5 +164,6 @@ hi def link swiftTodo Todo hi def link swiftNil Constant hi def link swiftCastOp Operator hi def link swiftNilOps Operator +hi def link swiftScope PreProc let b:current_syntax = "swift"