" Vim syntax file " Language: CHUCK " Adapted by Eduard Aylon from the c.vim syntax file from Bram Moolenar " Last Update: 27/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 "---------------------------------------------------------------------------------------------- "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 case ignore syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat " 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 endding dot: 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*(\s*\d\+\s*\,\s*\d\+\s*)\s*" "(4., 4.) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\.\s*\,\s*\d\+\.\s*)\s*" "(4.44, 4.44) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\.\d\+\s*\,\s*\d\.\d\+\s*)\s*" "(44.44, 44.44) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\.\d\+\s*\,\s*\d\+\.\d\+\s*)\s*" "(4., 4.4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\.\s*\,\s*\d\+\.\d\+\s*)\s*" "(4., 4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\.\s*\,\s*\d\+\s*)\s*" "(.4, .4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\.\d\+\s*\,\s*\.\d\+\s*)\s*" "(.4, 4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\.\d\+\s*\,\s*\d\+\s*)\s*" "(4, .4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\s*\,\s*\.\d\+\s*)\s*" "(4.4, 4) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\.\d\+\s*\,\s*\d\+\s*)\s*" "(4, 4.) syn match ckComplex "\s*\(\#\|%\)\s*(\s*\d\+\s*\,\s*\d\+\.\s*)\s*" "(4, 4.4) syn match ckComplex "\s*\(\#\|%\)\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 cCommentL cComment HiLink cCommentStart cComment HiLink cComment Comment HiLink cCppString cString HiLink cString String HiLink ckClass Conditional HiLink ckStorageClass StorageClass HiLink ckLoop Repeat HiLink ckAccess ckStatement HiLink ckUgen ckType HiLink ckSDK ckType HiLink ckStatement Statement HiLink ckConditional Conditional HiLink ckRepeat Repeat HiLink ckSpork Statement HiLink ckCast ckStatement HiLink ckNow Special HiLink ckType Type HiLink cType Type HiLink ckStructure Structure HiLink ckOperator Operator HiLink ckReference Operator HiLink ckShreds ckStatement HiLink ckInheritance ckStatement HiLink ckBoolean Boolean HiLink ckIO Number HiLink ckTime Number 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 cNumber Number HiLink cNumbers Number HiLink cNumbersCom Number HiLink cFloat Number HiLink ckPolar Number HiLink ckComplex Number HiLink ckConstant Constant HiLink ckAnalysis ckType HiLink ckFeatures ckType HiLink cTodo Todo delcommand HiLink endif let b:current_syntax = "ck" " vim: ts=8