blob: 87b2aa58040a6bd656de7a6b2dcc215d16bc4bd9 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +02002" Language: PoV-Ray(tm) 3.7 Scene Description Language
3" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
4" Last Change: 2011-04-23
Eisuke Kawashimae125ee42025-04-21 09:45:39 +02005" 2025 Apr 21 by Vim Project (deprecate render and statistics #17177)
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" Setup
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
13syn case match
14
15" Top level stuff
16syn keyword povCommands global_settings
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020017syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object ovus parametric pattern photons plane poly polygon polynomial prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle
Bram Moolenaar071d4272004-06-13 20:20:40 +000018syn keyword povCSG clipped_by composite contained_by difference intersection merge union
19syn keyword povAppearance interior material media texture interior_texture texture_list
20syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator
21syn keyword povTransform inverse matrix rotate scale translate transform
22
23" Descriptors
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020024syn keyword povDescriptors finish inside_vector normal pigment uv_mapping uv_vectors vertex_vectors
25syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor maximum_reuse max_sample media minimum_reuse mm_per_unit nearest_count normal pretrace_end pretrace_start recursion_limit save_file
26syn keyword povDescriptors color colour rgb rgbt rgbf rgbft srgb srgbf srgbt srgbft
27syn match povDescriptors "\<\(red\|green\|blue\|gray\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000028syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020029syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular subsurface
30syn keyword povDescriptors cylinder fisheye mesh_camera omnimax orthographic panoramic perspective spherical ultra_wide_angle
31syn keyword povDescriptors agate aoi average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion pavement planar quilted radial ripples slope spherical spiral1 spiral2 spotted square tiles tile2 tiling toroidal triangular waves wood wrinkles
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn keyword povDescriptors density_file
33syn keyword povDescriptors area_light shadowless spotlight parallel
34syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance
35syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth
36syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices
37syn keyword povDescriptors target
38
39" Modifiers
40syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior
41syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020042syn keyword povModifiers importance no_radiosity
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn keyword povModifiers hypercomplex max_iteration precision quaternion slice
44syn keyword povModifiers conic_sweep linear_sweep
45syn keyword povModifiers flatness type u_steps v_steps
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020046syn keyword povModifiers aa_level aa_threshold adaptive area_illumination falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness
47syn keyword povModifiers angle aperture bokeh blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance
48syn keyword povModifiers all bump_size gamma interpolate map_type once premultiplied slope_map use_alpha use_color use_colour use_index
49syn match povModifiers "\<\(filter\|transmit\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000050syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp
51syn keyword povModifiers eccentricity extinction
52syn keyword povModifiers arc_angle falloff_angle width
53syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance
54
55" Words not marked `reserved' in documentation, but...
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020056syn keyword povBMPType alpha exr gif hdr iff jpeg pgm png pot ppm sys tga tiff
Bram Moolenaar071d4272004-06-13 20:20:40 +000057syn keyword povFontType ttf contained
58syn keyword povDensityType df3 contained
59syn keyword povCharset ascii utf8 contained
60
61" Math functions on floats, vectors and strings
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020062syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh bitwise_and bitwise_or bitwise_xor ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor inside int internal ln log max min mod pow prod radians rand seed select sin sinh sqrt strcmp strlen sum tan tanh val vdot vlength vstr vturbulence
Bram Moolenaar071d4272004-06-13 20:20:40 +000063syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020064syn keyword povFunctions chr concat datetime now substr str strupr strlwr
Bram Moolenaar071d4272004-06-13 20:20:40 +000065syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh
66
67" Specialities
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020068syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame input_file_name image_width image_height false no off on pi true version yes
69syn match povConsts "\<[tuvxyz]\>"
70syn match povDotItem "\.\@<=\(blue\|green\|gray\|filter\|red\|transmit\|hf\|t\|u\|v\|x\|y\|z\)\>" display
Bram Moolenaar071d4272004-06-13 20:20:40 +000071
72" Comments
73syn region povComment start="/\*" end="\*/" contains=povTodo,povComment
74syn match povComment "//.*" contains=povTodo
75syn match povCommentError "\*/"
76syn sync ccomment povComment
77syn sync minlines=50
78syn keyword povTodo TODO FIXME XXX NOT contained
79syn cluster povPRIVATE add=povTodo
80
81" Language directives
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020082syn match povConditionalDir "#\s*\(else\|end\|for\|if\|ifdef\|ifndef\|switch\|while\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000083syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>"
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020084syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" nextgroup=povDeclareOption skipwhite
85syn keyword povDeclareOption deprecated once contained nextgroup=povDeclareOption skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +000086syn match povIncludeDir "#\s*include\>"
87syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>"
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020088syn keyword povFileDataType uint8 sint8 unit16be uint16le sint16be sint16le sint32le sint32be
Eisuke Kawashimae125ee42025-04-21 09:45:39 +020089syn match povMessageDir "#\s*\(debug\|error\|warning\)\>"
90syn match povMessageDirDeprecated "#\s*\%(render\|statistics\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000091syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend
92
93" Literal strings
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +020094syn match povSpecialChar "\\u\x\{4}\|\\\d\d\d\|\\." contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000095syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline
96syn cluster povPRIVATE add=povSpecialChar
97
98" Catch errors caused by wrong parenthesization
99syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent
100syn match povParenError ")"
101syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent
102syn match povBraceError "}"
103
104" Numbers
105syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="
106
107" Define the default highlighting
108hi def link povComment Comment
109hi def link povTodo Todo
110hi def link povNumber Number
111hi def link povString String
112hi def link povFileOpen Constant
113hi def link povConsts Constant
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +0200114hi def link povDotItem povSpecial
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115hi def link povBMPType povSpecial
116hi def link povCharset povSpecial
117hi def link povDensityType povSpecial
118hi def link povFontType povSpecial
119hi def link povOpenType povSpecial
120hi def link povSpecialChar povSpecial
121hi def link povSpecial Special
122hi def link povConditionalDir PreProc
123hi def link povLabelDir PreProc
124hi def link povDeclareDir Define
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +0200125hi def link povDeclareOption Define
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126hi def link povIncludeDir Include
127hi def link povFileDir PreProc
Bram Moolenaar8e5af3e2011-04-28 19:02:44 +0200128hi def link povFileDataType Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129hi def link povMessageDir Debug
Eisuke Kawashimae125ee42025-04-21 09:45:39 +0200130hi def link povMessageDirDeprecated povError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000131hi def link povAppearance povDescriptors
132hi def link povObjects povDescriptors
133hi def link povGlobalSettings povDescriptors
134hi def link povDescriptors Type
135hi def link povJuliaFunctions PovFunctions
136hi def link povModifiers povFunctions
137hi def link povFunctions Function
138hi def link povCommands Operator
139hi def link povTransform Operator
140hi def link povCSG Operator
141hi def link povParenError povError
142hi def link povBraceError povError
143hi def link povCommentError povError
144hi def link povError Error
145
146let b:current_syntax = "pov"