blob: 5a52dc9e7d80de23e424a64bcbcd7fd275b6fb9d [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar00a927d2010-05-14 23:24:24 +02002" Language: Debian control files
Bram Moolenaard68071d2006-05-02 22:08:30 +00003" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
4" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
5" Wichert Akkerman <wakkerma@debian.org>
Bram Moolenaar05365702010-10-27 18:34:44 +02006" Last Change: 2010 Oct 21
7" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debcontrol.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9" Standard syntax initialization
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
Bram Moolenaar8c8de832008-06-24 22:58:06 +000016" Should match case except for the keys of each field
17syn case match
18
Bram Moolenaar071d4272004-06-13 20:20:40 +000019" Everything that is not explicitly matched by the rules below
20syn match debcontrolElse "^.*$"
21
22" Common seperators
23syn match debControlComma ", *"
24syn match debControlSpace " "
25
26" Define some common expressions we can use later on
Bram Moolenaar00a927d2010-05-14 23:24:24 +020027syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000028syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +000029syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
Bram Moolenaar05365702010-10-27 18:34:44 +020030syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000031syn match debcontrolPackageType contained "u\?deb"
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn match debcontrolVariable contained "\${.\{-}}"
Bram Moolenaarc236c162008-07-13 17:41:49 +000033syn match debcontrolDmUpload contained "\cyes"
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
Bram Moolenaar8c8de832008-06-24 22:58:06 +000035" A URL (using the domain name definitions from RFC 1034 and 1738), right now
36" only enforce protocol and some sanity on the server/path part;
37syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
38syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
39syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
Bram Moolenaar5c736222010-01-06 20:54:52 +010040syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000041
Bram Moolenaar071d4272004-06-13 20:20:40 +000042" An email address
43syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
44syn match debcontrolEmail "<.\{-}>"
45
Bram Moolenaar8c8de832008-06-24 22:58:06 +000046" #-Comments
47syn match debcontrolComment "^#.*$"
48
49syn case ignore
50
Bram Moolenaar071d4272004-06-13 20:20:40 +000051" List of all legal keys
Bram Moolenaar00a927d2010-05-14 23:24:24 +020052syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
54" Fields for which we do strict syntax checking
55syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
56syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
57syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
58syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
Bram Moolenaar8c8de832008-06-24 22:58:06 +000059syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
60syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
Bram Moolenaar5c736222010-01-06 20:54:52 +010061syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
62syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
63syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
64syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
65syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67" Catch-all for the other legal fields
Bram Moolenaar5c736222010-01-06 20:54:52 +010068syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
Bram Moolenaar00a927d2010-05-14 23:24:24 +020069syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71" Associate our matches and regions with pretty colours
72if version >= 508 || !exists("did_debcontrol_syn_inits")
73 if version < 508
74 let did_debcontrol_syn_inits = 1
75 command -nargs=+ HiLink hi link <args>
76 else
77 command -nargs=+ HiLink hi def link <args>
78 endif
79
80 HiLink debcontrolKey Keyword
81 HiLink debcontrolField Normal
82 HiLink debcontrolStrictField Error
83 HiLink debcontrolMultiField Normal
84 HiLink debcontrolArchitecture Normal
85 HiLink debcontrolName Normal
86 HiLink debcontrolPriority Normal
87 HiLink debcontrolSection Normal
Bram Moolenaar8c8de832008-06-24 22:58:06 +000088 HiLink debcontrolPackageType Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +000089 HiLink debcontrolVariable Identifier
90 HiLink debcontrolEmail Identifier
Bram Moolenaar8c8de832008-06-24 22:58:06 +000091 HiLink debcontrolVcsSvn Identifier
92 HiLink debcontrolVcsCvs Identifier
93 HiLink debcontrolVcsGit Identifier
94 HiLink debcontrolHTTPUrl Identifier
Bram Moolenaarc236c162008-07-13 17:41:49 +000095 HiLink debcontrolDmUpload Identifier
Bram Moolenaar8c8de832008-06-24 22:58:06 +000096 HiLink debcontrolComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +000097 HiLink debcontrolElse Special
98
99 delcommand HiLink
100endif
101
102let b:current_syntax = "debcontrol"
103
104" vim: ts=8 sw=2