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: 2009 Aug 17 7" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debcontrol.vim 8 9" Standard syntax initialization 10if version < 600 11 syntax clear 12elseif exists("b:current_syntax") 13 finish 14endif 15 16" Should match case except for the keys of each field 17syn case match 18 19" Everything that is not explicitly matched by the rules below 20syn match debcontrolElse "^.*$" 21 22" Common seperators 23syn match debControlComma ", *" 24syn match debControlSpace " " 25 26" Define some common expressions we can use later on 27syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)" 28syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+" 29syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)" 30syn 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)" 31syn match debcontrolPackageType contained "u\?deb" 32syn match debcontrolVariable contained "\${.\{-}}" 33syn match debcontrolDmUpload contained "\cyes" 34 35" A URL (using the domain name definitions from RFC 1034 and 1738), right now 36" only enforce protocol and some sanity on the server/path part; 37syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" 38syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" 39syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$" 40syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" 41 42" An email address 43syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" 44syn match debcontrolEmail "<.\{-}>" 45 46" #-Comments 47syn match debcontrolComment "^#.*$" 48 49syn case ignore 50 51" List of all legal keys 52syn 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\|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\): *" 53 54" Fields for which we do strict syntax checking 55syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline 56syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline 57syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline 58syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline 59syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline 60syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend 61syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend 62syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend 63syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend 64syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend 65syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline 66 67" Catch-all for the other legal fields 68syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline 69syn 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 70 71" Associate our matches and regions with pretty colours 72if version >= 508 || !exists("did_debcontrol_syn_inits") 73 if version < 508 74 let did_debcontrol_syn_inits = 1 75 command -nargs=+ HiLink hi link <args> 76 else 77 command -nargs=+ HiLink hi def link <args> 78 endif 79 80 HiLink debcontrolKey Keyword 81 HiLink debcontrolField Normal 82 HiLink debcontrolStrictField Error 83 HiLink debcontrolMultiField Normal 84 HiLink debcontrolArchitecture Normal 85 HiLink debcontrolName Normal 86 HiLink debcontrolPriority Normal 87 HiLink debcontrolSection Normal 88 HiLink debcontrolPackageType Normal 89 HiLink debcontrolVariable Identifier 90 HiLink debcontrolEmail Identifier 91 HiLink debcontrolVcsSvn Identifier 92 HiLink debcontrolVcsCvs Identifier 93 HiLink debcontrolVcsGit Identifier 94 HiLink debcontrolHTTPUrl Identifier 95 HiLink debcontrolDmUpload Identifier 96 HiLink debcontrolComment Comment 97 HiLink debcontrolElse Special 98 99 delcommand HiLink 100endif 101 102let b:current_syntax = "debcontrol" 103 104" vim: ts=8 sw=2 105