diff --git a/.vim.local/syntax/demo-srd.vim b/.vim.local/syntax/demo-srd.vim new file mode 100644 index 0000000..048d734 --- /dev/null +++ b/.vim.local/syntax/demo-srd.vim @@ -0,0 +1,125 @@ +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 + +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" diff --git a/demo.srd b/demo.srd index 9be52f1..a919db8 100644 --- a/demo.srd +++ b/demo.srd @@ -165,3 +165,5 @@ (fullscreen) ) ) + +# vim: syntax=demo-srd