-- mod-version:2 -- lite-xl 2.0 local syntax = require "core.syntax" syntax.add { name = "PKGBUILD", files = "/*PKGBUILD$", comment = "#", patterns = { { pattern = "#.*\n", type = "comment" }, -- Strings { pattern = { '"', '"', '\\' }, type = "string" }, { pattern = { "'", "'", '\\' }, type = "string" }, { pattern = { '`', '`', '\\' }, type = "string" }, -- Ignore numbers that start with dots or slashes { pattern = "%f[%w_%.%/]%d[%d%.]*%f[^%w_%.]", type = "number" }, -- Custom keyword matches { pattern = "source%f[=]", type = "literal" }, { pattern = "[ \t]source ", type = "keyword" }, { pattern = "install%f[=]", type = "literal" }, { pattern = "[ \t]tar ", type = "keyword" }, { pattern = "[ \t]install ", type = "keyword" }, { pattern = "[ \t]arch%-meson ", type = "keyword" }, { pattern = "[ \t]patch ", type = "keyword" }, { pattern = "[ \t]git ", type = "keyword" }, { pattern = "[ \t]svn ", type = "keyword" }, { pattern = "[ \t]fossil ", type = "keyword" }, { pattern = "[ \t]meson ", type = "keyword" }, { pattern = "[ \t]ninja ", type = "keyword" }, { pattern = "[ \t]cmake ", type = "keyword" }, { pattern = "[ \t]waf ", type = "keyword" }, { pattern = "[ \t]%./configure[%s%c]+", type = "keyword" }, -- Operators { pattern = "[!<>|&%[%]:=*]", type = "operator" }, -- Match parameters { pattern = "%f[%S][%+%-][%w%-_:]+", type = "function" }, { pattern = "%f[%S][%+%-][%w%-_]+%f[=]", type = "function" }, -- Prevent parameters with assignments from been matched as variables { pattern = "%s%-%a[%w_%-]*%s+()%d[%d%.]+", type = { "function", "number" } }, { pattern = "%s%-%a[%w_%-]*%s+()%a[%a%-_:=]+", type = { "function", "symbol" } }, -- Match variable assignments { pattern = "[_%a][%w_]+%f[%+=]", type = "keyword2" }, -- Match variable expansions { pattern = "${.-}", type = "keyword2" }, { pattern = "$[%d$%a_@*][%w_]*", type = "keyword2" }, -- Functions { pattern = "[%a_%-][%w_%-]*[%s]*%f[(]", type = "function" }, -- Everything else { pattern = "[%a_][%w_]*", type = "symbol" }, }, symbols = { -- Bash keywords ["true"] = "literal", ["false"] = "literal", ["case"] = "keyword", ["in"] = "keyword", ["esac"] = "keyword", ["if"] = "keyword", ["then"] = "keyword", ["elif"] = "keyword", ["else"] = "keyword", ["fi"] = "keyword", ["until"] = "keyword", ["while"] = "keyword", ["do"] = "keyword", ["done"] = "keyword", ["for"] = "keyword", ["break"] = "keyword", ["continue"] = "keyword", ["shift"] = "keyword", ["function"] = "keyword", ["local"] = "keyword", ["echo"] = "keyword", ["return"] = "keyword", ["exit"] = "keyword", ["alias"] = "keyword", ["test"] = "keyword", ["select"] = "keyword", ["type"] = "keyword", ["declare"] = "keyword", ["set"] = "keyword", ["unalias"] = "keyword", ["unset"] = "keyword", ["enable"] = "keyword", ["eval"] = "keyword", ["exec"] = "keyword", ["export"] = "keyword", ["getopts"] = "keyword", ["hash"] = "keyword", ["history"] = "keyword", ["help"] = "keyword", ["jobs"] = "keyword", ["kill"] = "keyword", ["let"] = "keyword", -- Commands ["mapfile"] = "keyword", ["printf"] = "keyword", ["read"] = "keyword", ["readarray"] = "keyword", ["pwd"] = "keyword", ["time"] = "keyword", ["cd"] = "keyword", ["cp"] = "keyword", ["mv"] = "keyword", ["mkdir"] = "keyword", ["rm"] = "keyword", ["rmdir"] = "keyword", ["chown"] = "keyword", ["chmod"] = "keyword", ["touch"] = "keyword", ["ln"] = "keyword", ["cat"] = "keyword", ["sed"] = "keyword", ["awk"] = "keyword", ["find"] = "keyword", ["grep"] = "keyword", ["head"] = "keyword", ["less"] = "keyword", ["gcc"] = "keyword", ["gpp"] = "keyword", ["make"] = "keyword", ["qmake"] = "keyword", -- PKGBUILD keywords ["pkgbase"] = "literal", ["pkgname"] = "literal", ["pkgver"] = "literal", ["pkgrel"] = "literal", ["epoch"] = "literal", ["pkgdesc"] = "literal", ["arch"] = "literal", ["url"] = "literal", ["license"] = "literal", ["groups"] = "literal", ["depends"] = "literal", ["makedepends"] = "literal", ["checkdepends"] = "literal", ["optdepends"] = "literal", ["provides"] = "literal", ["conflicts"] = "literal", ["replaces"] = "literal", ["backup"] = "literal", ["options"] = "literal", ["changelog"] = "literal", ["noextract"] = "literal", ["validpgpkeys"] = "literal", ["md5sums"] = "literal", ["sha1sums"] = "literal", ["sha256sums"] = "literal", ["sha224sums"] = "literal", ["sha384sums"] = "literal", ["sha512sums"] = "literal", ["b2sums"] = "literal" }, }