1" Vim syntax file
2" Language:     Radiance Scene Description
3" Maintainer:   Georg Mischler <schorsch@schorsch.com>
4" Last change:  26. April. 2001
5
6" Radiance is a lighting simulation software package written
7" by Gregory Ward-Larson ("the computer artist formerly known
8" as Greg Ward"), then at LBNL.
9"
10" http://radsite.lbl.gov/radiance/HOME.html
11"
12" Of course, there is also information available about it
13" from http://www.schorsch.com/
14
15
16" We take a minimalist approach here, highlighting just the
17" essential properties of each object, its type and ID, as well as
18" comments, external command names and the null-modifier "void".
19
20
21" For version 5.x: Clear all syntax items
22" For version 6.x: Quit when a syntax file was already loaded
23if version < 600
24  syntax clear
25elseif exists("b:current_syntax")
26  finish
27endif
28
29" all printing characters except '#' and '!' are valid in names.
30if version >= 600
31  setlocal iskeyword=\",$-~
32else
33  set iskeyword=\",$-~
34endif
35
36" The null-modifier
37syn keyword radianceKeyword void
38
39" The different kinds of scene description object types
40" Reference types
41syn keyword radianceExtraType contained alias instance
42" Surface types
43syn keyword radianceSurfType contained ring polygon sphere bubble
44syn keyword radianceSurfType contained cone cup cylinder tube source
45" Emitting material types
46syn keyword radianceLightType contained light glow illum spotlight
47" Material types
48syn keyword radianceMatType contained mirror mist prism1 prism2
49syn keyword radianceMatType contained metal plastic trans
50syn keyword radianceMatType contained metal2 plastic2 trans2
51syn keyword radianceMatType contained metfunc plasfunc transfunc
52syn keyword radianceMatType contained metdata plasdata transdata
53syn keyword radianceMatType contained dielectric interface glass
54syn keyword radianceMatType contained BRTDfunc antimatter
55" Pattern modifier types
56syn keyword radiancePatType contained colorfunc brightfunc
57syn keyword radiancePatType contained colordata colorpict brightdata
58syn keyword radiancePatType contained colortext brighttext
59" Texture modifier types
60syn keyword radianceTexType contained texfunc texdata
61" Mixture types
62syn keyword radianceMixType contained mixfunc mixdata mixpict mixtext
63
64
65" Each type name is followed by an ID.
66" This doesn't work correctly if the id is one of the type names of the
67" same class (which is legal for radiance), in which case the id will get
68" type color as well, and the int count (or alias reference) gets id color.
69
70syn region radianceID start="\<alias\>"      end="\<\k*\>" contains=radianceExtraType
71syn region radianceID start="\<instance\>"   end="\<\k*\>" contains=radianceExtraType
72
73syn region radianceID start="\<source\>"     end="\<\k*\>" contains=radianceSurfType
74syn region radianceID start="\<ring\>"	     end="\<\k*\>" contains=radianceSurfType
75syn region radianceID start="\<polygon\>"    end="\<\k*\>" contains=radianceSurfType
76syn region radianceID start="\<sphere\>"     end="\<\k*\>" contains=radianceSurfType
77syn region radianceID start="\<bubble\>"     end="\<\k*\>" contains=radianceSurfType
78syn region radianceID start="\<cone\>"	     end="\<\k*\>" contains=radianceSurfType
79syn region radianceID start="\<cup\>"	     end="\<\k*\>" contains=radianceSurfType
80syn region radianceID start="\<cylinder\>"   end="\<\k*\>" contains=radianceSurfType
81syn region radianceID start="\<tube\>"	     end="\<\k*\>" contains=radianceSurfType
82
83syn region radianceID start="\<light\>"      end="\<\k*\>" contains=radianceLightType
84syn region radianceID start="\<glow\>"	     end="\<\k*\>" contains=radianceLightType
85syn region radianceID start="\<illum\>"      end="\<\k*\>" contains=radianceLightType
86syn region radianceID start="\<spotlight\>"  end="\<\k*\>" contains=radianceLightType
87
88syn region radianceID start="\<mirror\>"     end="\<\k*\>" contains=radianceMatType
89syn region radianceID start="\<mist\>"	     end="\<\k*\>" contains=radianceMatType
90syn region radianceID start="\<prism1\>"     end="\<\k*\>" contains=radianceMatType
91syn region radianceID start="\<prism2\>"     end="\<\k*\>" contains=radianceMatType
92syn region radianceID start="\<metal\>"      end="\<\k*\>" contains=radianceMatType
93syn region radianceID start="\<plastic\>"    end="\<\k*\>" contains=radianceMatType
94syn region radianceID start="\<trans\>"      end="\<\k*\>" contains=radianceMatType
95syn region radianceID start="\<metal2\>"     end="\<\k*\>" contains=radianceMatType
96syn region radianceID start="\<plastic2\>"   end="\<\k*\>" contains=radianceMatType
97syn region radianceID start="\<trans2\>"     end="\<\k*\>" contains=radianceMatType
98syn region radianceID start="\<metfunc\>"    end="\<\k*\>" contains=radianceMatType
99syn region radianceID start="\<plasfunc\>"   end="\<\k*\>" contains=radianceMatType
100syn region radianceID start="\<transfunc\>"  end="\<\k*\>" contains=radianceMatType
101syn region radianceID start="\<metdata\>"    end="\<\k*\>" contains=radianceMatType
102syn region radianceID start="\<plasdata\>"   end="\<\k*\>" contains=radianceMatType
103syn region radianceID start="\<transdata\>"  end="\<\k*\>" contains=radianceMatType
104syn region radianceID start="\<dielectric\>" end="\<\k*\>" contains=radianceMatType
105syn region radianceID start="\<interface\>"  end="\<\k*\>" contains=radianceMatType
106syn region radianceID start="\<glass\>"      end="\<\k*\>" contains=radianceMatType
107syn region radianceID start="\<BRTDfunc\>"   end="\<\k*\>" contains=radianceMatType
108syn region radianceID start="\<antimatter\>" end="\<\k*\>" contains=radianceMatType
109
110syn region radianceID start="\<colorfunc\>"  end="\<\k*\>" contains=radiancePatType
111syn region radianceID start="\<brightfunc\>" end="\<\k*\>" contains=radiancePatType
112syn region radianceID start="\<colordata\>"  end="\<\k*\>" contains=radiancePatType
113syn region radianceID start="\<brightdata\>" end="\<\k*\>" contains=radiancePatType
114syn region radianceID start="\<colorpict\>"  end="\<\k*\>" contains=radiancePatType
115syn region radianceID start="\<colortext\>"  end="\<\k*\>" contains=radiancePatType
116syn region radianceID start="\<brighttext\>" end="\<\k*\>" contains=radiancePatType
117
118syn region radianceID start="\<texfunc\>"    end="\<\k*\>" contains=radianceTexType
119syn region radianceID start="\<texdata\>"    end="\<\k*\>" contains=radianceTexType
120
121syn region radianceID start="\<mixfunc\>"    end="\<\k*\>" contains=radianceMixType
122syn region radianceID start="\<mixdata\>"    end="\<\k*\>" contains=radianceMixType
123syn region radianceID start="\<mixtext\>"    end="\<\k*\>" contains=radianceMixType
124
125" external commands (generators, xform et al.)
126syn match radianceCommand "^\s*!\s*[^\s]\+\>"
127
128" The usual suspects
129syn keyword radianceTodo contained TODO XXX
130syn match radianceComment "#.*$" contains=radianceTodo
131
132" Define the default highlighting.
133" For version 5.7 and earlier: only when not done already
134" For version 5.8 and later: only when an item doesn't have highlighting yet
135if version >= 508 || !exists("did_radiance_syn_inits")
136  if version < 508
137    let did_radiance_syn_inits = 1
138    command -nargs=+ HiLink hi link <args>
139  else
140    command -nargs=+ HiLink hi def link <args>
141  endif
142  HiLink radianceKeyword	Keyword
143  HiLink radianceExtraType	Type
144  HiLink radianceSurfType	Type
145  HiLink radianceLightType	Type
146  HiLink radianceMatType	Type
147  HiLink radiancePatType	Type
148  HiLink radianceTexType	Type
149  HiLink radianceMixType	Type
150  HiLink radianceComment	Comment
151  HiLink radianceCommand	Function
152  HiLink radianceID		String
153  HiLink radianceTodo		Todo
154  delcommand HiLink
155endif
156
157let b:current_syntax = "radiance"
158
159" vim: ts=8 sw=2
160