if exists( "b:current_syntax" ) finish endif syn iskeyword @,-,$ syn sync lines=100 " ------------------------------------------------------------------------------ " Clusters syn cluster srdListCluster contains=@srdListCluster,srdKWDefAsset,srdKWDebug,srdKWFlow,srdKWState,srdKWDraw,srdKWExpr,srdWord,srdVariable,srdSLComment,srdMLComment,srdString,srdNumeric,srdBinary syn cluster srdCommentCluster contains=@srdCommentCluster,srdTodo " ------------------------------------------------------------------------------ " Lists syn region srdList0 matchgroup=hlLevel0 start="(" end=")" contains=@srdListCluster,srdList1 syn region srdList1 matchgroup=hlLevel1 start="(" end=")" contains=@srdListCluster,srdList2 syn region srdList2 matchgroup=hlLevel2 start="(" end=")" contains=@srdListCluster,srdList3 syn region srdList3 matchgroup=hlLevel3 start="(" end=")" contains=@srdListCluster,srdList4 syn region srdList4 matchgroup=hlLevel4 start="(" end=")" contains=@srdListCluster,srdList5 syn region srdList5 matchgroup=hlLevel5 start="(" end=")" contains=@srdListCluster,srdList6 syn region srdList6 matchgroup=hlLevel6 start="(" end=")" contains=@srdListCluster,srdList7 syn region srdList7 matchgroup=hlLevel7 start="(" end=")" contains=@srdListCluster,srdList8 syn region srdList8 matchgroup=hlLevel8 start="(" end=")" contains=@srdListCluster,srdList9 syn region srdList9 matchgroup=hlLevel9 start="(" end=")" contains=@srdListCluster,srdList0 syn match srdListError ")" " ------------------------------------------------------------------------------ " Comments syn match srdSLComment "#.*$" contains=srdTodo syn region srdMLComment start="{" end="}" contains=srdMLComment,@srdCommentCluster syn keyword srdTodo contained TODO TODO: FIXME FIXME: XXX XXX: " ------------------------------------------------------------------------------ " Keywords syn keyword srdKWFlow if set call fn init frame locals syn keyword srdKWDefAsset program pipeline input framebuffer texture sampler syn keyword srdKWDebug profiling odbg ui-overrides syn keyword srdKWState use-texture use-framebuffer use-program use-pipeline syn keyword srdKWState uniforms uniforms-i viewport syn keyword srdKWDraw fullscreen syn keyword srdKWExpr add sub mul div pow syn keyword srdKWExpr cmp-eq cmp-ne cmp-gt cmp-ge cmp-lt cmp-le syn keyword srdKWExpr inv neg not sin cos tan sqrt ln exp syn keyword srdKWExpr get-input " ------------------------------------------------------------------------------ " Variables, words and numbers syn match srdVariable "\$[a-zA-Z][a-zA-Z0-9]*\(-[a-zA-Z][a-zA-Z0-9]*\)*" syn match srdWord "-\?[a-zA-Z][a-zA-Z0-9]*\(-[a-zA-Z][a-zA-Z0-9]*\)*" syn match srdNumeric "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([eE][-+]\=\d\+\)\=" " ------------------------------------------------------------------------------ " Strings syn match srdBadString +"[^"]*$+ syn region srdString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=srdStringEscape extend syn match srdStringEscape display contained "\\[nbrt\\\"]" syn match srdStringEscape display contained "\\\(u\x\{4}\|U\x\{8}\)" " ------------------------------------------------------------------------------ " Binary data syn region srdBinary start="\[" end="\]" contains=srdBinaryDigits,srdBinaryError syn match srdBinaryDigits contained "[0-9a-fA-F][0-9a-fA-F]" syn match srdBinaryError contained "[^0-9a-fA-F\ \t\[\]]" syn match srdBinaryError contained "[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]\+" " ------------------------------------------------------------------------------ " Actual highlighting hi def link srdSLComment Comment hi def link srdMLComment Comment hi def link srdTodo Todo hi def link srdWord Identifier hi def srdVariable ctermfg=121 cterm=italic hi def srdNumeric cterm=italic ctermfg=10 hi def srdKWExpr ctermfg=39 cterm=italic hi def link srdKWFlow Statement hi def srdKWDefAsset ctermfg=83 cterm=bold hi def srdKWDebug ctermfg=127 cterm=bold hi def srdKWState ctermfg=180 cterm=bold hi def srdKWDraw ctermfg=210 cterm=bold hi def link srdBinary Number hi def link srdBinaryDigits Number hi def link srdBinaryError Error hi def link srdString String hi def link srdStringEscape SpecialChar hi def hlLevel0 ctermfg=red guifg=red1 hi def hlLevel1 ctermfg=yellow guifg=orange1 hi def hlLevel2 ctermfg=green guifg=yellow1 hi def hlLevel3 ctermfg=cyan guifg=greenyellow hi def hlLevel4 ctermfg=magenta guifg=green1 if &t_Co == 256 hi def hlLevel5 ctermfg=lightred guifg=springgreen1 hi def hlLevel6 ctermfg=lightyellow guifg=cyan1 hi def hlLevel7 ctermfg=lightgreen guifg=slateblue1 hi def hlLevel8 ctermfg=lightblue guifg=magenta1 hi def hlLevel9 ctermfg=lightcyan guifg=purple1 else hi def hlLevel5 ctermfg=red guifg=springgreen1 hi def hlLevel6 ctermfg=yellow guifg=cyan1 hi def hlLevel7 ctermfg=green guifg=slateblue1 hi def hlLevel8 ctermfg=cyan guifg=magenta1 hi def hlLevel9 ctermfg=magenta guifg=purple1 endif hi def link srdListError Error let b:current_syntax="demo-srd"