Skip to content

Commit f3f4c47

Browse files
committed
Add multiline string literal support
1 parent cdca9e8 commit f3f4c47

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

example/example.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ comment
3434
"this is a string no splell checking"
3535
"this is a string\" with an escaped quote"
3636

37+
"""
38+
this is a multiline string
39+
\(1)
40+
"""
41+
3742
// TODO: This is a todo comment
3843
// XXX: This is another todo comment
3944
// FIXME: this is another todo comment

syntax/swift.vim

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ delfunction s:CommentKeywordMatch
5353

5454
" Literals
5555
" Strings
56-
syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftInterpolatedWrapper oneline
56+
syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftMultilineInterpolatedWrapper oneline
57+
syntax region swiftMultilineString start=/"""/ end=/"""/ contains=swiftMultilineInterpolatedWrapper
58+
syntax region swiftMultilineInterpolatedWrapper start="\v\\\(\s*" end="\v\s*\)" contained containedin=swiftMultilineString contains=swiftInterpolatedString oneline
5759
syntax region swiftInterpolatedWrapper start="\v[^\\]\zs\\\(\s*" end="\v\s*\)" contained containedin=swiftString contains=swiftInterpolatedString,swiftString oneline
58-
syntax match swiftInterpolatedString "\v\w+(\(\))?" contained containedin=swiftInterpolatedWrapper oneline
60+
syntax match swiftInterpolatedString "\v\w+(\(\))?" contained containedin=swiftInterpolatedWrapper,swiftMultilineInterpolatedWrapper oneline
5961

6062
" Numbers
6163
syntax match swiftNumber "\v<\d+>"
@@ -220,7 +222,7 @@ syntax keyword swiftDebugIdentifier
220222

221223
syntax keyword swiftLineDirective #setline
222224

223-
syntax region swiftTypeWrapper start=":\s*\(\.\)\@!\<\u" skip="\s*,\s*$*\s*" end="$\|/"me=e-1 contains=ALLBUT,swiftInterpolatedWrapper transparent
225+
syntax region swiftTypeWrapper start=":\s*\(\.\)\@!\<\u" skip="\s*,\s*$*\s*" end="$\|/"me=e-1 contains=ALLBUT,swiftInterpolatedWrapper,swiftMultilineInterpolatedWrapper transparent
224226
syntax region swiftTypeCastWrapper start="\(as\|is\)\(!\|?\)\=\s\+" end="\v(\s|$|\{)" contains=swiftType,swiftCastKeyword keepend transparent oneline
225227
syntax region swiftGenericsWrapper start="\v\<" end="\v\>" contains=swiftType transparent oneline
226228
syntax region swiftLiteralWrapper start="\v\=\s*" skip="\v[^\[\]]\(\)" end="\v(\[\]|\(\))" contains=ALL transparent oneline
@@ -255,7 +257,9 @@ highlight default link swiftComment Comment
255257
highlight default link swiftMarker Comment
256258

257259
highlight default link swiftString String
260+
highlight default link swiftMultilineString String
258261
highlight default link swiftInterpolatedWrapper Delimiter
262+
highlight default link swiftMultilineInterpolatedWrapper Delimiter
259263
highlight default link swiftTypeDeclaration Delimiter
260264
highlight default link swiftNumber Number
261265
highlight default link swiftBoolean Boolean

0 commit comments

Comments
 (0)