mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Update
This commit is contained in:
280
syntax/scala.vim
280
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 "\"\""
|
||||
|
||||
" multi-line string literals
|
||||
syn region scalaMultiLineString start="\"\"\"" end="\"\"\"\"\@!" contains=scalaUnicode
|
||||
syn match scalaUnicode "\\u[0-9a-fA-F]\{4}" contained
|
||||
|
||||
" 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
|
||||
|
||||
" symbol and character literals
|
||||
syn match scalaSymbol "'[_a-zA-Z0-9][_a-zA-Z0-9]*\>"
|
||||
syn match scalaChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
|
||||
|
||||
" 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]\>"
|
||||
|
||||
" 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
|
||||
|
||||
" REPL
|
||||
syn match scalaREPLCmdLine "\<scala>\>"
|
||||
|
||||
" 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
|
||||
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"
|
||||
|
||||
" 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 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
|
||||
|
||||
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained
|
||||
syn match scalaNameDefinition /`[^`]\+`/ contained
|
||||
hi link scalaNameDefinition Function
|
||||
|
||||
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained
|
||||
syn match scalaInstanceDeclaration /`[^`]\+`/ contained
|
||||
hi link scalaInstanceDeclaration Special
|
||||
|
||||
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained
|
||||
syn match scalaCaseFollowing /`[^`]\+`/ contained
|
||||
hi link scalaCaseFollowing Special
|
||||
|
||||
syn keyword scalaKeywordModifier abstract override final implicit lazy private protected sealed null require super
|
||||
hi link scalaKeywordModifier Function
|
||||
|
||||
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
|
||||
|
||||
syn region scalaString start=/"/ skip=/\\"/ end=/"/
|
||||
hi link scalaString String
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user