blob: 3b01fb50ae453aa806aab8df6d7818fb40f4e05e [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" 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 Moolenaar8c8de832008-06-24 22:58:06 +00006" Last Change: 2008-02-23
7" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
Bram Moolenaar293ee4d2004-12-09 21:34:53 +00008
9" Comments are very welcome - but please make sure that you are commenting on
10" the latest version of this file.
11" SPAM is _NOT_ welcome - be ready to be reported!
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
13" Standard syntax initialization
14if version < 600
15 syntax clear
16elseif exists("b:current_syntax")
17 finish
18endif
19
Bram Moolenaar8c8de832008-06-24 22:58:06 +000020" Should match case except for the keys of each field
21syn case match
22
Bram Moolenaar071d4272004-06-13 20:20:40 +000023" Everything that is not explicitly matched by the rules below
24syn match debcontrolElse "^.*$"
25
26" Common seperators
27syn match debControlComma ", *"
28syn match debControlSpace " "
29
30" Define some common expressions we can use later on
Bram Moolenaar8c8de832008-06-24 22:58:06 +000031syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
32syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +000033syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000034syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)"
35syn match debcontrolPackageType contained "u\?deb"
Bram Moolenaar071d4272004-06-13 20:20:40 +000036syn match debcontrolVariable contained "\${.\{-}}"
37
Bram Moolenaar8c8de832008-06-24 22:58:06 +000038" A URL (using the domain name definitions from RFC 1034 and 1738), right now
39" only enforce protocol and some sanity on the server/path part;
40syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
41syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
42syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
43syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
44
Bram Moolenaar071d4272004-06-13 20:20:40 +000045" An email address
46syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
47syn match debcontrolEmail "<.\{-}>"
48
Bram Moolenaar8c8de832008-06-24 22:58:06 +000049" #-Comments
50syn match debcontrolComment "^#.*$"
51
52syn case ignore
53
Bram Moolenaar071d4272004-06-13 20:20:40 +000054" List of all legal keys
Bram Moolenaar8c8de832008-06-24 22:58:06 +000055syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\): *"
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
57" Fields for which we do strict syntax checking
58syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
59syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
60syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
61syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
Bram Moolenaar8c8de832008-06-24 22:58:06 +000062syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
63syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
64syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
65syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
66syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
67syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +000068
69" Catch-all for the other legal fields
Bram Moolenaar8c8de832008-06-24 22:58:06 +000070syn region debcontrolField start="^\(Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X\(S\|B\)-Python-Version\|XSBC-Original-Maintainer\|\(XS-\)\?Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
71syn region debcontrolMultiField start="^\(Build-\(Conflicts\|Depends\)\(-Indep\)\=\|\(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
73" Associate our matches and regions with pretty colours
74if version >= 508 || !exists("did_debcontrol_syn_inits")
75 if version < 508
76 let did_debcontrol_syn_inits = 1
77 command -nargs=+ HiLink hi link <args>
78 else
79 command -nargs=+ HiLink hi def link <args>
80 endif
81
82 HiLink debcontrolKey Keyword
83 HiLink debcontrolField Normal
84 HiLink debcontrolStrictField Error
85 HiLink debcontrolMultiField Normal
86 HiLink debcontrolArchitecture Normal
87 HiLink debcontrolName Normal
88 HiLink debcontrolPriority Normal
89 HiLink debcontrolSection Normal
Bram Moolenaar8c8de832008-06-24 22:58:06 +000090 HiLink debcontrolPackageType Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +000091 HiLink debcontrolVariable Identifier
92 HiLink debcontrolEmail Identifier
Bram Moolenaar8c8de832008-06-24 22:58:06 +000093 HiLink debcontrolVcsSvn Identifier
94 HiLink debcontrolVcsCvs Identifier
95 HiLink debcontrolVcsGit Identifier
96 HiLink debcontrolHTTPUrl Identifier
97 HiLink debcontrolComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +000098 HiLink debcontrolElse Special
99
100 delcommand HiLink
101endif
102
103let b:current_syntax = "debcontrol"
104
105" vim: ts=8 sw=2