Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 2 | " Language: Debian control files |
Bram Moolenaar | d68071d | 2006-05-02 22:08:30 +0000 | [diff] [blame] | 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> |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 6 | " Last Change: 2017 Nov 04 |
Bram Moolenaar | 256972a | 2015-12-29 19:10:25 +0100 | [diff] [blame] | 7 | " URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debcontrol.vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 8 | |
| 9 | " Standard syntax initialization |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 10 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 11 | finish |
| 12 | endif |
| 13 | |
Bram Moolenaar | 07d8779 | 2014-07-19 14:04:47 +0200 | [diff] [blame] | 14 | let s:cpo_save = &cpo |
| 15 | set cpo&vim |
| 16 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 17 | " Should match case except for the keys of each field |
| 18 | syn case match |
| 19 | |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 20 | syn iskeyword @,48-57,-,/ |
| 21 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | " Everything that is not explicitly matched by the rules below |
| 23 | syn match debcontrolElse "^.*$" |
| 24 | |
| 25 | " Common seperators |
Bram Moolenaar | c572da5 | 2017-08-27 16:52:01 +0200 | [diff] [blame] | 26 | syn match debControlComma ",[ \t]*" |
| 27 | syn match debControlSpace "[ \t]" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 28 | |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 29 | let s:kernels = ['linux', 'hurd', 'kfreebsd', 'knetbsd', 'kopensolaris', 'netbsd'] |
| 30 | let s:archs = [ |
| 31 | \ 'alpha', 'amd64', 'armeb', 'armel', 'armhf', 'arm64', 'avr32', 'hppa' |
| 32 | \, 'i386', 'ia64', 'lpia', 'm32r', 'm68k', 'mipsel', 'mips64el', 'mips' |
| 33 | \, 'powerpcspe', 'powerpc', 'ppc64el', 'ppc64', 's390x', 's390', 'sh3eb' |
| 34 | \, 'sh3', 'sh4eb', 'sh4', 'sh', 'sparc64', 'sparc', 'x32' |
| 35 | \ ] |
| 36 | let s:pairs = [ |
| 37 | \ 'hurd-i386', 'kfreebsd-i386', 'kfreebsd-amd64', 'knetbsd-i386' |
| 38 | \, 'kopensolaris-i386', 'netbsd-alpha', 'netbsd-i386' |
| 39 | \ ] |
Bram Moolenaar | 07d8779 | 2014-07-19 14:04:47 +0200 | [diff] [blame] | 40 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 41 | " Define some common expressions we can use later on |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 42 | syn keyword debcontrolArchitecture contained all any |
| 43 | exe 'syn keyword debcontrolArchitecture contained '. join(map(s:kernels, {k,v -> v .'-any'})) |
| 44 | exe 'syn keyword debcontrolArchitecture contained '. join(map(s:archs, {k,v -> 'any-'.v})) |
| 45 | exe 'syn keyword debcontrolArchitecture contained '. join(s:archs) |
| 46 | exe 'syn keyword debcontrolArchitecture contained '. join(s:pairs) |
Bram Moolenaar | 07d8779 | 2014-07-19 14:04:47 +0200 | [diff] [blame] | 47 | |
| 48 | unlet s:kernels s:archs s:pairs |
| 49 | |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 50 | let s:sections = [ |
| 51 | \ 'admin', 'cli-mono', 'comm', 'database', 'debian-installer', 'debug' |
| 52 | \, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded' |
| 53 | \, 'fonts', 'games', 'gnome', 'gnustep', 'gnu-r', 'golang', 'graphics' |
| 54 | \, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection' |
| 55 | \, 'java', 'javascript', 'kde', 'kernel', 'libs', 'libdevel', 'lisp' |
| 56 | \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net' |
| 57 | \, 'news', 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python' |
| 58 | \, 'ruby', 'rust', 'science', 'shells', 'sound', 'text', 'tex' |
| 59 | \, 'utils', 'vcs', 'video', 'web', 'x11', 'xfce', 'zope' |
| 60 | \ ] |
| 61 | |
| 62 | syn keyword debcontrolMultiArch contained no foreign allowed same |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 63 | syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+" |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 64 | syn keyword debcontrolPriority contained extra important optional required standard |
| 65 | exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\%('.join(s:sections, '\|').'\)"' |
| 66 | syn keyword debcontrolPackageType contained udeb deb |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 67 | syn match debcontrolVariable contained "\${.\{-}}" |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 68 | syn keyword debcontrolDmUpload contained yes |
| 69 | syn keyword debcontrolYesNo contained yes no |
| 70 | syn match debcontrolR3 contained "\<\%(no\|binary-targets\|[[:graph:]]\+/[[:graph:]]\+\%( \+[[:graph:]]\+/[[:graph:]]\+\)*\)\>" |
| 71 | |
| 72 | unlet s:sections |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 73 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 74 | " A URL (using the domain name definitions from RFC 1034 and 1738), right now |
| 75 | " only enforce protocol and some sanity on the server/path part; |
| 76 | syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" |
| 77 | syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" |
| 78 | syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$" |
Bram Moolenaar | f2571c6 | 2015-06-09 19:44:55 +0200 | [diff] [blame] | 79 | syn match debcontrolVcsGit contained "\v%(git|https?)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?%(\s+-b\s+[^ ~^:?*[\\]+)?$" |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 80 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 81 | " An email address |
| 82 | syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" |
| 83 | syn match debcontrolEmail "<.\{-}>" |
| 84 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 85 | " #-Comments |
Bram Moolenaar | 3a0d809 | 2012-10-21 03:02:54 +0200 | [diff] [blame] | 86 | syn match debcontrolComment "^#.*$" contains=@Spell |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 87 | |
| 88 | syn case ignore |
| 89 | |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 90 | " List of all legal keys, in order, from deb-src-control(5) |
| 91 | " Source fields |
| 92 | syn match debcontrolKey contained "^\%(Source\|Maintainer\|Uploaders\|Standards-Version\|Description\|Homepage\|Bugs\|Rules-Requires-Root\): *" |
| 93 | syn match debcontrolKey contained "^\%(XS-\)\=Vcs-\%(Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\|Browser\): *" |
| 94 | syn match debcontrolKey contained "^\%(Origin\|Section\|Priority\): *" |
| 95 | syn match debcontrolKey contained "^Build-\%(Depends\|Conflicts\)\%(-Arch\|-Indep\)\=: *" |
| 96 | |
| 97 | " Binary fields |
| 98 | syn match debcontrolKey contained "^\%(Package\%(-Type\)\=\|Architecture\|Build-Profiles\): *" |
| 99 | syn match debcontrolKey contained "^\%(\%(Build-\)\=Essential\|Multi-Arch\|Tag\): *" |
| 100 | syn match debcontrolKey contained "^\%(\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\): *" |
| 101 | syn match debcontrolKey contained "^\%(Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): *" |
| 102 | |
| 103 | " User-defined fields |
| 104 | syn match debcontrolKey contained "^X[SBC]\{0,3\}\%(-Private\)\=-[-a-zA-Z0-9]\+: *" |
Bram Moolenaar | ac7bd63 | 2013-03-19 11:35:58 +0100 | [diff] [blame] | 105 | |
| 106 | syn match debcontrolDeprecatedKey contained "^\%(\%(XS-\)\=DM-Upload-Allowed\): *" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 107 | |
| 108 | " Fields for which we do strict syntax checking |
| 109 | syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 110 | syn region debcontrolStrictField start="^Multi-Arch" end="$" contains=debcontrolKey,debcontrolMultiArch oneline |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 111 | syn region debcontrolStrictField start="^\%(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 112 | syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline |
| 113 | syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 114 | syn region debcontrolStrictField start="^\%(XC-\)\=Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 115 | syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 116 | syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend |
| 117 | syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend |
| 118 | syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend |
| 119 | syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend |
Bram Moolenaar | ac7bd63 | 2013-03-19 11:35:58 +0100 | [diff] [blame] | 120 | syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolDeprecatedKey,debcontrolDmUpload oneline |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 121 | syn region debcontrolStrictField start="^Rules-Requires-Root" end="$" contains=debcontrolKey,debcontrolR3 oneline |
| 122 | syn region debcontrolStrictField start="^\%(Build-\)\=Essential" end="$" contains=debcontrolKey,debcontrolYesNo oneline |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 123 | |
| 124 | " Catch-all for the other legal fields |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 125 | syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline |
| 126 | syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment |
Bram Moolenaar | c572da5 | 2017-08-27 16:52:01 +0200 | [diff] [blame] | 127 | syn region debcontrolMultiFieldSpell start="^\%(Description\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 128 | |
| 129 | " Associate our matches and regions with pretty colours |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 130 | hi def link debcontrolKey Keyword |
| 131 | hi def link debcontrolField Normal |
| 132 | hi def link debcontrolStrictField Error |
| 133 | hi def link debcontrolDeprecatedKey Error |
| 134 | hi def link debcontrolMultiField Normal |
| 135 | hi def link debcontrolArchitecture Normal |
| 136 | hi def link debcontrolMultiArch Normal |
| 137 | hi def link debcontrolName Normal |
| 138 | hi def link debcontrolPriority Normal |
| 139 | hi def link debcontrolSection Normal |
| 140 | hi def link debcontrolPackageType Normal |
| 141 | hi def link debcontrolVariable Identifier |
| 142 | hi def link debcontrolEmail Identifier |
| 143 | hi def link debcontrolVcsSvn Identifier |
| 144 | hi def link debcontrolVcsCvs Identifier |
| 145 | hi def link debcontrolVcsGit Identifier |
| 146 | hi def link debcontrolHTTPUrl Identifier |
| 147 | hi def link debcontrolDmUpload Identifier |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 148 | hi def link debcontrolYesNo Identifier |
| 149 | hi def link debcontrolR3 Identifier |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 150 | hi def link debcontrolComment Comment |
| 151 | hi def link debcontrolElse Special |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 152 | |
| 153 | let b:current_syntax = "debcontrol" |
| 154 | |
Bram Moolenaar | 07d8779 | 2014-07-19 14:04:47 +0200 | [diff] [blame] | 155 | let &cpo = s:cpo_save |
| 156 | unlet s:cpo_save |
| 157 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 158 | " vim: ts=8 sw=2 |