diff options
Diffstat (limited to '')
-rw-r--r-- | runtime/syntax/openscad.vim | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/runtime/syntax/openscad.vim b/runtime/syntax/openscad.vim new file mode 100644 index 0000000..1e20c74 --- /dev/null +++ b/runtime/syntax/openscad.vim @@ -0,0 +1,129 @@ +" Vim syntax file +" Language: OpenSCAD +" Maintainer: Niklas Adam <adam@oddodd.org> +" Last change: 2022-04-15 +" +" +" From salkin-mada/openscad.nvim +" Building on the work of Sirtaj Singh Kang and others for vim-openscad +" + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syntax case ignore + +setlocal iskeyword=a-z,A-Z,48-57,_ + +syn match openscadAoperator "{" +syn match openscadAoperator "}" +syn match openscadLi "\[" +syn match openscadLi "\]" +syn match openscadPar "(" +syn match openscadPar ")" + +syn match openscadSpecialVariable "\$[a-zA-Z_]\+\>" display +syn match openscadModifier "^\s*[\*\!\#\%]" display + +syn match openscadBinaryoperator "+" +syn match openscadBinaryoperator "-" +syn match openscadBinaryoperator "*" +syn match openscadBinaryoperator "/" +syn match openscadBinaryoperator "%" +syn match openscadBinaryoperator "\*\*" +syn match openscadBinaryoperator "<" +syn match openscadBinaryoperator "<=" +syn match openscadBinaryoperator ">" +syn match openscadBinaryoperator ">=" +syn match openscadBinaryoperator "=" +syn match openscadBinaryoperator "==" +syn match openscadBinaryoperator "===" +syn match openscadBinaryoperator "!=" +syn match openscadBinaryoperator "!==" +syn match openscadBinaryoperator "&" +syn match openscadBinaryoperator "|" +syn match openscadBinaryoperator "<!" +syn match openscadBinaryoperator "?" +syn match openscadBinaryoperator "??" +syn match openscadBinaryoperator "!?" +syn match openscadBinaryoperator "!" +syn match openscadBinaryoperator "#" +syn match openscadBinaryoperator "_" +syn match openscadBinaryoperator "\.\." +syn match openscadBinaryoperator "\.\.\." +syn match openscadBinaryoperator "`" +syn match openscadBinaryoperator ":" + +syn keyword openscadFunctionDef function nextgroup=openscadFunction skipwhite skipempty +syn match openscadFunction /\<\h\w*\>/ contained display + +syn keyword openscadModuleDef module nextgroup=openscadModule skipwhite skipempty +syn match openscadModule /\<\h\w*\>/ contained display + +syn keyword openscadStatement echo assign let assert +syn keyword openscadConditional if else +syn keyword openscadRepeat for intersection_for +syn keyword openscadInclude include use +syn keyword openscadCsgKeyword union difference intersection render intersection_for +syn keyword openscadTransform scale rotate translate resize mirror multmatrix color minkowski hull projection linear_extrude rotate_extrude offset +syn keyword openscadPrimitiveSolid cube sphere cylinder polyhedron surface +syn keyword openscadPrimitive2D square circle polygon import_dxf text +syn keyword openscadPrimitiveImport import child children + +syn match openscadNumbers "\<\d\|\.\d" contains=openscadNumber display transparent +syn match openscadNumber "\d\+" display contained +syn match openscadNumber "\.\d\+" display contained + +syn region openscadString start=/"/ skip=/\\"/ end=/"/ + +syn keyword openscadBoolean true false + +syn keyword openscadCommentTodo TODO FIXME XXX NOTE contained display +syn match openscadInlineComment ://.*$: contains=openscadCommentTodo +syn region openscadBlockComment start=:/\*: end=:\*/: fold contains=openscadCommentTodo + +syn region openscadBlock start="{" end="}" transparent fold +syn region openscadVector start="\[" end="\]" transparent fold + +syn keyword openscadBuiltin abs acos asin atan atan2 ceil cos exp floor ln log +syn keyword openscadBuiltin lookup max min pow rands round sign sin sqrt tan +syn keyword openscadBuiltin str len search version version_num concat chr ord cross norm +syn keyword openscadBuiltin parent_module +syn keyword openscadBuiltin dxf_cross dxf_dim +syn keyword openscadBuiltinSpecial PI undef + +""""""""""""""""""""""""""""""""""""""""" +" linkage +""""""""""""""""""""""""""""""""""""""""" +hi def link openscadFunctionDef Structure +hi def link openscadAoperator Function +hi def link openscadLi Function +" hi def link openscadPar Structure +hi def link openscadBuiltinSpecial Special +hi def link openscadBinaryoperator Special +hi def link openscadFunction Function +hi def link openscadModuleDef Structure +hi def link openscadModule Function +hi def link openscadBlockComment Comment +hi def link openscadBoolean Boolean +hi def link openscadBuiltin Function +hi def link openscadConditional Conditional +hi def link openscadCsgKeyword Structure +hi def link openscadInclude Include +hi def link openscadInlineComment Comment +hi def link openscadModifier Special +hi def link openscadStatement Statement +hi def link openscadNumbers Number +hi def link openscadNumber Number +hi def link openscadPrimitiveSolid Keyword +hi def link openscadPrimitive2D Keyword +hi def link openscadPrimitiveImport Keyword +hi def link openscadRepeat Repeat +hi def link openscadSpecialVariable Special +hi def link openscadString String +hi def link openscadTransform Statement +hi def link openscadCommentTodo Todo + +let b:current_syntax = 'openscad' |