aboutsummaryrefslogtreecommitdiff
path: root/plugins/language_pkgbuild.lua
blob: 486a8a62143cbe9ada08b7445d29a89d3245277b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
-- 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"
  },
}