blob: 1e20c743c4e76822b2b091c71aa5fea88e3a6f3a [file] [log] [blame]
Bram Moolenaar75ab5902022-04-18 15:36:40 +01001" Vim syntax file
2" Language: OpenSCAD
3" Maintainer: Niklas Adam <adam@oddodd.org>
4" Last change: 2022-04-15
5"
6"
7" From salkin-mada/openscad.nvim
8" Building on the work of Sirtaj Singh Kang and others for vim-openscad
9"
10
11" quit when a syntax file was already loaded
12if exists("b:current_syntax")
13 finish
14endif
15
16syntax case ignore
17
18setlocal iskeyword=a-z,A-Z,48-57,_
19
20syn match openscadAoperator "{"
21syn match openscadAoperator "}"
22syn match openscadLi "\["
23syn match openscadLi "\]"
24syn match openscadPar "("
25syn match openscadPar ")"
26
27syn match openscadSpecialVariable "\$[a-zA-Z_]\+\>" display
28syn match openscadModifier "^\s*[\*\!\#\%]" display
29
30syn match openscadBinaryoperator "+"
31syn match openscadBinaryoperator "-"
32syn match openscadBinaryoperator "*"
33syn match openscadBinaryoperator "/"
34syn match openscadBinaryoperator "%"
35syn match openscadBinaryoperator "\*\*"
36syn match openscadBinaryoperator "<"
37syn match openscadBinaryoperator "<="
38syn match openscadBinaryoperator ">"
39syn match openscadBinaryoperator ">="
40syn match openscadBinaryoperator "="
41syn match openscadBinaryoperator "=="
42syn match openscadBinaryoperator "==="
43syn match openscadBinaryoperator "!="
44syn match openscadBinaryoperator "!=="
45syn match openscadBinaryoperator "&"
46syn match openscadBinaryoperator "|"
47syn match openscadBinaryoperator "<!"
48syn match openscadBinaryoperator "?"
49syn match openscadBinaryoperator "??"
50syn match openscadBinaryoperator "!?"
51syn match openscadBinaryoperator "!"
52syn match openscadBinaryoperator "#"
53syn match openscadBinaryoperator "_"
54syn match openscadBinaryoperator "\.\."
55syn match openscadBinaryoperator "\.\.\."
56syn match openscadBinaryoperator "`"
57syn match openscadBinaryoperator ":"
58
59syn keyword openscadFunctionDef function nextgroup=openscadFunction skipwhite skipempty
60syn match openscadFunction /\<\h\w*\>/ contained display
61
62syn keyword openscadModuleDef module nextgroup=openscadModule skipwhite skipempty
63syn match openscadModule /\<\h\w*\>/ contained display
64
65syn keyword openscadStatement echo assign let assert
66syn keyword openscadConditional if else
67syn keyword openscadRepeat for intersection_for
68syn keyword openscadInclude include use
69syn keyword openscadCsgKeyword union difference intersection render intersection_for
70syn keyword openscadTransform scale rotate translate resize mirror multmatrix color minkowski hull projection linear_extrude rotate_extrude offset
71syn keyword openscadPrimitiveSolid cube sphere cylinder polyhedron surface
72syn keyword openscadPrimitive2D square circle polygon import_dxf text
73syn keyword openscadPrimitiveImport import child children
74
75syn match openscadNumbers "\<\d\|\.\d" contains=openscadNumber display transparent
76syn match openscadNumber "\d\+" display contained
77syn match openscadNumber "\.\d\+" display contained
78
79syn region openscadString start=/"/ skip=/\\"/ end=/"/
80
81syn keyword openscadBoolean true false
82
83syn keyword openscadCommentTodo TODO FIXME XXX NOTE contained display
84syn match openscadInlineComment ://.*$: contains=openscadCommentTodo
85syn region openscadBlockComment start=:/\*: end=:\*/: fold contains=openscadCommentTodo
86
87syn region openscadBlock start="{" end="}" transparent fold
88syn region openscadVector start="\[" end="\]" transparent fold
89
90syn keyword openscadBuiltin abs acos asin atan atan2 ceil cos exp floor ln log
91syn keyword openscadBuiltin lookup max min pow rands round sign sin sqrt tan
92syn keyword openscadBuiltin str len search version version_num concat chr ord cross norm
93syn keyword openscadBuiltin parent_module
94syn keyword openscadBuiltin dxf_cross dxf_dim
95syn keyword openscadBuiltinSpecial PI undef
96
97"""""""""""""""""""""""""""""""""""""""""
98" linkage
99"""""""""""""""""""""""""""""""""""""""""
100hi def link openscadFunctionDef Structure
101hi def link openscadAoperator Function
102hi def link openscadLi Function
103" hi def link openscadPar Structure
104hi def link openscadBuiltinSpecial Special
105hi def link openscadBinaryoperator Special
106hi def link openscadFunction Function
107hi def link openscadModuleDef Structure
108hi def link openscadModule Function
109hi def link openscadBlockComment Comment
110hi def link openscadBoolean Boolean
111hi def link openscadBuiltin Function
112hi def link openscadConditional Conditional
113hi def link openscadCsgKeyword Structure
114hi def link openscadInclude Include
115hi def link openscadInlineComment Comment
116hi def link openscadModifier Special
117hi def link openscadStatement Statement
118hi def link openscadNumbers Number
119hi def link openscadNumber Number
120hi def link openscadPrimitiveSolid Keyword
121hi def link openscadPrimitive2D Keyword
122hi def link openscadPrimitiveImport Keyword
123hi def link openscadRepeat Repeat
124hi def link openscadSpecialVariable Special
125hi def link openscadString String
126hi def link openscadTransform Statement
127hi def link openscadCommentTodo Todo
128
129let b:current_syntax = 'openscad'