blob: 4d354c4bd2ef16a45767e346189ad60beeae3fa3 [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 Moolenaar256972a2015-12-29 19:10:25 +01006" Last Change: 2015 Oct 24
7" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debcontrol.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9" Standard syntax initialization
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020010if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000011 finish
12endif
13
Bram Moolenaar07d87792014-07-19 14:04:47 +020014let s:cpo_save = &cpo
15set cpo&vim
16
Bram Moolenaar8c8de832008-06-24 22:58:06 +000017" Should match case except for the keys of each field
18syn case match
19
Bram Moolenaar071d4272004-06-13 20:20:40 +000020" Everything that is not explicitly matched by the rules below
21syn match debcontrolElse "^.*$"
22
23" Common seperators
24syn match debControlComma ", *"
25syn match debControlSpace " "
26
Bram Moolenaar07d87792014-07-19 14:04:47 +020027let s:kernels = '\%(linux\|hurd\|kfreebsd\|knetbsd\|kopensolaris\|netbsd\)'
28let s:archs = '\%(alpha\|amd64\|armeb\|armel\|armhf\|arm64\|avr32\|hppa\|i386'
29 \ . '\|ia64\|lpia\|m32r\|m68k\|mipsel\|mips\|powerpcspe\|powerpc\|ppc64el'
30 \ . '\|ppc64\|s390x\|s390\|sh3eb\|sh3\|sh4eb\|sh4\|sh\|sparc64\|sparc\|x32\)'
31let s:pairs = 'hurd-i386\|kfreebsd-i386\|kfreebsd-amd64\|knetbsd-i386\|kopensolaris-i386\|netbsd-alpha\|netbsd-i386'
32
Bram Moolenaar071d4272004-06-13 20:20:40 +000033" Define some common expressions we can use later on
Bram Moolenaar07d87792014-07-19 14:04:47 +020034exe 'syn match debcontrolArchitecture contained "\%(all\|'. s:kernels .'-any\|\%(any-\)\='. s:archs .'\|'. s:pairs .'\|any\)"'
35
36unlet s:kernels s:archs s:pairs
37
Bram Moolenaar251e1912011-06-19 05:09:16 +020038syn match debcontrolMultiArch contained "\%(no\|foreign\|allowed\|same\)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000039syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +000040syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
Bram Moolenaar1aeaf8c2012-05-18 13:46:39 +020041syn 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|education|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|introspection|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 +000042syn match debcontrolPackageType contained "u\?deb"
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn match debcontrolVariable contained "\${.\{-}}"
Bram Moolenaarc236c162008-07-13 17:41:49 +000044syn match debcontrolDmUpload contained "\cyes"
Bram Moolenaar071d4272004-06-13 20:20:40 +000045
Bram Moolenaar8c8de832008-06-24 22:58:06 +000046" A URL (using the domain name definitions from RFC 1034 and 1738), right now
47" only enforce protocol and some sanity on the server/path part;
48syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
49syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
50syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
Bram Moolenaarf2571c62015-06-09 19:44:55 +020051syn match debcontrolVcsGit contained "\v%(git|https?)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?%(\s+-b\s+[^ ~^:?*[\\]+)?$"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000052
Bram Moolenaar071d4272004-06-13 20:20:40 +000053" An email address
54syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
55syn match debcontrolEmail "<.\{-}>"
56
Bram Moolenaar8c8de832008-06-24 22:58:06 +000057" #-Comments
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020058syn match debcontrolComment "^#.*$" contains=@Spell
Bram Moolenaar8c8de832008-06-24 22:58:06 +000059
60syn case ignore
61
Bram Moolenaar071d4272004-06-13 20:20:40 +000062" List of all legal keys
Bram Moolenaarac7bd632013-03-19 11:35:58 +010063syn 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\|Multi-Arch\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|\%(XC-\)\=Package-Type\): *"
64
65syn match debcontrolDeprecatedKey contained "^\%(\%(XS-\)\=DM-Upload-Allowed\): *"
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67" Fields for which we do strict syntax checking
68syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
Bram Moolenaar251e1912011-06-19 05:09:16 +020069syn region debcontrolStrictField start="^Multi-Arch" end="$" contains=debcontrolKey,debcontrolMultiArch oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000070syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
71syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
72syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
Bram Moolenaar251e1912011-06-19 05:09:16 +020073syn region debcontrolStrictField start="^\%(XC-\)\=Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
Bram Moolenaar8c8de832008-06-24 22:58:06 +000074syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
Bram Moolenaar5c736222010-01-06 20:54:52 +010075syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
76syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
77syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
78syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
Bram Moolenaarac7bd632013-03-19 11:35:58 +010079syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolDeprecatedKey,debcontrolDmUpload oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000080
81" Catch-all for the other legal fields
Bram Moolenaar5c736222010-01-06 20:54:52 +010082syn 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 +020083syn 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 Moolenaar3a0d8092012-10-21 03:02:54 +020084syn region debcontrolMultiFieldSpell start="^\%(Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000085
86" Associate our matches and regions with pretty colours
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020087command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020089HiLink debcontrolKey Keyword
90HiLink debcontrolField Normal
91HiLink debcontrolStrictField Error
92HiLink debcontrolDeprecatedKey Error
93HiLink debcontrolMultiField Normal
94HiLink debcontrolArchitecture Normal
95HiLink debcontrolMultiArch Normal
96HiLink debcontrolName Normal
97HiLink debcontrolPriority Normal
98HiLink debcontrolSection Normal
99HiLink debcontrolPackageType Normal
100HiLink debcontrolVariable Identifier
101HiLink debcontrolEmail Identifier
102HiLink debcontrolVcsSvn Identifier
103HiLink debcontrolVcsCvs Identifier
104HiLink debcontrolVcsGit Identifier
105HiLink debcontrolHTTPUrl Identifier
106HiLink debcontrolDmUpload Identifier
107HiLink debcontrolComment Comment
108HiLink debcontrolElse Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200110delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111
112let b:current_syntax = "debcontrol"
113
Bram Moolenaar07d87792014-07-19 14:04:47 +0200114let &cpo = s:cpo_save
115unlet s:cpo_save
116
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117" vim: ts=8 sw=2