diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2013-12-13 01:37:01 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2013-12-13 01:37:01 +0100 |
commit | edd5ee63e66d9ef166034d9ac5bed132f501ecb9 (patch) | |
tree | fba293d90821eea5e067c7b5eea3526df0f26254 /syntax/scala.vim | |
parent | 8a255002df1f6d02ef7ca9503be1a7d7234acef8 (diff) | |
download | vim-polyglot-1.4.2.tar.gz vim-polyglot-1.4.2.zip |
Updatev1.4.2
Diffstat (limited to 'syntax/scala.vim')
-rw-r--r-- | syntax/scala.vim | 264 |
1 files changed, 88 insertions, 176 deletions
diff --git a/syntax/scala.vim b/syntax/scala.vim index a6191148..3c43a894 100644 --- a/syntax/scala.vim +++ b/syntax/scala.vim @@ -1,192 +1,104 @@ -" Vim syntax file -" Language : Scala (http://scala-lang.org/) -" Maintainers: Stefan Matthias Aust, Julien Wetterwald -" Last Change: 2007 June 13 - if version < 600 syntax clear elseif exists("b:current_syntax") finish endif -syn case match -syn sync minlines=50 maxlines=100 - -" most Scala keywords -syn keyword scalaKeyword case -syn keyword scalaKeyword catch -syn keyword scalaKeyword do -syn keyword scalaKeyword else -syn keyword scalaKeyword extends -syn keyword scalaKeyword final -syn keyword scalaKeyword finally -syn keyword scalaKeyword for -syn keyword scalaKeyword forSome -syn keyword scalaKeyword if -syn keyword scalaKeyword match -syn keyword scalaKeyword new -syn keyword scalaKeyword null -syn keyword scalaKeyword require -syn keyword scalaKeyword return -syn keyword scalaKeyword super -syn keyword scalaKeyword this -syn keyword scalaKeyword throw -syn keyword scalaKeyword try -syn keyword scalaKeyword type -syn keyword scalaKeyword while -syn keyword scalaKeyword with -syn keyword scalaKeyword yield -syn keyword scalaKeywordModifier abstract -syn keyword scalaKeywordModifier override -syn keyword scalaKeywordModifier final -syn keyword scalaKeywordModifier implicit -syn keyword scalaKeywordModifier lazy -syn keyword scalaKeywordModifier private -syn keyword scalaKeywordModifier protected -syn keyword scalaKeywordModifier sealed -syn match scalaKeyword "=>" -syn match scalaKeyword "<-" -syn match scalaKeyword "\<_\>" - -syn match scalaOperator ":\{2,\}" "this is not a type - -" package and import statements -syn keyword scalaPackage package nextgroup=scalaFqn skipwhite -syn keyword scalaImport import nextgroup=scalaFqn skipwhite -syn match scalaFqn "\<[._$a-zA-Z0-9,]*" contained nextgroup=scalaFqnSet -syn region scalaFqnSet start="{" end="}" contained - -" boolean literals -syn keyword scalaBoolean true false - -" definitions -syn keyword scalaDef def nextgroup=scalaDefName skipwhite -syn keyword scalaVal val nextgroup=scalaValName skipwhite -syn keyword scalaVar var nextgroup=scalaVarName skipwhite -syn keyword scalaClass class nextgroup=scalaClassName skipwhite -syn keyword scalaObject object nextgroup=scalaClassName skipwhite -syn keyword scalaTrait trait nextgroup=scalaClassName skipwhite -syn match scalaDefName "[^ =:;([]\+" contained nextgroup=scalaDefSpecializer skipwhite -syn match scalaValName "[^ =:;([]\+" contained -syn match scalaVarName "[^ =:;([]\+" contained -syn match scalaClassName "[^ =:;(\[]\+" contained nextgroup=scalaClassSpecializer skipwhite -syn region scalaDefSpecializer start="\[" end="\]" contained contains=scalaDefSpecializer -syn region scalaClassSpecializer start="\[" end="\]" contained contains=scalaClassSpecializer -syn match scalaBackTick "`[^`]\+`" - -" type constructor (actually anything with an uppercase letter) -syn match scalaConstructor "\<[A-Z][_$a-zA-Z0-9]*\>" nextgroup=scalaConstructorSpecializer -syn region scalaConstructorSpecializer start="\[" end="\]" contained contains=scalaConstructorSpecializer - -" method call -syn match scalaRoot "\<[a-zA-Z][_$a-zA-Z0-9]*\."me=e-1 -syn match scalaMethodCall "\.[a-z][_$a-zA-Z0-9]*"ms=s+1 - -" type declarations in val/var/def -syn match scalaType ":\s*\%(=>\s*\)\?\%([\._$a-zA-Z0-9]\+\|([^)]\{-1,})\)\%(\[[^\]]\{-1,}\]\+\%([^)]*)\]\+\)\?\)\?\%(\s*\%(<:\|>:\|#\|=>\|⇒\)\s*\%([\._$a-zA-Z0-9]\+\|([^)]\{-1,})\)\%(\[[^\]]\{-1,}\]\+\%([^)]*)\]\+\)\?\)*\)*"ms=s+1 -" type declarations in case statements -syn match scalaCaseType "\(case\s\+[_a-zA-Z0-9]\+\)\@<=:\s*[\._$a-zA-Z0-9]\+\(\[[^:]\{-1,}\]\+\)\?"ms=s+1 - -" comments -syn match scalaTodo "[tT][oO][dD][oO]" contained -syn match scalaLineComment "//.*" contains=scalaTodo -syn region scalaComment start="/\*" end="\*/" contains=scalaTodo -syn case ignore -syn include @scalaHtml syntax/html.vim -syn case match -syn region scalaDocComment start="/\*\*" end="\*/" contains=scalaDocTags,scalaTodo,@scalaHtml keepend -syn region scalaDocTags start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" contained -syn match scalaDocTags "@[a-z]\+" contained - -" annotations -syn match scalaAnnotation "@[a-zA-Z]\+" - -syn match scalaEmptyString "\"\"" +let b:current_syntax = "scala" -" multi-line string literals -syn region scalaMultiLineString start="\"\"\"" end="\"\"\"\"\@!" contains=scalaUnicode -syn match scalaUnicode "\\u[0-9a-fA-F]\{4}" contained +syn case match +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 val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite +syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite +hi link scalaKeyword Keyword -" string literals with escapes -syn region scalaString start="\"[^"]" skip="\\\"" end="\"" contains=scalaStringEscape " TODO end \n or not? -syn match scalaStringEscape "\\u[0-9a-fA-F]\{4}" contained -syn match scalaStringEscape "\\[nrfvb\\\"]" contained +syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained +syn match scalaNameDefinition /`[^`]\+`/ contained +hi link scalaNameDefinition Function -" symbol and character literals -syn match scalaSymbol "'[_a-zA-Z0-9][_a-zA-Z0-9]*\>" -syn match scalaChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'" +syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained +syn match scalaInstanceDeclaration /`[^`]\+`/ contained +hi link scalaInstanceDeclaration Special -" number literals -syn match scalaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" -syn match scalaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" -syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" -syn match scalaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" +syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained +syn match scalaCaseFollowing /`[^`]\+`/ contained +hi link scalaCaseFollowing Special -" xml literals -syn match scalaXmlTag "<[a-zA-Z]\_[^>]*/>" contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString -syn region scalaXmlString start="\"" end="\"" contained -syn match scalaXmlStart "<[a-zA-Z]\_[^>]*>" contained contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString -syn region scalaXml start="<\([a-zA-Z]\_[^>]*\_[^/]\|[a-zA-Z]\)>" matchgroup=scalaXmlStart end="</\_[^>]\+>" contains=scalaXmlEscape,scalaXmlQuote,scalaXml,scalaXmlStart,scalaXmlComment -syn region scalaXmlEscape matchgroup=scalaXmlEscapeSpecial start="{" matchgroup=scalaXmlEscapeSpecial end="}" contained contains=TOP -syn match scalaXmlQuote "&[^;]\+;" contained -syn match scalaXmlComment "<!--\_[^>]*-->" contained +syn keyword scalaKeywordModifier abstract override final implicit lazy private protected sealed null require super +hi link scalaKeywordModifier Function -" REPL -syn match scalaREPLCmdLine "\<scala>\>" +syn keyword scalaSpecial this true false package import +syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite +syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)" +syn match scalaSpecial /`[^`]*`/ " Backtick literals +hi link scalaSpecial PreProc -" map Scala groups to standard groups -hi link scalaKeyword Keyword -hi link scalaKeywordModifier Function -hi link scalaAnnotation Include -hi link scalaPackage Include -hi link scalaImport Include -hi link scalaREPLCmdLine Include -hi link scalaDocTags Include -hi link scalaBackTick Include -hi link scalaBoolean Boolean -hi link scalaOperator Normal -hi link scalaNumber Number -hi link scalaEmptyString String +syn region scalaString start=/"/ skip=/\\"/ end=/"/ hi link scalaString String -hi link scalaChar String -hi link scalaMultiLineString String -hi link scalaStringEscape Special -hi link scalaSymbol Special -hi link scalaUnicode Special -hi link scalaComment Comment -hi link scalaLineComment Comment -hi link scalaDocComment Comment -hi link scalaTodo Todo -hi link scalaType Type -hi link scalaCaseType Type -hi link scalaTypeSpecializer scalaType -hi link scalaXml String -hi link scalaXmlTag Include -hi link scalaXmlString String -hi link scalaXmlStart Include -hi link scalaXmlEscape Normal -hi link scalaXmlEscapeSpecial Special -hi link scalaXmlQuote Special -hi link scalaXmlComment Comment -hi link scalaDef Keyword -hi link scalaVar Keyword -hi link scalaVal Keyword -hi link scalaClass Keyword -hi link scalaObject Keyword -hi link scalaTrait Keyword -hi link scalaDefName Function -hi link scalaDefSpecializer Function -hi link scalaClassName Special -hi link scalaClassSpecializer Special -hi link scalaConstructor Special -hi link scalaConstructorSpecializer scalaConstructor -let b:current_syntax = "scala" +syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation +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 match scalaFInterpolation /\$[a-zA-Z0-9_$]\+%[-A-Za-z0-9\.]\+/ contained +syn match scalaFInterpolation /\${[^}]\+}%[-A-Za-z0-9\.]\+/ contained +hi link scalaFString String +hi link scalaFInterpolation Function + +syn region scalaQuasiQuotes matchgroup=Type start=/\<q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation +syn region scalaQuasiQuotes matchgroup=Type start=/\<[tcp]q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation +hi link scalaQuasiQuotes String + +syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""/ contains=scalaInterpolation +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=/"""/ +hi link scalaTripleString String +hi link scalaTripleSString String +hi link scalaTripleFString String + +syn match scalaNumber /\<0[dDfFlL]\?\>/ +syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ +syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ +syn match scalaNumber "\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match scalaNumber "\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>" +hi link scalaNumber Number -" you might like to put these lines in your .vimrc -" -" customize colors a little bit (should be a different file) -" hi scalaNew gui=underline -" hi scalaMethodCall gui=italic -" hi scalaValName gui=underline -" hi scalaVarName gui=underline +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 scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend +syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained +syn match scalaParameterAnnotation "@param" nextgroup=scalaParamAnnotationValue skipwhite contained +syn match scalaParamAnnotationValue /[`_A-Za-z0-9$]\+/ contained +syn region scalaDocLinks start="\[\[" end="\]\]" contained +syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained +hi link scalaMultilineComment Comment +hi link scalaDocLinks Function +hi link scalaParameterAnnotation Function +hi link scalaParamAnnotationValue Keyword +hi link scalaCommentAnnotation Function +hi link scalaCommentCodeBlock String + +syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/ +hi link scalaAnnotation PreProc + +syn match scalaTrailingComment "//.*$" +hi link scalaTrailingComment Comment |