1" Vim syntax file 2" Language: Debian control files 3" Maintainer: Debian Vim Maintainers <[email protected]> 4" Former Maintainers: Gerfried Fuchs <[email protected]> 5" Wichert Akkerman <[email protected]> 6" Last Change: 2009 July 14 7" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian 8 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! 12 13" Standard syntax initialization 14if version < 600 15 syntax clear 16elseif exists("b:current_syntax") 17 finish 18endif 19 20" Should match case except for the keys of each field 21syn case match 22 23" 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 31syn 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\)\)" 32syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+" 33syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)" 34syn 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)" 35syn match debcontrolPackageType contained "u\?deb" 36syn match debcontrolVariable contained "\${.\{-}}" 37syn match debcontrolDmUpload contained "\cyes" 38 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; 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:]]+)?$" 44syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" 45 46" An email address 47syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" 48syn match debcontrolEmail "<.\{-}>" 49 50" #-Comments 51syn match debcontrolComment "^#.*$" 52 53syn case ignore 54 55" List of all legal keys 56syn 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\): *" 57 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 63syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline 64syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend 65syn 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 70 71" Catch-all for the other legal fields 72syn 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 74 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 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 102 103 delcommand HiLink 104endif 105 106let b:current_syntax = "debcontrol" 107 108" vim: ts=8 sw=2 109