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)
120 lines
4.5 KiB
Lua
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",
|
|
}
|
|
}
|