Merge branch 'vim' into feat/code-check
[vim_extended.git] / runtime / syntax / debcontrol.vim
blobd56a342328c447e645083207e3f7ca7ae51ccbb6
1 " Vim syntax file
2 " Language:     Debian control files
3 " 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>
6 " 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
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!
13 " Standard syntax initialization
14 if version < 600
15   syntax clear
16 elseif exists("b:current_syntax")
17   finish
18 endif
20 " Should match case except for the keys of each field
21 syn case match
23 " Everything that is not explicitly matched by the rules below
24 syn match debcontrolElse "^.*$"
26 " Common seperators
27 syn match debControlComma ", *"
28 syn match debControlSpace " "
30 " Define some common expressions we can use later on
31 syn 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\)\)"
32 syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
33 syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
34 syn 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\)"
35 syn match debcontrolPackageType contained "u\?deb"
36 syn match debcontrolVariable contained "\${.\{-}}"
37 syn match debcontrolDmUpload contained "\cyes"
39 " 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;
41 syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
42 syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
43 syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
44 syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
46 " An email address
47 syn match       debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
48 syn match       debcontrolEmail "<.\{-}>"
50 " #-Comments
51 syn match debcontrolComment "^#.*$"
53 syn case ignore
55 " List of all legal keys
56 syn 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\|\%(XS-\)\=DM-Upload-Allowed\): *"
58 " Fields for which we do strict syntax checking
59 syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
60 syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
61 syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
62 syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
63 syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
64 syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
65 syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
66 syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
67 syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
68 syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
69 syn region debcontrolStrictField start="^\%(XS-\)\?DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
71 " Catch-all for the other legal fields
72 syn 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
73 syn 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
75 " Associate our matches and regions with pretty colours
76 if 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
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
92   HiLink debcontrolPackageType  Normal
93   HiLink debcontrolVariable     Identifier
94   HiLink debcontrolEmail        Identifier
95   HiLink debcontrolVcsSvn       Identifier
96   HiLink debcontrolVcsCvs       Identifier
97   HiLink debcontrolVcsGit       Identifier
98   HiLink debcontrolHTTPUrl      Identifier
99   HiLink debcontrolDmUpload     Identifier
100   HiLink debcontrolComment      Comment
101   HiLink debcontrolElse         Special
103   delcommand HiLink
104 endif
106 let b:current_syntax = "debcontrol"
108 " vim: ts=8 sw=2