" Vim syntax file " Language: CHUCK " Adapted by Eduard Aylon from the c.vim syntax file from Bram Moolenar " NOTE: in order to obtain syntax highlighting in Chuck programs just follow the steps below: " 1. copy this file into /usr/share/vim/vim62/syntax. " 2. add the following line in /usr/share/vim/filetype.vim, " " au BufNewFile,BufRead *.ck setf ck " " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif "catch errors caused by wrong parenthesis and brackets " also accept <% for {, %> for }, <: for [ and :> for ] (C99) syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom if exists("c_no_bracket_error") syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString syn match cParenError display ")" syn match cErrInParen display contained "[{}]\|<%\|%>" else syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString syn match cParenError display "[\])]" syn match cErrInParen display contained "[\]{}]\|<%\|%>" syn region cBracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString " cCppBracket: same as cParen but ends at end-of-line; used in cDefine syn region cCppBracket transparent start='\[\|<:' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString syn match cErrInBracket display contained "[);{}]\|<%\|%>" endif if exists("c_no_cformat") syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial " cCppString: same as cString, but ends at end of line syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial else syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match cFormat display "%%" contained syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat " cCppString: same as cString, but ends at end of line syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat endif if exists("c_comment_strings") " A comment can contain cString, cCharacter and cNumber. " But a "*/" inside a cString in a cComment DOES end the comment! So we " need to use a special type of cString: cCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( syntax match cCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region cCommentString contained start=+L\=\\\@" syn match ckNumber "\<\d\+[LljJ]\=\>" syn match ckNumber "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" syn match ckNumber "\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>" syn match ckNumber "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" " CHUCK extentions syn keyword ckStatement new goto break return continue spork syn keyword ckConditional if else switch syn keyword ckLoop while for do until syn keyword ckNow now syn keyword ckType dur time Shred UGen Event Object syn keyword cType int float string void syn keyword ckAccess public protected private syn keyword ckOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq syn match ckCast "\$\(int\|float\|string\)" syn keyword ckStructure class fun syn keyword ckUgen gain blackhole noise impulse step sinosc pulseosc triosc sqrosc sawosc halfrec fullrect zerox delayp sndbuf pan2 syn keyword ckSDK BandedWG BlowBotl BlowHole Bowed Brass Clarinet Flute Mandolin ModalBar Moog Saxofony Shakers Sitar StifKarp VoicForm FM BeeThree FMVoices HevyMetl PercFlut Rhodey TubeBell Wurley Delay DelayA DelayL Echo Envelope ADSR BiQuad Filter OnePole TwoPole OneZero TwoZero PoleZero JCRev NRev PRCRev Chorus Modulate PitShift SubNoise WvIn WvOut WaveLoop syn keyword ckBoolean true false syn match ckConnection "<@>" syn keyword ckShreds me machine syn keyword ckInheritance subClass extends syn keyword ckIO dac adc syn keyword ckNetwork netin netout " The minimum and maximum operators in GNU C++ syn match cppMinMax "[<>]?" " Default highlighting if version >= 508 || !exists("did_cpp_syntax_inits") if version < 508 let did_cpp_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink ckConnection Include HiLink cCommentL cComment HiLink cCommentStart cComment HiLink cComment Comment HiLink cCppString cString HiLink cString String HiLink ckConditional Conditional HiLink ckLoop Repeat HiLink ckAccess Statement HiLink ckUgen Type HiLink ckSDK Type HiLink ckCast Statement " HiLink cppExceptions Exception " HiLink cppOperator Operator HiLink ckStatement Statement HiLink ckNow Statement HiLink ckType Type HiLink cType Type "HiLink cppStorageClass StorageClass HiLink ckStructure Structure " HiLink cppNumber Number HiLink ckConnection Number HiLink ckShreds Statement HiLink ckInheritance Statement HiLink ckBoolean Boolean HiLink ckIO Include HiLink cParenError cError HiLink cErrInBracket cError HiLink cErrInParen cError HiLink cParen cError HiLink cCppParen cError HiLink cBracket cError HiLink cCppBracket cError HiLink cError Error HiLink ckNumber Number delcommand HiLink endif let b:current_syntax = "ck" " vim: ts=8