1" Vim syntax file 2" Language: Renderman shader language 3" Maintainer: Dan Piponi <[email protected]> 4" Last Change: 2001 May 09 5 6" quit when a syntax file was already loaded 7if exists("b:current_syntax") 8 finish 9endif 10 11" A bunch of useful Renderman keywords including special 12" RenderMan control structures 13syn keyword slStatement break return continue 14syn keyword slConditional if else 15syn keyword slRepeat while for 16syn keyword slRepeat illuminance illuminate solar 17 18syn keyword slTodo contained TODO FIXME XXX 19 20" String and Character constants 21" Highlight special characters (those which have a backslash) differently 22syn match slSpecial contained "\\[0-9][0-9][0-9]\|\\." 23syn region slString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial 24syn match slCharacter "'[^\\]'" 25syn match slSpecialCharacter "'\\.'" 26syn match slSpecialCharacter "'\\[0-9][0-9]'" 27syn match slSpecialCharacter "'\\[0-9][0-9][0-9]'" 28 29"catch errors caused by wrong parenthesis 30syn region slParen transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel 31syn match slParenError ")" 32syn match slInParen contained "[{}]" 33 34"integer number, or floating point number without a dot and with "f". 35syn case ignore 36syn match slNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" 37"floating point number, with dot, optional exponent 38syn match slFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" 39"floating point number, starting with a dot, optional exponent 40syn match slFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" 41"floating point number, without dot, with exponent 42syn match slFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" 43"hex number 44syn match slNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" 45"syn match slIdentifier "\<[a-z_][a-z0-9_]*\>" 46syn case match 47 48if exists("sl_comment_strings") 49 " A comment can contain slString, slCharacter and slNumber. 50 " But a "*/" inside a slString in a slComment DOES end the comment! So we 51 " need to use a special type of slString: slCommentString, which also ends on 52 " "*/", and sees a "*" at the start of the line as comment again. 53 " Unfortunately this doesn't very well work for // type of comments :-( 54 syntax match slCommentSkip contained "^\s*\*\($\|\s\+\)" 55 syntax region slCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip 56 syntax region slComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial 57 syntax region slComment start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber 58else 59 syn region slComment start="/\*" end="\*/" contains=slTodo 60endif 61syntax match slCommentError "\*/" 62 63syn keyword slOperator sizeof 64syn keyword slType float point color string vector normal matrix void 65syn keyword slStorageClass varying uniform extern 66syn keyword slStorageClass light surface volume displacement transformation imager 67syn keyword slVariable Cs Os P dPdu dPdv N Ng u v du dv s t 68syn keyword slVariable L Cl Ol E I ncomps time Ci Oi 69syn keyword slVariable Ps alpha 70syn keyword slVariable dtime dPdtime 71 72syn sync ccomment slComment minlines=10 73 74" Define the default highlighting. 75" Only when an item doesn't have highlighting yet 76command -nargs=+ HiLink hi def link <args> 77 78HiLink slLabel Label 79HiLink slUserLabel Label 80HiLink slConditional Conditional 81HiLink slRepeat Repeat 82HiLink slCharacter Character 83HiLink slSpecialCharacter slSpecial 84HiLink slNumber Number 85HiLink slFloat Float 86HiLink slParenError slError 87HiLink slInParen slError 88HiLink slCommentError slError 89HiLink slOperator Operator 90HiLink slStorageClass StorageClass 91HiLink slError Error 92HiLink slStatement Statement 93HiLink slType Type 94HiLink slCommentError slError 95HiLink slCommentString slString 96HiLink slComment2String slString 97HiLink slCommentSkip slComment 98HiLink slString String 99HiLink slComment Comment 100HiLink slSpecial SpecialChar 101HiLink slTodo Todo 102HiLink slVariable Identifier 103"HiLink slIdentifier Identifier 104 105delcommand HiLink 106 107let b:current_syntax = "sl" 108 109" vim: ts=8 110