blob: e886f0147c5e227bea6a502bc6f455298574eefd [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 Moolenaar5c736222010-01-06 20:54:52 +01006" Last Change: 2009 July 14
Bram Moolenaar8c8de832008-06-24 22:58:06 +00007" 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 Moolenaar5c736222010-01-06 20:54:52 +010031syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|amd64\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000032syn 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 Moolenaar5c736222010-01-06 20:54:52 +010034syn 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|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 +000035syn match debcontrolPackageType contained "u\?deb"
Bram Moolenaar071d4272004-06-13 20:20:40 +000036syn match debcontrolVariable contained "\${.\{-}}"
Bram Moolenaarc236c162008-07-13 17:41:49 +000037syn match debcontrolDmUpload contained "\cyes"
Bram Moolenaar071d4272004-06-13 20:20:40 +000038
Bram Moolenaar8c8de832008-06-24 22:58:06 +000039" A URL (using the domain name definitions from RFC 1034 and 1738), right now
40" only enforce protocol and some sanity on the server/path part;
41syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
42syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
43syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
Bram Moolenaar5c736222010-01-06 20:54:52 +010044syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000045
Bram Moolenaar071d4272004-06-13 20:20:40 +000046" An email address
47syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
48syn match debcontrolEmail "<.\{-}>"
49
Bram Moolenaar8c8de832008-06-24 22:58:06 +000050" #-Comments
51syn match debcontrolComment "^#.*$"
52
53syn case ignore
54
Bram Moolenaar071d4272004-06-13 20:20:40 +000055" List of all legal keys
Bram Moolenaar5c736222010-01-06 20:54:52 +010056syn 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\|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 +000057
58" Fields for which we do strict syntax checking
59syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
60syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
61syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
62syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
Bram Moolenaar8c8de832008-06-24 22:58:06 +000063syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
64syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
Bram Moolenaar5c736222010-01-06 20:54:52 +010065syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
66syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
67syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
68syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
69syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71" Catch-all for the other legal fields
Bram Moolenaar5c736222010-01-06 20:54:52 +010072syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
73syn 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,debcontrolComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75" Associate our matches and regions with pretty colours
76if version >= 508 || !exists("did_debcontrol_syn_inits")
77 if version < 508
78 let did_debcontrol_syn_inits = 1
79 command -nargs=+ HiLink hi link <args>
80 else
81 command -nargs=+ HiLink hi def link <args>
82 endif
83
84 HiLink debcontrolKey Keyword
85 HiLink debcontrolField Normal
86 HiLink debcontrolStrictField Error
87 HiLink debcontrolMultiField Normal
88 HiLink debcontrolArchitecture Normal
89 HiLink debcontrolName Normal
90 HiLink debcontrolPriority Normal
91 HiLink debcontrolSection Normal
Bram Moolenaar8c8de832008-06-24 22:58:06 +000092 HiLink debcontrolPackageType Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +000093 HiLink debcontrolVariable Identifier
94 HiLink debcontrolEmail Identifier
Bram Moolenaar8c8de832008-06-24 22:58:06 +000095 HiLink debcontrolVcsSvn Identifier
96 HiLink debcontrolVcsCvs Identifier
97 HiLink debcontrolVcsGit Identifier
98 HiLink debcontrolHTTPUrl Identifier
Bram Moolenaarc236c162008-07-13 17:41:49 +000099 HiLink debcontrolDmUpload Identifier
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000100 HiLink debcontrolComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101 HiLink debcontrolElse Special
102
103 delcommand HiLink
104endif
105
106let b:current_syntax = "debcontrol"
107
108" vim: ts=8 sw=2