" Vim syntax file " Language: CHUCK " Adapted by Eduard Aylon from the c.vim syntax file from Bram Moolenar " Last Update: 30/10/07 " 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/vim62/filetype.vim, " " au BufNewFile,BufRead *.ck setf ck " "NOTE: Tip from Graham Percival for those who 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 " Read the C syntax to start with " This should be changed as there are many features in the C-language which are not " present in CHUCK "if version < 600 " so :p:h/c.vim "else " runtime! syntax/c.vim " unlet b:current_syntax "endif "---------------------------------------------------------------------------------------------- syn keyword cTodo contained TODO FIXME XXX " cCommentGroup allows adding matches for special things in comments syn cluster cCommentGroup contains=cTodo "---------------------------------------------------------------------------------------------- " String and Character constants " Highlight special characters (those which have a backslash) differently syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" 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 "---------------------------------------------------------------------------------------------- "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 "---------------------------------------------------------------------------------------------- " "integer number, or floating point number without a dot and with "f". syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat " long numbers syn match cNumbers "\<0x\x\+[Ll]\=\>" " hex numbers syn match cNumbers "\<\d\+[LljJ]\=\>" " Same, but without octal error (for comments) "syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat "syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" syn match cFloat display contained "\d\+" "Floating point number with leading dot: syn match cFloat display contained ".\d\+" "Floating point number with ending dot: syn match cFloat display contained "\d\.\+" syn match cFloat display contained "\d\+\.\+" "floating point number, with dot: syn match cFloat display contained "\d\+\.\d+" " numbers below are not yet available in Chuck ""hex number ""syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" "" Flag the first zero of an octal number as something special ""syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero ""syn match cOctalZero display contained "\<0" ""floating point number, with dot, optional exponent "syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" ""floating point number, starting with a dot, optional exponent "syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" ""floating point number, without dot, with exponent "syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" "if !exists("c_no_c99") " "hexadecimal floating point number, optional leading digits, with dot, with exponent " syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" " "hexadecimal floating point number, with leading digits, optional dot, with exponent " syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" "endif "---------------------------------------------------------------------------------------------- " cCommentGroup allows adding matches for special things in comments syn cluster cCommentGroup contains=cTodo 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\=\\\@\|<\|\^\)\s*" syn match ckReference "\s*@\s*=\(>\|<\)\s*" "---------------------------------------------------------------------------------------------- "complex numbers "(4, 4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\s*\,\s*\d\+\s*)\s*" "(4., 4.) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\.\s*\,\s*\d\+\.\s*)\s*" "(4.44, 4.44) syn match ckComplex "\s*\(\#\|%\)(\s*\d\.\d\+\s*\,\s*\d\.\d\+\s*)\s*" "(44.44, 44.44) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\.\d\+\s*\,\s*\d\+\.\d\+\s*)\s*" "(4., 4.4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\.\s*\,\s*\d\+\.\d\+\s*)\s*" "(4., 4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\.\s*\,\s*\d\+\s*)\s*" "(.4, .4) syn match ckComplex "\s*\(\#\|%\)(\s*\.\d\+\s*\,\s*\.\d\+\s*)\s*" "(.4, 4) syn match ckComplex "\s*\(\#\|%\)(\s*\.\d\+\s*\,\s*\d\+\s*)\s*" "(4, .4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\s*\,\s*\.\d\+\s*)\s*" "(4.4, 4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\.\d\+\s*\,\s*\d\+\s*)\s*" "(4, 4.) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\s*\,\s*\d\+\.\s*)\s*" "(4, 4.4) syn match ckComplex "\s*\(\#\|%\)(\s*\d\+\s*\,\s*\d\+\.\d\+\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 else command -nargs=+ HiLink hi def link endif HiLink ckCommunication Special HiLink ckNetwork Special HiLink ckNow Special HiLink ckClass Conditional HiLink ckConditional Conditional HiLink ckStorageClass StorageClass HiLink ckLoop Repeat HiLink ckRepeat Repeat HiLink ckAnalysis ckType HiLink ckFeatures ckType HiLink ckUgen ckType HiLink ckSDK ckType HiLink ckType Type HiLink ckAccess ckStatement HiLink ckCast ckStatement HiLink ckShreds ckStatement HiLink ckInheritance ckStatement HiLink ckSpork Statement HiLink ckStatement Statement HiLink ckStructure Structure HiLink ckOperator Operator HiLink ckReference Operator HiLink ckBoolean Boolean HiLink ckIO Number HiLink ckTime Number HiLink ckNumber Number HiLink cNumber Number HiLink cNumbers Number HiLink cNumbersCom Number HiLink ckPolar Number HiLink ckComplex Number HiLink ckConstant Constant " ----------------------------------------- HiLink cTodo Todo HiLink cType Type HiLink cFloat Number HiLink cCommentStart cComment HiLink cCommentL cComment HiLink cComment Comment HiLink cCppString cString HiLink cString String HiLink cSpecial SpecialChar HiLink cSpecialCharacter cSpecial HiLink cFormat cSpecial HiLink cCharacter Character HiLink cSpecialError cError HiLink cParenError cError HiLink cErrInBracket cError HiLink cErrInParen cError HiLink cParen cError HiLink cCppParen cError HiLink cBracket cError HiLink cCppBracket cError HiLink cSpaceError cError HiLink cError Error delcommand HiLink endif let b:current_syntax = "ck" " vim: ts=8