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