" Language: CoffeeScript " Maintainer: Mick Koch " URL: http://github.com/kchmck/vim-coffee-script " License: WTFPL if exists("b:current_syntax") finish endif if version < 600 syntax clear endif let b:current_syntax = "coffee" syntax sync minlines=100 " CoffeeScript allows dollar signs in identifiers setlocal isident+=$ syntax match coffeeStatement /\<\%(return\|break\|continue\|throw\)\>/ highlight default link coffeeStatement Statement syntax match coffeeRepeat /\<\%(for\|while\|until\|loop\)\>/ highlight default link coffeeRepeat Repeat syntax match coffeeConditional /\<\%(if\|else\|unless\|switch\|when\|then\)\>/ highlight default link coffeeConditional Conditional syntax match coffeeException /\<\%(try\|catch\|finally\)\>/ highlight default link coffeeException Exception syntax match coffeeOperator /\<\%(instanceof\|typeof\|delete\)\>/ highlight default link coffeeOperator Operator syntax match coffeeKeyword /\<\%(new\|in\|of\|by\|where\|and\|or\|not\|is\|isnt\|class\|extends\|super\|all\)\>/ highlight default link coffeeKeyword Keyword syntax match coffeeBoolean /\<\%(\%(true\|on\|yes\|false\|off\|no\)\)\>/ highlight default link coffeeBoolean Boolean syntax match coffeeGlobal /\<\%(null\|undefined\)\>/ highlight default link coffeeGlobal Type syntax cluster coffeeReserved contains=coffeeStatement,coffeeRepeat, \ coffeeConditional,coffeeException, \ coffeeOperator,coffeeKeyword, \ coffeeBoolean,coffeeGlobal syntax match coffeeAssignmentMod /\%(\s\+\zs\%(and\|or\)\|\W\{,3}\)\ze=/ contained highlight default link coffeeAssignmentMod SpecialChar syntax match coffeeAssignmentChar /:\|=/ contained highlight default link coffeeAssignmentChar SpecialChar syntax match coffeeVar /\<\%(this\|prototype\|arguments\)\>/ " Matches @-variables like @abc syntax match coffeeVar /@\%(\I\i*\)\?/ highlight default link coffeeVar Type " Matches class-like names that start with a capital letter, like Array or " Object syntax match coffeeObject /\<\u\w*\>/ highlight default link coffeeObject Structure " Matches constant-like names in SCREAMING_CAPS syntax match coffeeConstant /\<\u[A-Z0-9_]\+\>/ highlight default link coffeeConstant Constant syntax match coffeePrototype /::/ highlight default link coffeePrototype SpecialChar syntax region coffeeString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=@coffeeInterpString syntax region coffeeString start=/'/ skip=/\\\\\|\\'/ end=/'/ contains=@coffeeSimpleString highlight default link coffeeString String " What can make up a variable name syntax cluster coffeeIdentifier contains=coffeeVar,coffeeObject,coffeeConstant, \ coffeePrototype syntax match coffeeAssignment /@\?\I\%(\i\|::\|\.\|\[.\+\]\|([^)]*)\)*\s*\%(::\@!\|\%(and\|or\|\|&&\|||\|?\|+\|-\|\/\|\*\|%\|<<\|>>\|>>>\|&\||\|\^\)==\@!>\@!\)/ \ contains=@coffeeIdentifier,coffeeAssignmentMod, \ coffeeAssignmentChar,coffeeBrackets, \ coffeeParens syntax match coffeeAssignment /\%("\|'\)[^'"]\+\%("\|'\)\s*:/ contains=coffeeString, \ coffeeAssignmentChar syntax match coffeeAssignment /\d*\%(\.\d\+\)\?\s*:/ contains=coffeeNumber,coffeeAssignmentChar highlight default link coffeeAssignment Identifier syntax match coffeeFunction /->\|=>/ highlight default link coffeeFunction Function syntax keyword coffeeTodo TODO FIXME XXX contained highlight default link coffeeTodo Todo syntax match coffeeComment /#.*/ contains=@Spell,coffeeTodo syntax match coffeeComment /####\@!\_.\{-}###/ contains=@Spell,coffeeTodo highlight default link coffeeComment Comment syntax region coffeeEmbed start=/`/ end=/`/ highlight default link coffeeEmbed Special " Matches numbers like -10, -10e8, -10E8, 10, 10e8, 10E8 syntax match coffeeNumber /\<-\?\d\+\%([eE][+-]\?\d\+\)\?\>/ " Matches hex numbers like 0xfff, 0x000 syntax match coffeeNumber /\<0[xX]\x\+\>/ highlight default link coffeeNumber Number " Matches floating-point numbers like -10.42e8, 10.42e-8 syntax match coffeeFloat /-\?\d*\.\@