diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2013-12-26 03:34:22 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2013-12-26 03:34:22 +0100 |
commit | a26bebbeb94207698d20f43485098ead64bb6c67 (patch) | |
tree | ac829c223694513dfc9b90c592001d2ea31d07d4 /syntax/scala.vim | |
parent | edd5ee63e66d9ef166034d9ac5bed132f501ecb9 (diff) | |
download | vim-polyglot-a26bebbeb94207698d20f43485098ead64bb6c67.tar.gz vim-polyglot-a26bebbeb94207698d20f43485098ead64bb6c67.zip |
Update
Diffstat (limited to '')
-rw-r--r-- | syntax/scala.vim | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/syntax/scala.vim b/syntax/scala.vim index 3c43a894..5139419b 100644 --- a/syntax/scala.vim +++ b/syntax/scala.vim @@ -11,12 +11,23 @@ syn sync minlines=200 maxlines=1000 syn keyword scalaKeyword catch do else final finally for forSome if syn keyword scalaKeyword match return throw try while yield -syn keyword scalaKeyword class trait object extends with type nextgroup=scalaInstanceDeclaration skipwhite -syn keyword scalaKeyword case nextgroup=scalaCaseFollowing skipwhite +syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite +syn keyword scalaKeyword type nextgroup=scalaTypeDeclaration skipwhite +syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite hi link scalaKeyword Keyword +syn match scalaSymbol /'[_A-Za-z0-9$]\+/ +hi link scalaSymbol Number + +syn match scalaChar /'.'/ +syn match scalaEscapedChar /\\[\\ntbrf]/ +syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/ +hi link scalaChar Character +hi link scalaEscapedChar Function +hi link scalaUnicodeChar Special + syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained syn match scalaNameDefinition /`[^`]\+`/ contained hi link scalaNameDefinition Function @@ -25,6 +36,19 @@ syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained syn match scalaInstanceDeclaration /`[^`]\+`/ contained hi link scalaInstanceDeclaration Special +syn match scalaTypeDeclaration /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension,scalaTypeEquals skipwhite +syn match scalaTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypePostDeclaration skipwhite +syn match scalaTypeExtension /\%(=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeDeclaration skipwhite +syn match scalaTypePostDeclaration /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypePostExtension skipwhite +syn match scalaTypePostExtension /\%(=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypePostDeclaration skipwhite +hi link scalaTypeDeclaration Type +hi link scalaTypeExtension Keyword +hi link scalaTypePostDeclaration Special +hi link scalaTypePostExtension Keyword + +syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$)\s]:\_s*\)\@<=[_(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeExtension contains=scalaRoundBrackets +hi link scalaTypeAnnotation Type + syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained syn match scalaCaseFollowing /`[^`]\+`/ contained hi link scalaCaseFollowing Special @@ -38,16 +62,18 @@ syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)" syn match scalaSpecial /`[^`]*`/ " Backtick literals hi link scalaSpecial PreProc -syn region scalaString start=/"/ skip=/\\"/ end=/"/ +syn match scalaStringEmbeddedQuote /\\"/ contained +syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar hi link scalaString String +hi link scalaStringEmbeddedQuote String -syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation +syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained syn match scalaInterpolation /\${[^}]\+}/ contained hi link scalaSString String hi link scalaInterpolation Function -syn region scalaFString matchgroup=Special start=/f"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaFInterpolation +syn region scalaFString matchgroup=Special start=/f"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+%[-A-Za-z0-9\.]\+/ contained syn match scalaFInterpolation /\${[^}]\+}%[-A-Za-z0-9\.]\+/ contained hi link scalaFString String @@ -61,9 +87,9 @@ syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""/ conta syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<[tcp]q"""/ end=/"""/ contains=scalaInterpolation hi link scalaTripleQuasiQuotes String -syn region scalaTripleString start=/"""/ end=/"""/ -syn region scalaTripleSString matchgroup=PreProc start=/s"""/ end=/"""/ -syn region scalaTripleFString matchgroup=PreProc start=/f"""/ end=/"""/ +syn region scalaTripleString start=/"""/ end=/"""/ contains=scalaEscapedChar,scalaUnicodeChar +syn region scalaTripleSString matchgroup=Special start=/s"""/ end=/"""/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar +syn region scalaTripleFString matchgroup=Special start=/f"""/ end=/"""/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar hi link scalaTripleString String hi link scalaTripleSString String hi link scalaTripleFString String @@ -76,13 +102,13 @@ syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match scalaNumber "\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>" hi link scalaNumber Number -syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" contains=scalaSpecial,scalaTypeParameter,scalaSquareBrackets,scalaTypeOperator -syn match scalaTypeAnnotation /\%(:\s*\)\@<=[_\.A-Za-z0-9$]\+/ -syn match scalaTypeParameter /[_\.A-Za-z0-9$]\+/ contained -syn match scalaTypeOperator /[=:<>]\+/ contained -hi link scalaTypeAnnotation Type -hi link scalaTypeParameter Type -hi link scalaTypeOperator Type +syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets + +syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" skipwhite nextgroup=scalaTypeEquals,scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter +syn match scalaTypeOperator /[-+=:<>]\+/ contained +syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained +hi link scalaTypeOperator Keyword +hi link scalaTypeAnnotationParameter Function syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained |