blob: 2474493c94602ba20dc5545dcecc018884b5dca0 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: VRML97
3" Modified from: VRML 1.0C by David Brown <dbrown@cgs.c4.gmeds.com>
Bram Moolenaar9c102382006-05-03 21:26:49 +00004" Maintainer: vacancy!
5" Former Maintainer: Gregory Seidman <gsslist+vim@anthropohedron.net>
6" Last change: 2006 May 03
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02008" quit when a syntax file was already loaded
9if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000010 finish
11endif
12
13" keyword definitions
14
15syn keyword VRMLFields ambientIntensity appearance attenuation
16syn keyword VRMLFields autoOffset avatarSize axisOfRotation backUrl
17syn keyword VRMLFields bboxCenter bboxSize beamWidth beginCap
18syn keyword VRMLFields bottom bottomRadius bottomUrl ccw center
19syn keyword VRMLFields children choice collide color colorIndex
20syn keyword VRMLFields colorPerVertex convex coord coordIndex
21syn keyword VRMLFields creaseAngle crossSection cutOffAngle
22syn keyword VRMLFields cycleInterval description diffuseColor
23syn keyword VRMLFields directOutput direction diskAngle
24syn keyword VRMLFields emissiveColor enabled endCap family
25syn keyword VRMLFields fieldOfView fogType fontStyle frontUrl
26syn keyword VRMLFields geometry groundAngle groundColor headlight
27syn keyword VRMLFields height horizontal info intensity jump
28syn keyword VRMLFields justify key keyValue language leftToRight
29syn keyword VRMLFields leftUrl length level location loop material
30syn keyword VRMLFields maxAngle maxBack maxExtent maxFront
31syn keyword VRMLFields maxPosition minAngle minBack minFront
32syn keyword VRMLFields minPosition mustEvaluate normal normalIndex
33syn keyword VRMLFields normalPerVertex offset on orientation
34syn keyword VRMLFields parameter pitch point position priority
35syn keyword VRMLFields proxy radius range repeatS repeatT rightUrl
36syn keyword VRMLFields rotation scale scaleOrientation shininess
37syn keyword VRMLFields side size skyAngle skyColor solid source
38syn keyword VRMLFields spacing spatialize specularColor speed spine
39syn keyword VRMLFields startTime stopTime string style texCoord
40syn keyword VRMLFields texCoordIndex texture textureTransform title
41syn keyword VRMLFields top topToBottom topUrl translation
42syn keyword VRMLFields transparency type url vector visibilityLimit
43syn keyword VRMLFields visibilityRange whichChoice xDimension
44syn keyword VRMLFields xSpacing zDimension zSpacing
45syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>" contains=VRMLComment,VRMLProtos,VRMLfTypes
46" syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*\<IS\>\(#.*$\)*\(,\|\s\)*\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*" contains=VRMLComment,VRMLProtos
47" syn region VRMLFields start="\<[A-Za-z_][A-Za-z0-9_]*\>" end=+\(,\|#\|\s\)+me=e-1 contains=VRMLComment,VRMLProtos
48
49syn keyword VRMLEvents addChildren ambientIntensity_changed
50syn keyword VRMLEvents appearance_changed attenuation_changed
51syn keyword VRMLEvents autoOffset_changed avatarSize_changed
52syn keyword VRMLEvents axisOfRotation_changed backUrl_changed
53syn keyword VRMLEvents beamWidth_changed bindTime bottomUrl_changed
54syn keyword VRMLEvents center_changed children_changed
55syn keyword VRMLEvents choice_changed collideTime collide_changed
56syn keyword VRMLEvents color_changed coord_changed
57syn keyword VRMLEvents cutOffAngle_changed cycleInterval_changed
58syn keyword VRMLEvents cycleTime description_changed
59syn keyword VRMLEvents diffuseColor_changed direction_changed
60syn keyword VRMLEvents diskAngle_changed duration_changed
61syn keyword VRMLEvents emissiveColor_changed enabled_changed
62syn keyword VRMLEvents enterTime exitTime fogType_changed
63syn keyword VRMLEvents fontStyle_changed fraction_changed
64syn keyword VRMLEvents frontUrl_changed geometry_changed
65syn keyword VRMLEvents groundAngle_changed headlight_changed
66syn keyword VRMLEvents hitNormal_changed hitPoint_changed
67syn keyword VRMLEvents hitTexCoord_changed intensity_changed
68syn keyword VRMLEvents isActive isBound isOver jump_changed
69syn keyword VRMLEvents keyValue_changed key_changed leftUrl_changed
70syn keyword VRMLEvents length_changed level_changed
71syn keyword VRMLEvents location_changed loop_changed
72syn keyword VRMLEvents material_changed maxAngle_changed
73syn keyword VRMLEvents maxBack_changed maxExtent_changed
74syn keyword VRMLEvents maxFront_changed maxPosition_changed
75syn keyword VRMLEvents minAngle_changed minBack_changed
76syn keyword VRMLEvents minFront_changed minPosition_changed
77syn keyword VRMLEvents normal_changed offset_changed on_changed
78syn keyword VRMLEvents orientation_changed parameter_changed
79syn keyword VRMLEvents pitch_changed point_changed position_changed
80syn keyword VRMLEvents priority_changed radius_changed
81syn keyword VRMLEvents removeChildren rightUrl_changed
82syn keyword VRMLEvents rotation_changed scaleOrientation_changed
83syn keyword VRMLEvents scale_changed set_ambientIntensity
84syn keyword VRMLEvents set_appearance set_attenuation
85syn keyword VRMLEvents set_autoOffset set_avatarSize
86syn keyword VRMLEvents set_axisOfRotation set_backUrl set_beamWidth
87syn keyword VRMLEvents set_bind set_bottomUrl set_center
88syn keyword VRMLEvents set_children set_choice set_collide
89syn keyword VRMLEvents set_color set_colorIndex set_coord
90syn keyword VRMLEvents set_coordIndex set_crossSection
91syn keyword VRMLEvents set_cutOffAngle set_cycleInterval
92syn keyword VRMLEvents set_description set_diffuseColor
93syn keyword VRMLEvents set_direction set_diskAngle
94syn keyword VRMLEvents set_emissiveColor set_enabled set_fogType
95syn keyword VRMLEvents set_fontStyle set_fraction set_frontUrl
96syn keyword VRMLEvents set_geometry set_groundAngle set_headlight
97syn keyword VRMLEvents set_height set_intensity set_jump set_key
98syn keyword VRMLEvents set_keyValue set_leftUrl set_length
99syn keyword VRMLEvents set_level set_location set_loop set_material
100syn keyword VRMLEvents set_maxAngle set_maxBack set_maxExtent
101syn keyword VRMLEvents set_maxFront set_maxPosition set_minAngle
102syn keyword VRMLEvents set_minBack set_minFront set_minPosition
103syn keyword VRMLEvents set_normal set_normalIndex set_offset set_on
104syn keyword VRMLEvents set_orientation set_parameter set_pitch
105syn keyword VRMLEvents set_point set_position set_priority
106syn keyword VRMLEvents set_radius set_rightUrl set_rotation
107syn keyword VRMLEvents set_scale set_scaleOrientation set_shininess
108syn keyword VRMLEvents set_size set_skyAngle set_skyColor
109syn keyword VRMLEvents set_source set_specularColor set_speed
110syn keyword VRMLEvents set_spine set_startTime set_stopTime
111syn keyword VRMLEvents set_string set_texCoord set_texCoordIndex
112syn keyword VRMLEvents set_texture set_textureTransform set_topUrl
113syn keyword VRMLEvents set_translation set_transparency set_type
114syn keyword VRMLEvents set_url set_vector set_visibilityLimit
115syn keyword VRMLEvents set_visibilityRange set_whichChoice
116syn keyword VRMLEvents shininess_changed size_changed
117syn keyword VRMLEvents skyAngle_changed skyColor_changed
118syn keyword VRMLEvents source_changed specularColor_changed
119syn keyword VRMLEvents speed_changed startTime_changed
120syn keyword VRMLEvents stopTime_changed string_changed
121syn keyword VRMLEvents texCoord_changed textureTransform_changed
122syn keyword VRMLEvents texture_changed time topUrl_changed
123syn keyword VRMLEvents touchTime trackPoint_changed
124syn keyword VRMLEvents translation_changed transparency_changed
125syn keyword VRMLEvents type_changed url_changed value_changed
126syn keyword VRMLEvents vector_changed visibilityLimit_changed
127syn keyword VRMLEvents visibilityRange_changed whichChoice_changed
128syn region VRMLEvents start="\S+[^0-9]+\.[A-Za-z_]+"ms=s+1 end="\(,\|$\|\s\)"me=e-1
129
130syn keyword VRMLNodes Anchor Appearance AudioClip Background
131syn keyword VRMLNodes Billboard Box Collision Color
132syn keyword VRMLNodes ColorInterpolator Cone Coordinate
133syn keyword VRMLNodes CoordinateInterpolator Cylinder
134syn keyword VRMLNodes CylinderSensor DirectionalLight
135syn keyword VRMLNodes ElevationGrid Extrusion Fog FontStyle
136syn keyword VRMLNodes Group ImageTexture IndexedFaceSet
137syn keyword VRMLNodes IndexedLineSet Inline LOD Material
138syn keyword VRMLNodes MovieTexture NavigationInfo Normal
139syn keyword VRMLNodes NormalInterpolator OrientationInterpolator
140syn keyword VRMLNodes PixelTexture PlaneSensor PointLight
141syn keyword VRMLNodes PointSet PositionInterpolator
142syn keyword VRMLNodes ProximitySensor ScalarInterpolator
143syn keyword VRMLNodes Script Shape Sound Sphere SphereSensor
144syn keyword VRMLNodes SpotLight Switch Text TextureCoordinate
145syn keyword VRMLNodes TextureTransform TimeSensor TouchSensor
146syn keyword VRMLNodes Transform Viewpoint VisibilitySensor
147syn keyword VRMLNodes WorldInfo
148
149" the following line doesn't catch <node><newline><openbrace> since \n
150" doesn't match as an atom yet :-(
151syn match VRMLNodes "[A-Za-z_][A-Za-z0-9_]*\(,\|\s\)*{"me=e-1
152syn region VRMLNodes start="\<EXTERNPROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="\<EXTERNPROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment
153syn region VRMLNodes start="PROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="PROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment
154
155syn keyword VRMLTypes SFBool SFColor MFColor SFFloat MFFloat
156syn keyword VRMLTypes SFImage SFInt32 MFInt32 SFNode MFNode
157syn keyword VRMLTypes SFRotation MFRotation SFString MFString
158syn keyword VRMLTypes SFTime MFTime SFVec2f MFVec2f SFVec3f MFVec3f
159
160syn keyword VRMLfTypes field exposedField eventIn eventOut
161
162syn keyword VRMLValues TRUE FALSE NULL
163
164syn keyword VRMLProtos contained EXTERNPROTO PROTO IS
165
166syn keyword VRMLRoutes contained ROUTE TO
167
Bram Moolenaar071d4272004-06-13 20:20:40 +0000168"containment!
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200169syn include @jscript $VIMRUNTIME/syntax/javascript.vim
170syn region VRMLjScriptString contained start=+"\(\(javascript\)\|\(vrmlscript\)\|\(ecmascript\)\):+ms=e+1 skip=+\\\\\|\\"+ end=+"+me=e-1 contains=@jscript
Bram Moolenaar071d4272004-06-13 20:20:40 +0000171
172" match definitions.
173syn match VRMLSpecial contained "\\[0-9][0-9][0-9]\|\\."
174syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=VRMLSpecial,VRMLjScriptString
175syn match VRMLCharacter "'[^\\]'"
176syn match VRMLSpecialCharacter "'\\.'"
177syn match VRMLNumber "[-+]\=\<[0-9]\+\(\.[0-9]\+\)\=\([eE]\{1}[-+]\=[0-9]\+\)\=\>\|0[xX][0-9a-fA-F]\+\>"
178syn match VRMLNumber "0[xX][0-9a-fA-F]\+\>"
179syn match VRMLComment "#.*$"
180
181" newlines should count as whitespace, but they can't be matched yet :-(
182syn region VRMLRouteNode start="[^O]TO\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment
183syn region VRMLRouteNode start="ROUTE\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment
184syn region VRMLInstName start="DEF\>"hs=e+1 skip="DEF\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment
185syn region VRMLInstName start="USE\>"hs=e+1 skip="USE\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment
186
187syn keyword VRMLInstances contained DEF USE
188syn sync minlines=1
189
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190"FOLDS!
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200191syn sync fromstart
192"setlocal foldmethod=syntax
193syn region braceFold start="{" end="}" transparent fold contains=TOP
194syn region bracketFold start="\[" end="]" transparent fold contains=TOP
195syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000196
197" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200198" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200200hi def link VRMLCharacter VRMLString
201hi def link VRMLSpecialCharacter VRMLSpecial
202hi def link VRMLNumber VRMLString
203hi def link VRMLValues VRMLString
204hi def link VRMLString String
205hi def link VRMLSpecial Special
206hi def link VRMLComment Comment
207hi def link VRMLNodes Statement
208hi def link VRMLFields Type
209hi def link VRMLEvents Type
210hi def link VRMLfTypes LineNr
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211" hi VRMLfTypes ctermfg=6 guifg=Brown
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200212hi def link VRMLInstances PreCondit
213hi def link VRMLRoutes PreCondit
214hi def link VRMLProtos PreProc
215hi def link VRMLRouteNode Identifier
216hi def link VRMLInstName Identifier
217hi def link VRMLTypes Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218
Bram Moolenaar071d4272004-06-13 20:20:40 +0000219
220let b:current_syntax = "vrml"
221
222" vim: ts=8