1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Renderman shader language 3071d4279SBram Moolenaar" Maintainer: Dan Piponi <[email protected]> 4071d4279SBram Moolenaar" Last Change: 2001 May 09 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11071d4279SBram Moolenaar" A bunch of useful Renderman keywords including special 12071d4279SBram Moolenaar" RenderMan control structures 13071d4279SBram Moolenaarsyn keyword slStatement break return continue 14071d4279SBram Moolenaarsyn keyword slConditional if else 15071d4279SBram Moolenaarsyn keyword slRepeat while for 16071d4279SBram Moolenaarsyn keyword slRepeat illuminance illuminate solar 17071d4279SBram Moolenaar 18071d4279SBram Moolenaarsyn keyword slTodo contained TODO FIXME XXX 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" String and Character constants 21071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently 22071d4279SBram Moolenaarsyn match slSpecial contained "\\[0-9][0-9][0-9]\|\\." 23071d4279SBram Moolenaarsyn region slString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial 24071d4279SBram Moolenaarsyn match slCharacter "'[^\\]'" 25071d4279SBram Moolenaarsyn match slSpecialCharacter "'\\.'" 26071d4279SBram Moolenaarsyn match slSpecialCharacter "'\\[0-9][0-9]'" 27071d4279SBram Moolenaarsyn match slSpecialCharacter "'\\[0-9][0-9][0-9]'" 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar"catch errors caused by wrong parenthesis 30071d4279SBram Moolenaarsyn region slParen transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel 31071d4279SBram Moolenaarsyn match slParenError ")" 32071d4279SBram Moolenaarsyn match slInParen contained "[{}]" 33071d4279SBram Moolenaar 34071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f". 35071d4279SBram Moolenaarsyn case ignore 36071d4279SBram Moolenaarsyn match slNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" 37071d4279SBram Moolenaar"floating point number, with dot, optional exponent 38071d4279SBram Moolenaarsyn match slFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" 39071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 40071d4279SBram Moolenaarsyn match slFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" 41071d4279SBram Moolenaar"floating point number, without dot, with exponent 42071d4279SBram Moolenaarsyn match slFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" 43071d4279SBram Moolenaar"hex number 44071d4279SBram Moolenaarsyn match slNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" 45071d4279SBram Moolenaar"syn match slIdentifier "\<[a-z_][a-z0-9_]*\>" 46071d4279SBram Moolenaarsyn case match 47071d4279SBram Moolenaar 48071d4279SBram Moolenaarif exists("sl_comment_strings") 49071d4279SBram Moolenaar " A comment can contain slString, slCharacter and slNumber. 50071d4279SBram Moolenaar " But a "*/" inside a slString in a slComment DOES end the comment! So we 51071d4279SBram Moolenaar " need to use a special type of slString: slCommentString, which also ends on 52071d4279SBram Moolenaar " "*/", and sees a "*" at the start of the line as comment again. 53071d4279SBram Moolenaar " Unfortunately this doesn't very well work for // type of comments :-( 54071d4279SBram Moolenaar syntax match slCommentSkip contained "^\s*\*\($\|\s\+\)" 55071d4279SBram Moolenaar syntax region slCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip 56071d4279SBram Moolenaar syntax region slComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial 57071d4279SBram Moolenaar syntax region slComment start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber 58071d4279SBram Moolenaarelse 59071d4279SBram Moolenaar syn region slComment start="/\*" end="\*/" contains=slTodo 60071d4279SBram Moolenaarendif 61071d4279SBram Moolenaarsyntax match slCommentError "\*/" 62071d4279SBram Moolenaar 63071d4279SBram Moolenaarsyn keyword slOperator sizeof 64071d4279SBram Moolenaarsyn keyword slType float point color string vector normal matrix void 65071d4279SBram Moolenaarsyn keyword slStorageClass varying uniform extern 66071d4279SBram Moolenaarsyn keyword slStorageClass light surface volume displacement transformation imager 67071d4279SBram Moolenaarsyn keyword slVariable Cs Os P dPdu dPdv N Ng u v du dv s t 68071d4279SBram Moolenaarsyn keyword slVariable L Cl Ol E I ncomps time Ci Oi 69071d4279SBram Moolenaarsyn keyword slVariable Ps alpha 70071d4279SBram Moolenaarsyn keyword slVariable dtime dPdtime 71071d4279SBram Moolenaar 72071d4279SBram Moolenaarsyn sync ccomment slComment minlines=10 73071d4279SBram Moolenaar 74071d4279SBram Moolenaar" Define the default highlighting. 7589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 76071d4279SBram Moolenaar 77*f37506f6SBram Moolenaarhi def link slLabel Label 78*f37506f6SBram Moolenaarhi def link slUserLabel Label 79*f37506f6SBram Moolenaarhi def link slConditional Conditional 80*f37506f6SBram Moolenaarhi def link slRepeat Repeat 81*f37506f6SBram Moolenaarhi def link slCharacter Character 82*f37506f6SBram Moolenaarhi def link slSpecialCharacter slSpecial 83*f37506f6SBram Moolenaarhi def link slNumber Number 84*f37506f6SBram Moolenaarhi def link slFloat Float 85*f37506f6SBram Moolenaarhi def link slParenError slError 86*f37506f6SBram Moolenaarhi def link slInParen slError 87*f37506f6SBram Moolenaarhi def link slCommentError slError 88*f37506f6SBram Moolenaarhi def link slOperator Operator 89*f37506f6SBram Moolenaarhi def link slStorageClass StorageClass 90*f37506f6SBram Moolenaarhi def link slError Error 91*f37506f6SBram Moolenaarhi def link slStatement Statement 92*f37506f6SBram Moolenaarhi def link slType Type 93*f37506f6SBram Moolenaarhi def link slCommentError slError 94*f37506f6SBram Moolenaarhi def link slCommentString slString 95*f37506f6SBram Moolenaarhi def link slComment2String slString 96*f37506f6SBram Moolenaarhi def link slCommentSkip slComment 97*f37506f6SBram Moolenaarhi def link slString String 98*f37506f6SBram Moolenaarhi def link slComment Comment 99*f37506f6SBram Moolenaarhi def link slSpecial SpecialChar 100*f37506f6SBram Moolenaarhi def link slTodo Todo 101*f37506f6SBram Moolenaarhi def link slVariable Identifier 102*f37506f6SBram Moolenaar"hi def link slIdentifier Identifier 103071d4279SBram Moolenaar 104071d4279SBram Moolenaar 105071d4279SBram Moolenaarlet b:current_syntax = "sl" 106071d4279SBram Moolenaar 107071d4279SBram Moolenaar" vim: ts=8 108