diff options
Diffstat (limited to 'plugins/language_openscad.lua')
-rw-r--r-- | plugins/language_openscad.lua | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/plugins/language_openscad.lua b/plugins/language_openscad.lua new file mode 100644 index 0000000..078ec03 --- /dev/null +++ b/plugins/language_openscad.lua @@ -0,0 +1,116 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "OpenSCAD", + files = {"%.scad$"}, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, -- Single-line comment + { pattern = { "/%*", "%*/" }, type = "comment" }, -- Multi-line comment + { pattern = { '"', '"', '\\' }, type = "string" }, -- String, double quotes + { pattern = { "'", "'", '\\' }, type = "string" }, -- String, apices + { pattern = "-?0x%x+", type = "number" }, -- ? + { pattern = "-?%d+[%d%.eE]*[a-zA-Z]?", type = "number" }, -- ? + { pattern = "-?%.?%d+", type = "number" }, -- ? + { pattern = "[%+%-=/%*%^%%<>!~|&%?%:]", type = "operator" }, -- Operators + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- Functions + { regex = "\\$[a-zA-Z]+", type = "keyword" }, -- Special variables + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- ? + ["var"] = "keyword", + ["module"] = "keyword", + ["function"] = "keyword", + ["include"] = "keyword", + ["use"] = "keyword", + -- Constants + ["undef"] = "keyword2", + ["PI"] = "keyword2", + -- 2D + ["circle"] = "keyword", + ["square"] = "keyword", + ["polygon"] = "keyword", + ["text"] = "keyword", + ["import"] = "keyword", + ["projection"] = "keyword", + -- 3D + ["sphere"] = "keyword", + ["cube"] = "keyword", + ["cylinder"] = "keyword", + ["polyhedron"] = "keyword", + ["surface"] = "keyword", + -- Transformations + ["linear_extrude"] = "keyword", + ["rotate_extrude"] = "keyword", + ["translate"] = "keyword", + ["rotate"] = "keyword", + ["scale"] = "keyword", + ["resize"] = "keyword", + ["mirror"] = "keyword", + ["multmatrix"] = "keyword", + ["color"] = "keyword", + ["offset"] = "keyword", + ["hull"] = "keyword", + ["minkowski"] = "keyword", + -- Boolean Operations + ["union"] = "keyword", + ["difference"] = "keyword", + ["intersection"] = "keyword", + -- Flow Control + ["for"] = "keyword", + ["each"] = "keyword", + -- Type Test Functions + ["is_undef"] = "function", + ["is_bool"] = "function", + ["is_num"] = "function", + ["is_string"] = "function", + ["is_list"] = "function", + ["is_function"] = "function", + -- Other + ["echo"] = "keyword", + ["render"] = "keyword", + ["children"] = "keyword", + ["assert"] = "keyword", + -- Functions + ["concat"] = "function", + ["lookup"] = "function", + ["str"] = "function", + ["chr"] = "function", + ["ord"] = "function", + ["search"] = "function", + ["version"] = "function", + ["version_num"] = "function", + ["parent_module"] = "function", + -- Math Functions + ["abs"] = "keyword", + ["sign"] = "keyword", + ["sin"] = "keyword", + ["cos"] = "keyword", + ["tan"] = "keyword", + ["acos"] = "keyword", + ["asin"] = "keyword", + ["atan"] = "keyword", + ["atan2"] = "keyword", + ["floor"] = "keyword", + ["round"] = "keyword", + ["ceil"] = "keyword", + ["ln"] = "keyword", + ["len"] = "keyword", + ["let"] = "keyword", + ["log"] = "keyword", + ["pow"] = "keyword", + ["sqrt"] = "keyword", + ["exp"] = "keyword", + ["rands"] = "keyword", + ["min"] = "keyword", + ["max"] = "keyword", + ["norm"] = "keyword", + ["cross"] = "keyword", + -- Literals + ["true"] = "literal", + ["false"] = "literal", + } +} |