Files
deb-lite-xl/debian/extra/plugins/language_openscad.lua
T
vhaudiquet 3bae6fd448 Bundle curated community plugins (2.1.8-4)
Vendored from upstream, pinned by commit (see debian/extra/README.source):
- gitstatus, gitopen, fontconfig, open_ext, select_colorscheme,
  smoothcaret, nerdicons (font mapping patched to DATADIR, Ships the
  Symbols Nerd Font Mono TTF, SIL OFL 1.1)
- lite-xl-lsp (complete LSP client; idle until a language server is
  configured) plus the lite-xl-widgets library it requires
- 104 language syntax plugins (none duplicate the nine bundled in core)

settings GUI left out upstream is broken: it requires a
libraries.widget.fonts widget that does not exist in
lite-xl-widgets at any revision.

Co-developed-with: ZCode (Z.ai)
2026-09-16 22:45:02 +02:00

120 lines
4.5 KiB
Lua

-- mod-version:3
local syntax = require "core.syntax"
-- Language Syntax References
-- https://openscad.org/documentation.html#language-reference
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",
}
}