Move important information up in -Si output
[pacman-ng.git] / contrib / PKGBUILD.vim
blob91570637d994f8a83f0b01ecaa2b020abfd89c65
1 " Vim syntax file
2 " Language:     PKGBUILD
3 " Maintainer:   Alessio 'mOLOk' Bolognino <themolok at gmail.com>
4 " Last Change:  2007/05/08
5 " Version Info: PKGBUILD-0.2 (colorphobic)
7 " For version 5.x: Clear all syntax items
8 " For version 6.x: Quit when a syntax file was already loaded
9 if version < 600
10         syntax clear
11 elseif exists("b:current_syntax")
12         finish
13 endif
15 let b:main_syntax = "sh"
16 let b:is_bash = 1
17 runtime! syntax/sh.vim
19 " case on
20 syn case match
22 " pkgname
23 " FIXME if '=' is in pkgname/pkgver, it highlights whole string, not just '='
24 syn keyword pb_k_pkgname pkgname contained
25 syn match pbValidPkgname /\([[:alnum:]]\|+\|-\|_\){,32}/ contained contains=pbIllegalPkgname
26 syn match pbIllegalPkgname /[[:upper:]]\|[^[:alnum:]-+_=]\|=.*=\|=['"]\?.\{33,\}['"]\?/ contained
27 syn match pbPkgnameGroup /^pkgname=.*/ contains=pbIllegalPkgname,pb_k_pkgname,shDoubleQuote,shSingleQuote
29 " pkgbase
30 " FIXME if '=' is in pkgbase/pkgname/pkgver, it highlights whole string, not just '='
31 syn keyword pb_k_pkgbase pkgbase contained
32 syn match pbValidPkgbase /\([[:alnum:]]\|+\|-\|_\){,32}/ contained contains=pbIllegalPkgbase
33 syn match pbIllegalPkgbase /[[:upper:]]\|[^[:alnum:]-+_=]\|=.*=\|=['"]\?.\{33,\}['"]\?/ contained
34 syn match pbPkgbaseGroup /^pkgbase=.*/ contains=pbIllegalPkgbase,pb_k_pkgbase,shDoubleQuote,shSingleQuote
36 " pkgver
37 syn keyword pb_k_pkgver pkgver contained
38 syn match pbValidPkgver /\([[:alnum:]]\|\.\|+\|_\)/ contained contains=pbIllegalPkgver
39 syn match pbIllegalPkgver /[^[:alnum:]+=\.\_]\|=.*=/ contained
40 syn match pbPkgverGroup /^pkgver=.*/ contains=pbIllegalPkgver,pbValidPkgver,pb_k_pkgver,shDoubleQuote,shSingleQuote
42 " pkgrel
43 syn keyword pb_k_pkgrel pkgrel contained
44 syn match pbValidPkgrel /[[:digit:]]*/ contained contains=pbIllegalPkgrel
45 syn match pbIllegalPkgrel /[^[:digit:]=]\|=.*=/ contained
46 syn match pbPkgrelGroup /^pkgrel=.*/ contains=pbIllegalPkgrel,pbValidPkgrel,pb_k_pkgrel,shDoubleQuote,shSingleQuote
48 " pkgdesc
49 syn keyword pb_k_desc pkgdesc contained
50 " 90 chars: 80 for description, 8 for pkgdesc and 2 for ''
51 syn match pbIllegalPkgdesc /.\{90,}\|=['"]\?.*['" ]\+[iI][sS] [aA]/ contained contains=pbPkgdescSign
52 syn match pbValidPkgdesc /[^='"]\.\{,80}/ contained contains=pbIllegalPkgdesc
53 syn match pbPkgdescGroup /^pkgdesc=.*/ contains=pbIllegalPkgdesc,pb_k_desc,pbValidPkgdesc,shDoubleQuote,shSingleQuote
54 syn match pbPkgdescSign /[='"]/ contained
56 " epoch
57 syn keyword pb_k_epoch epoch contained
58 syn match pbValidEpoch /[[:digit:]]*/ contained contains=pbIllegalEpoch
59 syn match pbIllegalEpoch /[^[:digit:]=]\|=.*=/ contained
60 syn match pbEpochGroup /^epoch=.*/ contains=pbIllegalEpoch,pbValidEpoch,pb_k_epoch,shDoubleQuote,shSingleQuote
62 " url
63 syn keyword pb_k_url url contained
64 syn match pbValidUrl /['"]*\(https\|http\|ftp\)\:\/.*\.\+.*/ contained
66 syn match pbIllegalUrl /[^=]/ contained contains=pbValidUrl
67 syn match pbUrlGroup /^url=.*/ contains=pbValidUrl,pb_k_url,pbIllegalUrl,shDoubleQuote,shSingleQuote
69 " license
70 syn keyword pb_k_license license contained
71 " echo $(pacman -Ql licenses | grep '/usr/share/licenses/common/' | cut -d'/' -f6 | sort -u)
72 syn keyword pbLicense  AGPL AGPL3 Apache APACHE Artistic2.0 CCPL CDDL CPL EPL FDL FDL1.2 FDL1.3 GPL GPL2 GPL3 LGPL LGPL2.1 LGPL3 LPPL MPL PerlArtistic PHP PSF RUBY W3C ZPL contained
73 " special cases from https://wiki.archlinux.org/index.php/Arch_Packaging_Standards
74 syn keyword pbLicenseSpecial  BSD MIT ZLIB Python contained
75 syn match pbLicenseCustom /custom\(:[[:alnum:]]*\)*/ contained
76 syn match pbIllegalLicense /[^='"() ]/ contained contains=pbLicenseCustom,pbLicenseSpecial,pbLicense
77 syn region pbLicenseGroup start=/^license=(/ end=/)/ contains=pb_k_license,pbLicenseCustom,pbLicenseSpecial,pbLicense,pbIllegalLicense
79 " backup
80 syn keyword pb_k_backup backup contained
81 syn match pbValidBackup   /\.\?[[:alpha:]]*\/[[:alnum:]\{\}+._$-]*]*/ contained
82 syn region pbBackupGroup start=/^backup=(/ end=/)/ contains=pb_k_backup,pbValidBackup,shDoubleQuote,shSingleQuote
84 " arch
85 syn keyword pb_k_arch arch contained
86 syn keyword pbArch i686 x86_64 ppc any contained
87 syn match pbIllegalArch /[^='"() ]/ contained contains=pbArch
88 syn region pbArchGroup start=/^arch=(/ end=/)/ contains=pb_k_arch,pbArch,pbIllegalArch
90 " groups
91 syn keyword pb_k_groups groups contained
92 syn match pbValidGroups /\([[:alnum:]]\|+\|-\|_\)*/ contained
93 syn region pbGroupsGroup start=/^groups=(/ end=/)/ contains=pb_k_groups,pbValidGroups,shDoubleQuote,shSingleQuote
95 " depends
96 syn keyword pb_k_depends depends contained
97 syn match pbValidDepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
98 syn region pbDependsGroup start=/^depends=(/ end=/)/ contains=pb_k_depends,pbValidDepends,shDoubleQuote,shSingleQuote
100 " makedepends
101 syn keyword pb_k_makedepends makedepends contained
102 syn match pbValidMakedepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
103 syn region pbMakedependsGroup start=/^makedepends=(/ end=/)/ contains=pb_k_makedepends,pbValidMakedepends,shDoubleQuote,shSingleQuote
105 " optdepends
106 syn keyword pb_k_optdepends optdepends contained
107 syn match pbValidOptdepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
108 syn region pbOptdependsGroup start=/^optdepends=(/ end=/)/ contains=pb_k_optdepends,pbValidOptdepends,shDoubleQuote,shSingleQuote
110 " checkdepends
111 syn keyword pb_k_ckdepends checkdepends contained
112 syn match pbValidCkdepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
113 syn region pbCkdependsGroup start=/^checkdepends=(/ end=/)/ contains=pb_k_ckdepends,pbValidCkdepends,shDoubleQuote,shSingleQuote
115 " conflicts
116 syn keyword pb_k_conflicts conflicts contained
117 syn match pbValidConflicts /\([[:alnum:]]\|+\|-\|_\)*/ contained
118 syn region pbConflictsGroup start=/^conflicts=(/ end=/)/ contains=pb_k_conflicts,pbValidConflicts,shDoubleQuote,shSingleQuote
120 " provides
121 syn keyword pb_k_provides provides contained
122 syn match pbValidProvides /\([[:alnum:]]\|+\|-\|_\)*/ contained
123 syn region pbProvidesGroup start=/^provides=(/ end=/)/ contains=pb_k_provides,pbValidProvides,shDoubleQuote,shSingleQuote
125 " replaces
126 syn keyword pb_k_replaces replaces contained
127 syn match pbValidReplaces /\([[:alnum:]]\|+\|-\|_\)*/ contained
128 syn region pbReplacesGroup start=/^replaces=(/  end=/)/ contains=pb_k_replaces,pbValidReplaces,shDoubleQuote,shSingleQuote
130 " install
131 " XXX remove install from bashStatement, fix strange bug
132 syn clear bashStatement
133 syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail touch
135 syn keyword pb_k_install install contained
136 syn match pbValidInstall /\([[:alnum:]]\|\$\|+\|-\|_\)*\.install/ contained
137 syn match pbIllegalInstall /[^=]/ contained contains=pbValidInstall
138 syn match pbInstallGroup /^install=.*/ contains=pb_k_install,pbValidInstall,pbIllegalInstall,shDeref,shDoubleQuote,shSingleQuote
140 " changelog
141 syn keyword pb_k_changelog changelog contained
142 syn match pbValidChangelog /\([[:alnum:]]\|\$\|+\|-\|_\)*/ contained
143 syn match pbIllegalChangelog /[^=]/ contained contains=pbValidChangelog
144 syn match pbChangelogGroup /^changelog=.*/ contains=pb_k_changelog,pbValidChangelog,pbIllegalChangelog,shDeref,shDoubleQuote,shSingleQuote
146 " source:
147 " XXX remove source from shStatement, fix strange bug
148 syn clear shStatement
149 syn keyword shStatement xxx wait getopts return autoload whence printf true popd nohup enable r trap readonly fc fg kill ulimit umask disown stop pushd read history logout times local exit test pwd time eval integer suspend dirs shopt hash false newgrp bg print jobs continue functions exec help cd break unalias chdir type shift builtin let bind
151 syn keyword pb_k_source source contained
152 syn match pbIllegalSource /\(http\|ftp\|https\).*\.\+\(dl\|download.\?\)\.\(sourceforge\|sf\).net/
153 syn region pbSourceGroup  start=/^source=(/ end=/)/ contains=pb_k_source,pbIllegalSource,shNumber,shDoubleQuote,shSingleQuote,pbDerefEmulation
154 syn match pbDerefEmulation /\$[{]\?[[:alnum:]_]*[}]\?/ contained
155 hi def link pbDerefEmulation PreProc
157 " md5sums
158 syn keyword pb_k_md5sums md5sums contained
159 syn match pbIllegalMd5sums /[^='"()\/ ]/ contained contains=pbValidMd5sums
160 syn match pbValidMd5sums /\x\{32\}/ contained
161 syn region pbMd5sumsGroup start=/^md5sums/ end=/)/ contains=pb_k_md5sums,pbMd5Quotes,pbMd5Hash,pbIllegalMd5sums keepend
162 syn match pbMd5Quotes /'.*'\|".*"/ contained contains=pbMd5Hash,pbIllegalMd5sums
163 syn match pbMd5Hash /\x\+/ contained contains=pbValidMd5sums
164 hi def link pbMd5Quotes Keyword
165 hi def link pbMd5Hash Error
166 hi def link pbValidMd5sums  Number
168 " sha1sums
169 syn keyword pb_k_sha1sums sha1sums contained
170 syn match pbIllegalSha1sums /[^='"()\/ ]/ contained contains=pbValidSha1sums
171 syn match pbValidSha1sums /\x\{40\}/ contained
172 syn region pbSha1sumsGroup start=/^sha1sums/ end=/)/ contains=pb_k_sha1sums,pbSha1Quotes,pbSha1Hash,pbIllegalSha1sums keepend
173 syn match pbSha1Quotes /'.*'\|".*"/ contained contains=pbSha1Hash,pbIllegalSha1sums
174 syn match pbSha1Hash /\x\+/ contained contains=pbValidSha1sums
175 hi def link pbSha1Quotes Keyword
176 hi def link pbSha1Hash Error
177 hi def link pbValidSha1sums  Number
179 " sha256sums
180 syn keyword pb_k_sha256sums sha256sums contained
181 syn match pbIllegalSha256sums /[^='"()\/ ]/ contained contains=pbValidSha256sums
182 syn match pbValidSha256sums /\x\{64\}/ contained
183 syn region pbSha256sumsGroup start=/^sha256sums/ end=/)/ contains=pb_k_sha256sums,pbSha256Quotes,pbSha256Hash,pbIllegalSha256sums keepend
184 syn match pbSha256Quotes /'.*'\|".*"/ contained contains=pbSha256Hash,pbIllegalSha256sums
185 syn match pbSha256Hash /\x\+/ contained contains=pbValidSha256sums
186 hi def link pbSha256Quotes Keyword
187 hi def link pbSha256Hash Error
188 hi def link pbValidSha256sums  Number
190 " sha384sums
191 syn keyword pb_k_sha384sums sha384sums contained
192 syn match pbIllegalSha384sums /[^='"()\/ ]/ contained contains=pbValidSha384sums
193 syn match pbValidSha384sums /\x\{96\}/ contained
194 syn region pbSha384sumsGroup start=/^sha384sums/ end=/)/ contains=pb_k_sha384sums,pbSha384Quotes,pbSha384Hash,pbIllegalSha384sums keepend
195 syn match pbSha384Quotes /'.*'\|".*"/ contained contains=pbSha384Hash,pbIllegalSha384sums
196 syn match pbSha384Hash /\x\+/ contained contains=pbValidSha384sums
197 hi def link pbSha384Quotes Keyword
198 hi def link pbSha384Hash Error
199 hi def link pbValidSha384sums  Number
201 " sha512sums
202 syn keyword pb_k_sha512sums sha512sums contained
203 syn match pbIllegalSha512sums /[^='"()\/ ]/ contained contains=pbValidSha512sums
204 syn match pbValidSha512sums /\x\{128\}/ contained
205 syn region pbSha512sumsGroup start=/^sha512sums/ end=/)/ contains=pb_k_sha512sums,pbSha512Quotes,pbSha512Hash,pbIllegalSha512sums keepend
206 syn match pbSha512Quotes /'.*'\|".*"/ contained contains=pbSha512Hash,pbIllegalSha512sums
207 syn match pbSha512Hash /\x\+/ contained contains=pbValidSha512sums
208 hi def link pbSha512Quotes Keyword
209 hi def link pbSha512Hash Error
210 hi def link pbValidSha512sums  Number
212 " options
213 syn keyword pb_k_options options contained
214 syn match pbOptions /\(no\)\?\(strip\|docs\|libtool\|emptydirs\|zipman\|purge\|upx\|fakeroot\|distcc\|color\|ccache\|check\|sign\|makeflags\|buildflags\)/ contained
215 syn match   pbOptionsNeg     /\!/ contained
216 syn match   pbOptionsDeprec  /no/ contained
217 syn region pbOptionsGroup start=/^options=(/ end=/)/ contains=pb_k_options,pbOptions,pbOptionsNeg,pbOptionsDeprec,pbIllegalOption
218 syn match pbIllegalOption /[^!"'()= ]/ contained contains=pbOptionsDeprec,pbOptions
220 " noextract
221 syn match pbNoextract /[[:alnum:]+._${}-]\+/ contained
222 syn keyword pb_k_noextract noextract  contained
223 syn region pbNoextractGroup  start=/^noextract=(/ end=/)/ contains=pb_k_noextract,pbNoextract,shDoubleQuote,shSingleQuote
225 " comments
226 syn keyword    pb_k_maintainer Maintainer Contributor contained
227 syn match      pbMaintainerGroup /Maintainer.*/ contains=pbMaintainer contained
229 syn match pbDate /[0-9]\{4}\/[0-9]\{2}\/[0-9]\{2}/ contained
231 syn cluster    pbCommentGroup   contains=pbTodo,pb_k_maintainer,pbMaintainerGroup,pbDate
232 syn keyword    pbTodo   contained       COMBAK FIXME TODO XXX
233 syn match      pbComment        "^#.*$" contains=@pbCommentGroup
234 syn match      pbComment        "[^0-9]#.*$"    contains=@pbCommentGroup
236 " quotes are handled by sh.vim
238 hi def link pbComment Comment
239 hi def link pbTodo Todo
241 hi def link pbIllegalPkgname Error
242 hi def link pb_k_pkgname pbKeywords
244 hi def link pbIllegalPkgbase Error
245 hi def link pb_k_pkgbase pbKeywords
247 hi def link pbIllegalPkgver Error
248 hi def link pb_k_pkgver pbKeywords
250 hi def link pbIllegalPkgrel Error
251 hi def link pb_k_pkgrel pbKeywords
253 hi def link pbIllegalPkgdesc Error
254 hi def link pb_k_desc pbKeywords
256 hi def link pbIllegalEpoch Error
257 hi def link pb_k_epoch pbKeywords
259 hi def link pbIllegalUrl Error
260 hi def link pb_k_url pbKeywords
262 hi def link pb_k_license pbKeywords
263 hi def link pbIllegalLicense Error
265 hi def link pb_k_backup pbKeywords
267 hi def link pb_k_arch pbKeywords
268 hi def link pbIllegalArch Error
270 hi def link pb_k_groups pbKeywords
271 hi def link pb_k_makedepends pbKeywords
272 hi def link pb_k_optdepends pbKeywords
273 hi def link pb_k_ckdepends pbKeywords
274 hi def link pb_k_depends pbKeywords
275 hi def link pb_k_replaces pbKeywords
276 hi def link pb_k_conflicts pbKeywords
277 hi def link pb_k_provides pbKeywords
279 hi def link pbIllegalInstall Error
280 hi def link pb_k_install pbKeywords
282 hi def link pbIllegalChangelog Error
283 hi def link pb_k_changelog pbKeywords
285 hi def link pb_k_source pbKeywords
286 hi def link pbIllegalSource Error
288 hi def link pb_k_md5sums pbKeywords
289 hi def link pbIllegalMd5sums Error
291 hi def link pb_k_sha1sums pbKeywords
292 hi def link pbIllegalSha1sums Error
294 hi def link pb_k_sha256sums pbKeywords
295 hi def link pbIllegalSha256sums Error
297 hi def link pb_k_sha384sums pbKeywords
298 hi def link pbIllegalSha384sums Error
300 hi def link pb_k_sha512sums pbKeywords
301 hi def link pbIllegalSha512sums Error
303 hi def link pb_k_options pbKeywords
304 hi def link pbOptionsDeprec Todo
305 hi def link pbIllegalOption Error
307 hi def link pb_k_noextract pbKeywords
308 hi def link pbNoextract Normal
310 hi def link pb_k_maintainer pbKeywords
312 hi def link pbKeywords Keyword
314 hi def link pbDate Special
316 "syntax include @SHELL syntax/sh.vim
317 "syntax region BUILD start=/^build()/ end=/^}/ contains=@SHELL
318 "let b:current_syntax = "PKGBUILD"
320 " vim: ft=vim