You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
8.7 KiB
VimL
178 lines
8.7 KiB
VimL
11 years ago
|
" Vim syntax file
|
||
|
" Language: CHUCK
|
||
|
" Adapted by Eduard Aylon <eduard.aylon@gmail.com> from the c.vim syntax file from Bram Moolenar <Bram@vim.org>
|
||
|
|
||
|
" NOTE: in order to obtain syntax highlighting in Chuck programs just follow the
|
||
|
" steps below or in case you don't have root privileges follow Graham Percival's tip :
|
||
|
" 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
|
||
|
"
|
||
|
|
||
|
|
||
|
"Tip from Graham Percival:
|
||
|
" If you cannot write to /usr/share/ (lacking root privileges),
|
||
|
" enter these commands:
|
||
|
" $ echo "syntax on" >> ~/.vimrc
|
||
|
" $ mkdir ~/.vim
|
||
|
" $ mkdir ~/.vim/syntax
|
||
|
" $ cp ck.vim ~/.vim/syntax/
|
||
|
" $ echo "if exists(\"did_load_filetypes\")
|
||
|
" finish
|
||
|
" endif
|
||
|
" augroup filetypedetect
|
||
|
" au! BufNewFile,BufRead *.ck setf ck
|
||
|
" augroup END" >> ~/.vim/filetype.vim
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
" 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\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
|
||
|
syntax region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
|
||
|
syntax region cCommentL start="\(//\|<--\)" skip="(//\|<--\)$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
|
||
|
syntax region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError
|
||
|
else
|
||
|
syn region cCommentL start="\(//\|<--\)" skip="\(//\|<--\)$" end="$" keepend contains=@cCommentGroup,cSpaceError
|
||
|
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError
|
||
|
endif
|
||
|
|
||
|
|
||
|
syn match ckNone "\w\+\.\w\+"
|
||
|
syn match ckNumber "\<0x\x\+[Ll]\=\>"
|
||
|
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 complex polar Shred UGen Event Object
|
||
|
syn keyword cType int float string void
|
||
|
syn match ckComplexPolar "\(%\|#\)\ze(" " \ze means end the match here
|
||
|
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 "\s*\$\s*\(int\|float\|polar\|complex\)\ze\(\s\|,\)"
|
||
|
syn keyword ckStructure class fun
|
||
|
syn keyword ckUgen Gain Noise Impulse Step Phasor 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 FilterBasic OnePole TwoPole OneZero TwoZero PoleZero LPF HPF BPF BRF JCRev NRev PRCRev ResonZ Chorus Modulate PitShift SubNoise WvIn WvOut WaveLoop
|
||
|
syn keyword ckUAna UAna UAnaBlob Windowing FFT IFFT DCT IDCT Centroid Flux RMS RollOff
|
||
|
syn keyword ckBoolean true false
|
||
|
syn keyword ckShreds me machine
|
||
|
syn keyword ckInheritance subClass extends
|
||
|
syn keyword ckIO dac adc blackhole
|
||
|
syn keyword ckNetwork NetIn NetOut
|
||
|
syn keyword ckCommunication MidiIn MidiOut MidiMsg OSC_Recv OSC_Addr OSC_Send
|
||
|
syn keyword ckConstants pi
|
||
|
syn match ckOperator "\s*\(+\|-\|/\|*\|\s*\)=\(>\|<\|\^\)\s*"
|
||
|
|
||
|
" 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 <args>
|
||
|
else
|
||
|
command -nargs=+ HiLink hi def link <args>
|
||
|
endif
|
||
|
|
||
|
HiLink ckCommunication Special
|
||
|
HiLink ckNetwork Special
|
||
|
HiLink cCommentL cComment
|
||
|
HiLink cCommentStart cComment
|
||
|
HiLink cComment Comment
|
||
|
HiLink cCppString cString
|
||
|
HiLink cString String
|
||
|
HiLink ckConditional Conditional
|
||
|
HiLink ckLoop Repeat
|
||
|
HiLink ckAccess ckStatement
|
||
|
HiLink ckUgen ckType
|
||
|
HiLink ckSDK ckType
|
||
|
HiLink ckUAna ckType
|
||
|
HiLink ckStatement Statement
|
||
|
HiLink ckCast ckStatement
|
||
|
HiLink ckComplexPolar CkStatement
|
||
|
HiLink ckNow Special
|
||
|
HiLink ckType Type
|
||
|
HiLink cType Type
|
||
|
HiLink ckStructure Structure
|
||
|
HiLink ckOperator Operator
|
||
|
HiLink ckShreds ckStatement
|
||
|
HiLink ckInheritance ckStatement
|
||
|
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
|
||
|
HiLink ckConstants Constant
|
||
|
|
||
|
delcommand HiLink
|
||
|
endif
|
||
|
|
||
|
let b:current_syntax = "ck"
|
||
|
|
||
|
" vim: ts=8 nowrap
|